Attributes
The three Fluid custom elements share most of their attributes. In the table below, Widget refers to <fluid-widget>, QD is <fluid-quick-deposit>, and Virtual is <fluid-virtual>.
Full attribute reference
Section titled “Full attribute reference”| Attribute | Widget | QD | Virtual | Description |
|---|---|---|---|---|
operator-id |
Required | Required | Required | Unique operator identifier, provided by Fluid Payments. Must match the value in your Operator Config |
session-id |
Required | Required | Required | Current session ID of the authenticated user. See Session Handling |
user-id |
Required | Required | Required | Identifier of the authenticated user |
locale |
Required | Required | Required | IETF BCP 47 locale tag (e.g. en-NZ, es-MX). en and ar are valid shorthands. POSIX-style underscores normalised automatically (en_GB → en-GB). If the value is still invalid, the widget falls back to en and emits invalid-init-attributes |
currency |
Required | Required | Required | ISO 4217 currency code. For Virtual, this is the FIAT currency |
country |
Required | Required | Required | ISO 3166-1 Alpha-3 country code |
user-data |
Optional | Optional | Optional | FluidUserData object, stringified as JSON. See User Data |
transaction |
Optional | — | Optional | deposit | withdrawal | quick-deposit |
lock-transaction-type |
Optional | — | Optional | When true, user cannot switch transaction type |
open |
Optional | — | Optional | true / false — controls wallet visibility. Not used by QD, which is always visible while mounted |
balance |
Optional | — | Optional | Widget: current balance. Virtual: VirtualBalance object as JSON (see Virtual Balance) |
withdrawable-balance |
Optional | — | — | Amount available to withdraw |
bonuses |
Optional | Optional | — | Stringified bonus data array. See Bonus Data. On QD this is a performance optimisation: the bonuses are processed once and become available in the main widget |
transaction-limits |
Optional | Optional | Optional | Stringified JSON object capping how much the player can deposit or withdraw, each with an optional message of your own. See Transaction Limits |
success-cta-link |
Optional | — | Optional | Link recorded with the Play now click on the success screen, for tracking only. The widget never navigates to it: Play now emits success-cta-click (fluid-info, with no link) followed by a close command, and your page decides what happens next |
z-index |
Optional | Optional | Optional | Stacking order for overlay display |
turned-over-percentage |
Optional | — | Optional | Turned over percentage; hidden if not provided |
transaction-attributes |
Optional | Optional | Optional | Stringified JSON of key-value pairs sent to the payment provider |
deposit-amount |
Optional | Optional | Optional | Pre-filled deposit amount (overrides configured defaults) |
allow-decimal-amounts |
Optional | Optional | Optional | Defaults to "true". Set to "false" to restrict deposit amounts to whole numbers: a decimal separator can’t be typed or pasted (entering 10.50 leaves 10) and mobile devices show a digits-only keypad. Applies to deposit entry only — deposit, quick deposit, the payment details screen and the Sweepstakes custom amount. Withdrawal and redemption amounts always accept decimals. Amounts you supply are never rounded, so make sure deposit-amount, your suggested amounts and your pack prices are whole numbers too |
prefilled-bonus-code |
Optional | — | — | Pre-fills the manual bonus code input. Requires Manual Bonus Codes to be enabled. The code isn’t validated automatically: the user must click Apply to trigger verification through the Bridge API |
two-factor-auth-enabled |
Optional | — | — | "true" adds a 2FA step to the withdrawal flow. Per-player flag: set it according to whether the player has 2FA enabled. See Two-Factor Authentication |
overscroll-behavior-auto |
Optional | — | — | Sets overscroll-behavior: auto for the inline cashier |
withdrawal-warning |
Optional | — | — | Stringified JSON object with custom withdrawal warning. See Withdrawal Warning |
virtual-currencies |
— | — | Required | VirtualCurrencies object as JSON. See Virtual Currencies |
packs |
— | — | Optional | Stringified packs data. See Packs |
Numeric values
Section titled “Numeric values”balance, withdrawable-balance, turned-over-percentage and deposit-amount (and the deprecated deposit-limit) are read with the decimal separator of the locale set on the element, so you can write an amount the way your players read it.
On <fluid-virtual> this covers deposit-amount and turned-over-percentage only. Its balance is a stringified VirtualBalance object rather than a single amount (see Data Objects), and withdrawable-balance is not supported there. The amounts inside that object are JSON numbers, so they take a dot and no grouping whatever the locale: "primaryBalance": 10.5, never "primaryBalance": "10,5".
- A dot is accepted on every locale.
deposit-amount="10.50"is 10.5 whatever the locale. - A comma is accepted where the locale uses one as its decimal separator. With
locale="fr",deposit-amount="10,50"is also 10.5. - Digit grouping is accepted when it can only be read one way.
"1,500"is 1500 onlocale="en","1 500,25"is 1500.25 onlocale="fr", and"1,500.25"is 1500.25 on either. A space is only read where it stands between digit groups, so"1 2"is rejected rather than treated as 12. - Grouping must match the shape your locale writes. Most locales group in threes. The Indian locales (
en-IN,hi-IN) group in lakhs, so"12,34,567"is 1234567 there, and"1,234,567"is rejected onen-IN, just as"12,34,567"is rejected onen. This applies to spaces as well as commas. - Locales that write their own digits are read in those digits too. With
locale="ar-EG",deposit-amount="١٠٫٥٠"is 10.5. ASCII digits keep working on every locale. - Values are never rounded. What you send is what the widget uses.
Check what your locale actually uses before assuming it takes a comma, because the language is not a reliable guide. ar (default Arabic), es-MX and th are dot-decimal, while en-ZA and ar-MA are comma-decimal, and de-CH groups with an apostrophe (both ' and ’ are read, so "1'500" and "1’500" are both 1500). A locale reads the digits of the numbering system the browser resolves for it and no other: Arabic-Indic on ar-EG and ar-SA, Perso-Arabic on fa, Bengali on bn, Devanagari on mr and ne. ar, ar-MA, hi, hi-IN, ta, pa and ml all resolve to Latin digits, so on those you must write ASCII digits, and on ar, a dot.
Browsers disagree on some locales. Safari resolves bn, mr and ne to Latin digits where Chrome and Firefox use their own scripts, so a value in Bengali or Devanagari digits is read on Chrome and Firefox and rejected on Safari. fr-CH is comma-decimal on Chrome and Firefox but dot-decimal on Safari, so deposit-amount="10,50" on locale="fr-CH" is 10.5 on Chrome and rejected on Safari. If your players span browsers, ASCII digits with a dot are the one notation every browser accepts.
One separator between digits is always a decimal
Section titled “One separator between digits is always a decimal”This is the one case where a value meant as thousands becomes a fraction instead:
- On every locale,
"1.500"is 1.5, including the locales that group with dots. A single dot with no comma is always a decimal point. Several dots are read as grouping, so"1.500.000"is 1500000. - On a comma-decimal locale,
"1,500"is 1.5 and"100,000"is 100. If you write English thousands grouping onlocale="fr"orlocale="de", you will pre-fill or cap at a thousandth of what you meant, and nofluid-erroris emitted, because the value reads perfectly well as a decimal.
Write whole thousands unseparated (1500, 100000), or group them the way the locale does ("1.500,00" on de, "1 500,00" on fr, "1,00,000" on en-IN).
A value that can’t be read as one unambiguous number is ignored, and the widget keeps its previous value or its configured default. This includes "10,50" on locale="en", where the comma is neither a valid decimal separator nor a valid grouping. The widget emits a fluid-error event with message invalid-init-attributes and a reason naming the attribute and the value, so a rejected amount reaches your error handling. An attribute that is empty or absent is not a rejection: it is treated as unset, restores the default behaviour, and emits nothing.
Reactive (observed) attributes
Section titled “Reactive (observed) attributes”Always observed while open
Section titled “Always observed while open”| Attribute | Behaviour |
|---|---|
open |
Triggers wallet visibility |
balance / withdrawable-balance |
Updates balance information in real time |
session-id |
Ensures a consistently valid user session |
withdrawal-warning |
Updates the warning on the withdrawal screen (Widget only) |
packs |
Updates packs data including selected pack (Virtual only) |
allow-decimal-amounts |
Switches the deposit amount fields between decimal and whole-number entry. It only affects what the player types next, so changing it mid-flow is safe |
Observed only while wallet is closed
Section titled “Observed only while wallet is closed”| Attribute | Behaviour |
|---|---|
transaction |
Updates the transaction type |
lock-transaction-type |
Locks the transaction type |
bonuses |
Updates bonus information (Widget only; QD reads once at mount) |
transaction-limits |
Updates the deposit and withdrawal limits and their messages |
deposit-limit |
Updates the deposit limit (deprecated) |
deposit-amount |
Updates pre-filled amount; unset to restore defaults |
user-data |
Updates data for AI-suggested Deposit Amounts and KYC |
success-cta-link |
Sets the post-success CTA link |
turned-over-percentage |
Sets the turned over percentage |
transaction-attributes |
Updates transaction attributes |
prefilled-bonus-code |
Pre-fills the bonus code input (Widget only) |
two-factor-auth-enabled |
Toggles the 2FA step (Widget only) |
Quick Deposit special behaviour
Section titled “Quick Deposit special behaviour”The inline <fluid-quick-deposit> is always visible while mounted. It reacts to changes of transaction-limits (and the deprecated deposit-limit), user-data, transaction-attributes and allow-decimal-amounts. Every other attribute, including session-id and bonuses, is read once at mount and requires a re-mount to change.
Deprecated attributes
Section titled “Deprecated attributes”These still work and are not scheduled for removal. Do not use them in a new integration.
| Attribute | Replaced by | Notes |
|---|---|---|
deposit-limit |
transaction-limits |
A responsible gaming deposit limit, as a plain number. It has no message of its own and does not cover withdrawals. It follows the same numeric rules as the attributes above, and is read while the wallet is closed. If you send both, the lower of the two applies. |