Documentation Index
Fetch the complete documentation index at: https://docs.crossmint.com/llms.txt
Use this file to discover all available pages before exploring further.
Introduction
A saved card is not automatically usable by agents. Before agents can use it to pay, the card must be verified for agentic payments. Verification is a one-time step per card that produces two things:- Account verification via a one-time code sent to the user’s email.
- A passkey bound to the user’s device, so future payment authorizations only need a single passkey tap.
Prerequisites
- A saved card. See Save a Card if you have not done this yet.
- The
paymentMethodIdof the saved card. - An authenticated user with a JWT.
Eligible CardsYou can currently use card permissions with Mastercard and eligible U.S.-issued Visa credit and debit cards.Not supported for Visa: non-US cards, business cards, prepaid cards, Chase cards, Fidelity cards.For AMEX and Ramp cards, contact us.
Steps
Check the card's current verification status
Before starting verification, check whether the card is already verified. The API returns a
If the status is
status that is always one of the following:| Status | Meaning |
|---|---|
not_started | Verification has not been started yet. |
pending | Verification was started; the user still needs to complete the challenge (email code and/or passkey). |
active | Verification finished; the card is ready for agentic card permissions. |
active, verification is complete and you can skip directly to Give Card Permission. If it is pending, reuse the existing verification response in the next step rather than creating a new one.Start verification
If the card is Example response:
not_started, send a POST request with the user’s email to begin verification. The response includes an enrollmentId and a verificationConfig that the verification component uses to run the passkey ceremony.Render the verification component
Pass the pending verification response to the When
PaymentMethodAgenticEnrollmentVerification component. It runs the full device-binding ceremony inside your UI — the user receives an email code, enters it, and then creates a passkey bound to the current device.onVerificationComplete fires, the server has flipped the verification to active. The card is now ready for agentic card permissions.Understanding the Verification Flow
ThePaymentMethodAgenticEnrollmentVerification component runs the following sequence in order:
- The server sends a one-time code to the user’s email.
- The user enters the code in the component’s UI.
- The component prompts the browser to create a passkey bound to this device.
- The server marks the verification
active.
Common Gotchas
The email step only happens during verification
The email step only happens during verification
Once a card is verified, all subsequent payment authorizations use the passkey alone. If you see the email code prompt on a non-verification flow, the device is not yet bound — complete verification first.
A passkey is bound to a single device and browser profile
A passkey is bound to a single device and browser profile
If the user clears browser state, switches browsers, or moves to a new device, they may be asked to re-verify for future actions on that new device.
Verification is per payment method, not per agent
Verification is per payment method, not per agent
Once a card is verified, any agent on the account can be given card permissions from it.

