- Developer creates a virtual card for a user via
createVirtualCardand keeps the returnedvirtualCardId. - Developer calls
getCardProvisioningUrlwith thatvirtualCardId. - 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).
- User opens the URL within `expiresAt`. The App Clip / app handles the wallet provisioning.
virtualCardId.
offerId remains supported for the single-card case. It resolves only
while the account holds at most one active card on that offer; beyond that
it cannot identify a card and the query fails rather than picking one.
Each call returns a fresh 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). Treat the URL as a bearer secret: claiming it does not
immediately invalidate it, so it stays redeemable for a short grace window
after first use. Deliver it over a private channel and don’t log or cache it.
Requires the `CREATE_VIRTUALCARD` scope.
Possible errors:
Arguments.INVALID— id is not a valid UUID, or both/neither selector was supplied.VirtualCard.CARD_NOT_FOUND— no such card on the caller’s account.VirtualCard.CARD_NOT_ACTIVE— the card exists but is not ACTIVE.VirtualCard.AMBIGUOUS_CARD_SELECTION— offerId matches several active cards; pass virtualCardId.VirtualCard.OFFER_NOT_FOUND— the card’s offer doesn’t exist or is inactive.VirtualCard.OFFER_NOT_ACCESSIBLE— account lacks campaign access for the card’s offer.- `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.
Arguments
GetCardProvisioningUrlInput!
required
No description provided in the schema yet.
Returns
CardProvisioningUrl!