Subscribe to updates on the Fluz Status Page for incidents and proactive change notifications. You can also subscribe to this changelog via RSS.
- Transaction webhooks now carry
isReversal. It istruefor an authorization reversal,falsefor a transaction we classified as something else, and absent when we could not classify it. Present onTRANSACTION_CREATE,TRANSACTION_UPDATEandTRANSACTION_DECLINE. Coverage is still partial: today only card verification voids are flaggedtrue, and returns carry no value at all, so the field cannot yet tell a released hold apart from a merchant refund. Treat an absent value as unknown, never asfalse. Additive and backward-compatible. See Webhooks.
createTransferandrequestAccountTransferaccept optionaluseRewardsBalanceon their input types. Whentrue, the send is funded from the sender’s rewards balance in addition to the resolved spend account (cash first, rewards for the remainder). Omit or passfalsefor the existing cash-only behavior. There is no prepayment field on these mutations. Additive and backward-compatible. See Fund account transfers with rewards.
getUserPurchasesnow acceptspurchaseDisplayIdon itsfilterargument, so you can fetch a single order by the reference ID returned at purchase time instead of paginating your history to find it. It is the same value exposed asreferenceIdongetTransactions, and the purchase record carries the full details —seatRewardValuefor cashback, the payment breakdown, and the linkedgiftCard— in one call. The filter applies on top ofscopeand only narrows it.scopevalues combine with AND, so passing bothTOKEN_USERandTOKEN_ACCOUNTreturns only purchases the token’s user made on the token’s account — an order placed by another user is returned whenscopeisTOKEN_ACCOUNTon its own. Additive and backward-compatible. SeeUserPurchaseFilterInput.
getVirtualCardBalancenow returnsstatus,lockedandauthorizationSettingalongside the spend figures, so you can read card state for many cards in one call instead of callingrevealVirtualCardByVirtualCardIdper card and hitting the issuer’s rate limit. A locked card still reportsstatus: ACTIVE, so uselocked, which covers locks set by the cardholder, by Fluz once the lock date passes, and by Fluz support.authorizationSettingis the same object reveal returns. Additive and backward-compatible. See Get Virtual Card Balance.
- Documented how debit cards are used for money movement. Deposits from a debit card into
CASH_BALANCEmay be processed as account funding transactions (AFT), which carry their own fee rate — readdepositFeefrom the response rather than computing it. Push-to-card withdrawals (method: BANK_CARD) are delivered as original credit transactions (OCT). Card eligibility for either is not available in advance and is independent per direction — a card a user can deposit from is not necessarily a card you can send a withdrawal to. See Deposit From External Accounts and Withdraw to External Account. isExpeditedonWithdrawCashBalanceInputnow controls push-to-card delivery speed:truedelivers to the card immediately,falseor omitted settles on the standard schedule. A standard push-to-card withdrawal can still fail after it is submitted and be refunded to the source balance — so aPENDINGwithdrawal is not yet final.- Documented
getWithdrawFeeEstimateon Withdraw to External Account for previewingfee,netAmount,feePercent,feeMaxCap, andsettlementDelayDaysbefore submitting a withdrawal. - Corrections to Withdraw to External Account: the required scope is
MAKE_WITHDRAWAL(notMANAGE_PAYMENT), error codes are the realWDR-*/ARG-*/HN-*/BC-*/G-*codes, andFLUZPAY— though present on theWithdrawMethodsenum — is not a usable withdrawal method:withdrawCashBalancerejects it withWDR-0004andgetWithdrawFeeEstimatewithARG-0001.
- Digital wallet signal on transactions. The
TRANSACTION_CREATEandTRANSACTION_UPDATEwebhook events and thegetTransactionsAPI now includedigitalWalletProvider(APPLE_PAY,GOOGLE_PAY, or absent) so you can tell when a card transaction was made through a mobile wallet, plusdigitalWalletToken(the network token id). UsedigitalWalletProvideras the wallet signal —digitalWalletTokenis also set for non-wallet network tokens, so its presence alone does not mean a wallet was used. Additive and backward-compatible. See Webhooks.
- Open Loop Cards: recipients are no longer prompted to create a PIN during the initial activation flow, and the card is no longer auto-revealed on claim. Revealing a card now prompts the recipient to enter their PIN, or create one if they haven’t set one yet. See Recipient Experience.
- Update GenerateVCShareLinksInput for Open Loop Cards. See Open Loop Cards.
- Updates to Primary & backup funding page.
- New API endpoint exposing account-related declined transactions. See Get Declined Transactions.
GiftCard.purchaseId(UUID) — the purchase that created the gift card; the same ID returned bypurchaseGiftCardandgetUserPurchases. Returnsnullif no associated purchase.GiftCard.purchaseDisplayId(String) — the short, human-readable Fluz transaction ID (e.g.1047283) that support references in manual reviews and exports. Returnsnullif no associated purchase.GiftCard.purchaseValue(Float) — the face value (denomination) the gift card was purchased at, in the card’s currency.GiftCard.currentValue(Float) — the remaining balance on the gift card; equalspurchaseValuefor single-use cards.GiftCard.currency(String) — the ISO currency code of the gift card’s value (e.g.USD).
getGiftCards (and anywhere GiftCard is exposed), enabling order/value reconciliation without calling revealGiftCardByGiftCardId per card. Additive and backward-compatible.- Added Plaid Link support.
- Updated Overview page with
llms.txtinformation. - Updated header with AI link to
llms.txt.
- New
getCardProvisioningUrlquery — mints a short, single-use URL that, when opened on a mobile device, launches Fluz and adds a virtual card to Apple Pay (iOS) or Google Pay (Android). Surface it as a QR code, SMS, email, or in-app button. Each URL expires ~5 minutes after creation. Requires theCREATE_VIRTUALCARDscope. - New input
GetCardProvisioningUrlInput { offerId, platform }. - New enum
ProvisioningPlatform(IOS|ANDROID|OTHER) — controls the desktop / unknown-device fallback only; iOS and Android opens are auto-routed. - New return type
CardProvisioningUrl { url, expiresAt }.
- Added samples to Generate Share Links.
- Added
addVirtualCardAddressmutation to save billing addresses for virtual card issuance. - Updated
createVirtualCardmutation to support creating cards on behalf of authorized users. - Added full flow using
registerUser,addAuthorizedUser,addVirtualCardAddress, andcreateVirtualCard. - Retry pending issuer approvals with
VC-0020and returnedaddressId.
redeemFluzGiftCard— Redeem a Fluz Gift Card using a code. CreditsgiftCardCashBalance. RequiresMAKE_DEPOSIT. See Redeem a Fluz Gift Card.unlockVirtualCard— Unlock a previously locked virtual card to restore transaction capability. RequiresEDIT_VIRTUALCARD. See Unlock a Virtual Card.
Transaction-related webhooks
- Added description for
TRANSACTION_CREATE,TRANSACTION_UPDATE&TRANSACTION_DECLINEwebhooks. - Included new fields after webhook enrichment (MCC-related,
virtualCardId, etc.).
- Added
mcc,merchantCountryCode,originalCurrencyCode,originalCurrencyAmount, andcurrencyConversionRatetoVirtualCardTransaction. Now returned bygetVirtualCardTransactions. - Made
virtualCardIdsoptional ongetVirtualCardTransactions— omit to query transactions across all cards on the authenticated account. AddeddateRangeStartanddateRangeEndfilters. Defaultlimitof 100 whenvirtualCardIdsis omitted;limitis capped at 500.transactionAmountis now nullable for rows without a settled amount (e.g., AVS-only decline records). - Added
usePrepaymentBalanceanduseRewardsBalancetoCreateVirtualCardInput. Now accepted bycreateVirtualCard. Both default totrue(existing behavior preserved). Set both tofalseto restrict a card to drawing only from the specifieduserCashBalanceId, excluding prepaid (gift card) and rewards funds.
- Added
shortDescription(Merchant) andtermsAndConditions(Offer). Now returned bygetMerchantsandgetOfferQuote. - Added
deliveryFormat(GiftCard). Now returned bygetGiftCards— usedeliveryFormatfor purchased cards.
- New
setVirtualCardPINmutation, allowing a user to set their PIN on eligible virtual cards. See Set a Virtual Card PIN.
- New
getUserCashBalances&getUserCashBalanceByIdqueries. These queries allow a user to retrieve a list of their spend accounts and a specific spend account created on their account.
Share Virtual Cards API
- New “Share Virtual Cards” capability under Manage Virtual Cards. Contact sales for access.
- Added
CREATE_SHARE_LINKscope to the application scopes page.
Business registration API
- New query
getBusinessCategories: [BusinessCategory]for retrieving business categories, with response typesBusinessCategoryandBusinessSubCategory. - New mutation
registerBusiness(input: RegisterBusinessInput!): RegisterBusinessResultfor programmatic business registration. - New input types:
RegisterBusinessInput,BusinessLegalAddressInput,BusinessOwnerInput,OwnerAddressInput. - New enums:
BusinessStructure(LLC,CORPORATION,PARTNERSHIP,SOLE_PROPRIETORSHIP,COOP) andBusinessAccountUsage. - New response types:
RegisterBusinessResult { accountId, kybStatus, success, error }andRegisterBusinessError { message, code }. - Both operations require authentication with the
REGISTER_BUSINESSOAuth scope.
Updates to
getMerchants query- The
getMerchantsquery now returns all available offers properly. - The
getMerchantsquery can now return anexclusiveRateIdfield (within theoffersobject). This value can be used inpurchaseGiftCardto specify the exclusive rate offer you want to purchase with.
Withdrawals & Spend Accounts APIs
- Added
withdrawCashBalancemutation withMAKE_WITHDRAWALscope requirement. - Added
WithdrawMethodsenum supportingPAYPAL,BANK_ACH,BANK_CARD, andVENMOmethods. - Added
WithdrawSourceenum supportingCASH_BALANCEandREWARDS_BALANCEsources. - Added
WithdrawCashBalanceInputwith idempotency support, plusWithdrawandWithdrawCashBalanceResponsetypes with full withdrawal record details including fees, status, and timestamps. - Added
transferUserCashBalancemutation withMAKE_INTERNAL_TRANSFERscope requirement, plusTransferInternalBalanceInputandTransferInternalBalanceResponsetypes. - Added
userCashBalanceIdtoEditVirtualCardInputto enable changing the funding source to a specified spend account viaeditVirtualCard. - Added
userCashBalanceIdstoTransactionFilterInputfor filtering transactions by spend accounts viagetTransactions, anduserCashBalanceIdtogetGiftCardsfor filtering gift cards by spend account. - Added
updateUserCashBalanceandcloseUserCashBalancemutations withMANAGE_PAYMENTscope requirement, plus supporting input and response types (UpdateUserCashBalanceInput,CloseUserCashBalanceInput,CloseUserCashBalanceResponse,ClosedUserCashBalance,CloseUserCashBalanceResponseVirtualCard). - Added application action logging for audit trail.
- Added new
userCashBalancesfield to theUserBalancestype in thegetWalletquery. Returns detailed information about individual user cash balance accounts with pagination viapaginate(limit/offset), ordered by creation date (most recent first). IncludesuserCashBalanceId,totalCashBalance,availableCashBalance,lifetimeCashBalance,nickname,status, andcreatedAt— enabling tracking of multiple cash balance accounts per user with custom nicknames and status monitoring.
- A new field
userCashBalanceIdis added toDepositCashBalanceInputto specify the cash balance (spend account) to deposit the funds into.
- New mutations for managing saved bank cards:
updateBankCardNickname,updateBankCardPreferredMerchantCategoryCode, anddeleteBankCard, with corresponding input types. nicknamefield added to theBankCardtype.- Optional fields added to
AddBankCardInput:nicknameandpreferredMerchantCategoryCode(MCC, normalized to 4 digits).
getVirtualCardBalance: new query retrieving balance information for a list of virtual cards, includingspentAmount,remainingBalance,spendLimit, andspendLimitDuration.getVirtualCardTransactions: new query retrieving transactions for a list of virtual cards, with filters such astransactionTypes.
- The
getUserPurchasesquery now includes the ability to filter the purchases returned in the response via a new optionalUserPurchaseFilterInputvariable. Filter purchases made by the user, the account, or both.
- The
revealVirtualCardByVirtualCardIdmutation response now includes a newauthorizationSettingfield. - Bulk Virtual Card API: new API for creating and managing a large number of virtual cards asynchronously.
createVirtualCardBulkOrdermutation: submit a bulk order and receive a uniqueorderId.getVirtualCardBulkOrderStatusquery: poll to track order status and retrieve card details upon completion.- The bulk card creation process is asynchronous — check order status to retrieve card details.
- New query
getVirtualCardOffers: comprehensive list of all active virtual card offers available for creation, includingofferId(essential for card creation),programName,bankName,rewardValue, and detailed program limits (daily, weekly, monthly spend limits). - Updated mutation
createVirtualCard: programmatically issue virtual cards by providing anofferId(fromgetVirtualCardOffers), aspendLimit, and customizable attributes likecardNicknameandspendLimitDuration. - New mutation
editVirtualCard: update key parameters of an existing virtual card —spendLimit,spendLimitDuration,lockDate,lockCardNextUse, andcardNickname. - New mutation
lockVirtualCard: immediately lock a virtual card, preventing any further transactions.
- The
Offertype in thegetMerchantsresponse now includes adeliveryFormatfield specifying how the offer is fulfilled:URL,CODES,PIN_AS_CODE, orPIN_WITH_URL. - The
getMerchantsquery has been enhanced with a newfilterByargument, allowing you to filter results to only include merchants with offers matching a specificdeliveryFormat.
- Enhanced the
getMerchantsquery with a newofferTypesinput argument, allowing filtering bygiftCardOffers,cardLinkedOffers, or both. By default, ifofferTypesis not provided, the query returns only gift card offers.
- Introduced a new query
getReferralUrlwhich returns a referral string based on merchant input, with a newMerchantInputtype. - Introduced an automatic repurchase attempt on the
purchaseGiftCardmutation. If a gift card purchase using a bank card, bank account, or PayPal fails, the system automatically attempts to repurchase using the Fluz balance. - Introduced the
defaultToBalancefield onPurchaseGiftCardInputto set the Fluz balance as the fallback payment method if the primary payment method fails. Defaults totrue.
- Introduced a new access scope,
CREATE_VIRTUALCARD, to create virtual cards. - Introduced a new function,
createVirtualCard, to create virtual cards with specific parameters. - Added new query,
getBINs, to retrieve BINs associated with virtual cards. - Introduced a
merchantCategoryCodeinput for cash balance deposits, allowing for enhanced categorization of transactions. - Added a new query,
getMccList, to retrieve a list of merchant category codes. - Enhanced scope validation for the
getApplicationScopesquery and improved GraphQL type definition management.
- Enhanced the handling of stock information for merchant offers: the
Offerobject’sstockInfofield now returns eitherStockInfoFixedTypeorStockInfoVariableTypedepending on whether the offer is fixed or variable. - Enhanced error handling with more intuitive error message responses — improved responses for
purchaseGiftCardno-offer errors and mismatched account and payment methods.
v0.0.21
- Introduced an
idempotencyKeyparameter fordepositCashBalanceandpurchaseGiftCardsto prevent duplicate requests. - Added
purchaseGiftCardInputtypes to streamline parameter handling for transactions. - Introduced a new field
purchaseDisplayIdon theUserPurchasetype, providing a display ID for purchases. - Fixed the
Offerobject’sofferingMerchantIdfield to returnoffering_merchant_idinstead ofoffer_id.
- Added
accountIdrequirement togenerateUserAccessToken. - Implemented a new query,
getAccountsByUserId, to fetch accounts based onuserId. - Added a new
AccountTypeenum to categorize accounts asCONSUMERorBUSINESS, plus newAccount,Business, andSeatobjects.
- Fixed
depositCashBalanceplatform channel input so the deposit transaction log source is logged asAPI.