Overview
A withdrawal allows users to transfer funds from their Fluz balance to an external account. Users can withdraw from two types of balances:- Cash Balance - Funds deposited by the user into their Fluz account
- Rewards Balance - Cashback earnings accumulated from purchases
Withdraw Cash Balance
Sample Request
You can initiate a withdrawal with thewithdrawCashBalance mutation. This mutation transfers funds from a user’s Fluz balance to their specified external account.
WithdrawCashBalanceInput input type. Any field marked with an exclamation mark (!) in the schema is mandatory and must be included in the request.
Input Fields
WithdrawCashBalanceInput
Sample Response
The response from thewithdrawCashBalance mutation includes the withdrawal record(s) and the user’s updated balances.
Response Fields
Withdraw Object
Required Scope
This mutation requires theMAKE_WITHDRAWAL scope to be granted to the access token. The getWithdrawFeeEstimate query requires the same scope.
Withdrawal Methods by Account Type
Preview Fees Before Withdrawing
Use thegetWithdrawFeeEstimate query to quote a withdrawal before you submit it. Pass the same amount, method, source, and isExpedited you intend to send, and the response tells you exactly what the user will receive.
The fee is deducted from the withdrawal rather than added on top: the balance is debited the full
amount, and the destination receives netAmount. Passing FLUZPAY as method returns ARG-0001.
Push-to-Card Withdrawals (OCT)
ABANK_CARD withdrawal is a push-to-card payout, delivered as an original credit transaction (OCT) — the card-network transaction type for crediting funds to a card. It requires bankCardId, and the linked debit card must support OCT. An ineligible card cannot be delivered to by any other means, so the user has to pick a different withdrawal method.
Delivery speed is controlled by isExpedited:
Card Eligibility
Most Visa and Mastercard debit cards can receive a push-to-card payout. Eligibility is evaluated when the withdrawal is submitted, and is a property of the card itself rather than something you configure.Eligibility is not available in advance, and does not carry over from deposits.There is no query that reports whether a card supports OCT — it surfaces on the first withdrawal to that card. Withdrawal and deposit eligibility are also independent, so a card a user successfully deposited from is not necessarily a card you can send a withdrawal to. See Deposit From External Accounts.
BANK_CARD withdrawals are not restricted by cardType: a PREPAID card is not ruled out up front, and is accepted or declined on eligibility like any other card. Because BANK_CARD has no alternative delivery path, always keep BANK_ACH, PAYPAL, or VENMO reachable in your UI so an ineligible card does not dead-end the flow. Push-to-card failures surface as HN-0124 or BC-0004 — see Error Handling below.
Error Handling
Common error scenarios:ARG-* errors are raised before any funds move.
Example Error Response
Multiple Withdrawals
In some cases, a single withdrawal request may result in multiple withdrawal records. This can happen when the withdrawal amount is split across multiple seats (network positions). The response will contain all withdrawal records created.Best Practices
- Always use unique idempotency keys - Generate a new UUID for each withdrawal request to prevent duplicate transactions.
- Check balances before withdrawing - Use the
getWalletquery to verify the user has sufficient funds before initiating a withdrawal. - Handle pending states - Withdrawals may take time to process. The
statusfield will indicate the current state of the withdrawal. - Store transaction references - Save the
withdrawIdandtransactionLogIdfor reconciliation and support purposes.
Changelog
v1.3.0
Expedited withdrawals and fee previews- Reintroduced
isExpeditedonWithdrawCashBalanceInput. It controls delivery speed forBANK_CARDwithdrawals:truepushes to the card during the request,falseor omitted settles on the standard schedule. This supersedes the v1.2.0 note below, which said the field had been removed. - Added the
getWithdrawFeeEstimatequery and theGetWithdrawFeeEstimateInput/WithdrawFeeEstimatetypes, so fees, net amount, and settlement timing can be previewed before submitting. - Documented push-to-card withdrawals as original credit transactions (OCT), including card eligibility and the fact that a standard withdrawal can still fail after it is submitted and be refunded to the source balance.
- Corrected the required scope for
withdrawCashBalancetoMAKE_WITHDRAWAL. TheMANAGE_PAYMENTscope previously listed on this page was wrong;seat_idon theWithdrawtype is also optional (UUID), not required as v1.2.0 stated. - Documented that
FLUZPAY, though present on theWithdrawMethodsenum, is not a usable withdrawal method:withdrawCashBalancerejects it withWDR-0004(invalid withdrawal method), andgetWithdrawFeeEstimaterejects it withARG-0001.
v1.2.0 - 2024-11-20
Schema refinements and field cleanup- Removed
isExpeditedfield fromWithdrawCashBalanceInput- expedited ACH is no longer configurable via the API - Changed
seat_idfield onWithdrawtype from optional to required (UUID→UUID!) - Updated description for
BANK_CARDmethod to remove “expedited” reference
v1.1.0 - 2024-10-15
Added Venmo support and rewards balance withdrawals- Added
VENMOtoWithdrawMethodsenum - Added
venmoAccountIdfield toWithdrawCashBalanceInput - Added
REWARDS_BALANCEtoWithdrawSourceenum to support withdrawing cashback earnings - Added
seat_idfield toWithdrawresponse type for multi-seat account tracking
v1.0.0 - 2024-09-01
Initial release- Introduced
withdrawCashBalancemutation withMAKE_WITHDRAWALscope requirement - Added
WithdrawMethodsenum withPAYPAL,BANK_ACH, andBANK_CARDmethods - Added
WithdrawSourceenum withCASH_BALANCEsource - Added
WithdrawCashBalanceInputinput type with idempotency support - Added
Withdrawresponse type with full withdrawal record details - Added
WithdrawCashBalanceResponsetype returning withdrawal records and updated balances - Integrated with payout-service for withdrawal processing
- Added application action logging for audit trail