The two layers
Funding is configured in two independent layers. Getting them confused is the most common source of unexpected declines.1
Primary funding source — where money is pulled from
primaryFundingSource is either FLUZ_BALANCE (money already held on the account) or BANK_ACCOUNT (pulled from a linked external bank via ACH). Defaults to FLUZ_BALANCE.2
Balance composition — which internal balances can contribute
When the primary source is
FLUZ_BALANCE, the card can draw from a specific spend account, the prepayment balance, and the rewards balance. userCashBalanceId, usePrepaymentBalance, and useRewardsBalance control which.The four options
1. A specific spend account
Spend accounts are named sub-ledgers on the account — “Team Travel”, “Marketing”, “Payouts”. Nominate one withuserCashBalanceId and the card draws from that balance rather than the account’s general cash balance.
2. An external bank account
SetprimaryFundingSource: BANK_ACCOUNT and supply bankAccountId. Fluz pulls from the linked account after the card is spent, so you do not have to pre-fund a balance.
bankAccountId is required when primaryFundingSource is BANK_ACCOUNT. Omitting it fails the request with ARG-0001.3. Prepayment balance
The prepayment balance is a non-withdrawable balance usable toward gift card and virtual card purchases. It contributes automatically unless you switch it off.This balance goes by several names. It appears as
usePrepaymentBalance on card input, as giftCardCashBalance in the getWallet response, and as “prepaid (gift card) balance” in prose. They are the same pool of money.4. Rewards balance
Accumulated cashback and bonus rewards. Like the prepayment balance, it contributes by default.Reference table
Isolating a card to one spend account
The complete configuration for a card that can only ever spend from one nominated budget:userCashBalanceId, usePrepaymentBalance: false, and useRewardsBalance: false are required for true isolation. Setting the spend account alone is not enough.
Reading what is available
Before issuing, check that the source you are about to nominate actually has funds.getWallet returns every balance and linked funding source in one call.
availableCashBalance rather than totalCashBalance — the total can include funds that are pending and not yet spendable.
Changing funding after issuance
editVirtualCard accepts primaryFundingSource and bankAccountId, so you can move a card between Fluz balance and an external bank, or swap which bank account it pulls from.
Account-level defaults are a different thing
Fluz also has an account-wide primary and backup payment method, set withsetPrimaryFundingSource and setBackupFundingSource. These are not the same as per-card funding:
The backup payment method exists to cover the case where the primary source cannot be charged. See Primary & Backup Funding.
Create Spend Accounts
Add a new spend account to fund cards from.
Link Bank Accounts via Plaid
Connect an external bank account for
BANK_ACCOUNT funding.Check Account Balance
Read every balance and linked source before issuing.
Open Loop Card Funding
How funding differs on hosted open-loop cards.