Skip to main content
Prerequisites: a Bearer access token carrying the CREATE_SHARE_LINK scope. 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 and verifies their phone number with a one-time code — no app download, no password. The card limit is drawn against your spend account at claim time, not when the link is generated. The card isn’t auto-revealed on claim; revealing it prompts the recipient to enter their PIN, or create one if they haven’t set one yet. See Recipient Experience for the full walkthrough.
The recipient becomes an authorized user of that virtual card object only — they do not gain access to your account, balances, or any other cards. Send cards flow diagram

Availability & scope

The card share-link object type is VIRTUAL_CARD and the card type is SINGLE_LOAD.
Gift cards: Despite the “virtual cards and gift cards” framing of the broader initiative, there is no hosted gift-card claim flow today. Gift-card balances appear in this area only as a potential funding source for hosted virtual cards (planned, not yet enabled). Document and build against virtual cards only.

Operation reference

There are three public operations, all gated by the CREATE_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 — without it, every operation returns “Missing permissions! Please contact your sales rep to get access to generate VC share links.” Creates quantity share requests and returns one hosted link per request.

Input fields

Funding source. userCashBalanceId (a spend account belonging to your, the sender’s, account) is the primary and required funding source. Optionally set usePrepaymentBalance and/or useRewardsBalance to true to let Fluz fall back to your prepayment or rewards balance if the spend account doesn’t cover the full amount at claim time. Bank accounts and bank cards are not supported as funding sources.

Recipient identification & delivery (shareMethod)

EXISTING_USER and REGISTER_USER both create the virtual card as part of the generateVCShareLinks call, rather than deferring card creation to claim time. See Register & Send for the full EXISTING_USER flow, including how to register a recipient first with registerUser.

Validation rules

  • cardLimit must be a whole number and at least the program minimum.
  • offerId must be a valid UUID v4 for an active offer whose merchant is shareable.
  • quantity must be a whole number.
  • The recipient field matching shareMethod (recipientListEmail, recipientListPhone, recipientUserIds, or recipientRegistrations) must have length equal to quantity. Mismatches return a clear error and create no records.
  • recipientUserIds and recipientRegistrations are mutually exclusive with each other and with the delivery-list fields.
  • Each ID in recipientUserIds must be a valid, existing Fluz user.
  • userCashBalanceId is required and must be a valid UUID v4 owned by the sender’s account. usePrepaymentBalance and useRewardsBalance are optional fallback sources and may both be enabled alongside it.
  • Invalid card types or malformed inputs return clear errors and create no records.

Examples

For EXISTING_USER, register the recipient first (or use an existing user’s ID directly) — see Register & Send for the full walkthrough, including the registerUser call and response handling.

Response

shareLinks is an array of hosted URLs, one per quantity, each of the form https://fluz.app/virtual-prepaid-card/{share_request_id}.
The response returns only the URLs. To retrieve the batch ID and display IDs for the links you just created (needed for listing and deactivation), use getVCShareLinks filtered by status.
Lists previously generated share links so you can inspect status, recipients, expiration, and the issued card.

Input fields

Recommended flow. On the first call, filter by shareObjectStatuses only. The response gives you shareRequestBatchId and shareRequestDisplayId values; use those to filter precisely on subsequent calls (and to deactivate).

Examples

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 to EXPIRED; an unclaimed link can no longer be claimed.

Input fields

Get the batch IDs from getVCShareLinks.
Returns a human-readable confirmation string, e.g. "3 share requests successfully deactivated!".
If a recipient has already claimed a link (status ISSUED/USED), deactivating the link does not claw back the issued card. To stop spend on an already-issued card, use the relevant card lifecycle/freeze controls.

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).
Set the window with 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) — see Recipient Experience.

Status & error reference

Share object statuses

For the states a recipient sees when a link is expired, revoked, or already claimed, see 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.
  • userCashBalanceId is 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). Bank account and bank card funding are not yet enabled; do not send them. usePrepaymentBalance and useRewardsBalance are the only supported additional funding sources today.
  • Gift-card hosted links are not supported. This API is for virtual cards only.

Next steps

Recipient experience

What your recipients see when they open a hosted link, and the rules that govern their card.

Register & Send

Use EXISTING_USER to register a recipient and create their card up front, instead of at claim.

Create a bulk order

Issue many cards at once for programmatic distribution.