> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fluz.app/llms.txt
> Use this file to discover all available pages before exploring further.

# getCardProvisioningUrl

> Returns a short URL that, when opened on the end-user's mobile device, launches the Fluz App Clip (iOS) or Fluz app (Android) and adds the offer's virtual card to Apple Pay / Google Pay.

Returns a short URL that, when opened on the end-user's mobile device,
launches the Fluz App Clip (iOS) or Fluz app (Android) and adds the
offer's virtual card to Apple Pay / Google Pay.

Typical flow:

1. Developer creates a virtual-card offer for a user (existing API).
2. Developer calls \`getCardProvisioningUrl\` with that offer id.
3. Developer surfaces the returned URL to the user (QR code, SMS, email,
   in-app button — anything that ends up on the user's mobile device).
4. User opens the URL within \`expiresAt\`. The App Clip / app handles
   the wallet provisioning.

Each call returns a fresh, single-use URL. The URL is opaque — it carries
no credentials in plaintext; user identity is exchanged server-side via a
short-lived lookup record (5-minute TTL).

Requires the \`CREATE\_VIRTUALCARD\` scope.

Possible errors:

* \`Arguments.INVALID\` — offerId is not a valid UUID.
* \`VirtualCard.OFFER\_NOT\_FOUND\` — offer doesn't exist or is inactive.
* \`VirtualCard.OFFER\_NOT\_ACCESSIBLE\` — account lacks campaign access for this offer.
* \`VirtualCard.OFFER\_NOT\_AVAILABLE\` — offer was redeemed into a card that is no longer active.
* \`VirtualCard.OFFER\_NOT\_TOKENIZATION\_ELIGIBLE\` — offer's card program does not support wallet provisioning.
* \`Auth.USER\_REVOKED\_DEVELOPER\_ACCESS\` — user has revoked OAuth access for this developer application.
* \`Auth.INVALID\_SCOPE\` — caller's token does not have CREATE\_VIRTUALCARD.
* \`Generic.EXTERNAL\_SERVICE\_ERROR\` — transient downstream failure; retry is safe.

```graphql theme={null}
query {
  getCardProvisioningUrl(
    input: GetCardProvisioningUrlInput!
  ): CardProvisioningUrl!
}
```

## Arguments

<ParamField body="input" type="GetCardProvisioningUrlInput!" required>
  *No description provided in the schema yet.*
</ParamField>

## Returns

[`CardProvisioningUrl!`](/api-reference/types/card-provisioning-url)
