Prerequisites: a Bearer access token carrying the
CREATE_SHARE_LINK scope, and an account enabled for Send Cards (the send_virtual_cards_enabled campaign flag). Basic auth is rejected. Contact your sales rep to enable access. See Authentication.What “hosted” / “open-loop” means. A hosted link points to a Fluz-hosted activation page. Open-loop means the resulting virtual card is a network card (Visa/Mastercard-style) that can be spent at many merchants, subject to your program’s rules — not a single-brand closed-loop gift card.
How it works
1
You generate links
Call
generateVCShareLinks with the offer, card limit, quantity, funding source, and a delivery method. Each link represents one card with its own limit, funded from the spend account you specify.2
Fluz creates a share request per link
Each link maps to one share request (
PENDING) and one hosted URL.3
The link is delivered
With
GENERATE_URL you get the URLs back to distribute yourself. With EMAIL or PHONE_NUMBER, Fluz delivers a link to each recipient for you.4
The recipient activates and claims the card
The recipient opens the link, verifies their phone number with a one-time code, and sets a card PIN — no app download, no password. The card limit is drawn against your spend account at claim time, not when the link is generated. They can then view card details, spend online, and add the card to Apple Pay or Google Pay in one tap.
Availability & scope
The card share-link object type is
VIRTUAL_CARD and the card type is SINGLE_LOAD.
Operation reference
There are three public operations, all gated by theCREATE_SHARE_LINK scope:
All Send Cards operations are on the Fluz GraphQL API at
POST https://<your-fluz-api-host>/api/v1/graphql with an Authorization: Bearer <access_token> header. The token must carry the CREATE_SHARE_LINK scope, and your account must have Send Cards enabled — without it, every operation returns “Missing permissions! Please contact your sales rep to get access to generate VC share links.”
generateVCShareLinks
Createsquantity share requests and returns one hosted link per request.
Input fields
Funding source. Today, the only supported funding source is a spend account (
userCashBalanceId), and it must belong to your (the sender’s) account. Additional funding sources (bank account, bank card, prepayment/rewards balance) are not yet available.Delivery methods (shareMethod)
Validation rules
cardLimitmust be a whole number and at least the program minimum.offerIdmust be a valid UUID v4 for an active offer whose merchant is shareable.quantitymust be a whole number.- When delivering by
EMAILorPHONE_NUMBER, the matching recipient list length must equalquantity. Mismatches return a clear error and create no records. - Only one funding source may be supplied.
userCashBalanceIdmust be a valid UUID v4 owned by the sender’s account. - Invalid card types or malformed inputs return clear errors and create no records.
Examples
Response
shareLinks is an array of hosted URLs, one per quantity, each of the form https://fluz.app/virtual-prepaid-card/{share_request_id}.
getVCShareLinks
Lists previously generated share links so you can inspect status, recipients, expiration, and the issued card.Input fields
Response fields (GeneratedShareLink)
Examples
deactivateVCShareLinks
Deactivates (expires) links you generated — for example, if a batch was sent in error or you need to revoke unclaimed links. Deactivating a link sets it toEXPIRED; an unclaimed link can no longer be claimed.
Input fields
Get the batch IDs from
getVCShareLinks.
"3 share requests successfully deactivated!".
The recipient experience
When a recipient opens a hosted link (https://fluz.app/virtual-prepaid-card/{share_request_id}):
1
Landing & sign-in
The recipient sees the activation page branded with the sender’s business. They sign in through the Fluz auth portal (new recipients onboard here).
2
Two-factor authentication
On initial load, existing users are taken to the 2FA screen. 2FA is required before the card can be viewed or claimed.
3
Billing address (if needed)
If the recipient has no billing address on file, they’re prompted to add one. Billing address is required for online purchases.
4
PIN (if not yet issued)
Before the card is issued, the recipient sets a PIN.
5
Card issued & claimed
A single-load virtual card is created and assigned to the recipient, funded from the sender’s account, with a lock date equal to the link’s expiration date.
6
Use the card
Once claimed, the recipient can see card details, transactions, and (where supported) add the card to a mobile wallet.
Already claimed? If the same user opens a link they already claimed, they see their card details. If a different user opens a link that someone else already claimed, they’re shown an access-denied state after 2FA.
Expiration & freeze
The link’s expiration date does double duty:- Link expiration — after this date, an unclaimed link can no longer be claimed.
- Card freeze / lock date — for an issued card, this is the lock date (end of that day). After it, the card is frozen and cannot be spent.
- Card expiry is aligned to the end of the month of the freeze date (e.g., a freeze date of 6/15/2026 yields a card expiry of 6/30/2026).
daysUntilExpiration at generation time. If omitted, the program default (30 days) is used. This date is shown to the recipient (typically as a “Valid until” date).
Program rules to communicate to recipients
These are program-level rules for hosted (open-loop) virtual cards. Confirm the exact values for your program with your Fluz representative — several are partner-negotiated.
Customer support for recipients: 1-888-360-6660 · humans@fluz.app
The full partner-facing reference (terminology, recipient walkthrough with screenshots, funding instructions, restricted categories, and support) lives in the Partner Guide — Hosted URL Virtual Cards. Ask your Fluz contact for the latest copy for your program.
Status & error reference
Share object statuses
Recipient-facing link errors
Common API errors
Notes & limitations
- Returned URL is the hosted destination, not a short link. Internally, links are also wrapped by a short-link provider, but the API returns the canonical hosted URL (
/virtual-prepaid-card/{share_request_id}). Distribute the URL exactly as returned. userCashBalanceIdis effectively required even though the schema marks it optional.- Hidden/internal fields are not part of this API. Object type and card type are fixed (
VIRTUAL_CARD/SINGLE_LOAD) and other funding-source fields are not yet enabled; do not send them. - Gift-card hosted links are not supported. This API is for virtual cards only.
Next steps
Generate share links
The focused reference for
generateVCShareLinks, if that’s all you need.Create a bulk order
Issue many cards at once for programmatic distribution.