Charging a Saved Card
Process a one-click payment using a vaulted card token
2 min readUpdated Mar 24, 2026
Once a card is tokenized, you can charge it by providing the cardToken instead of raw card details. The charge flow is identical to a standard card payment — same 3DS handling, same webhook, same response structure.
#How It Works
Supply the cardToken (from the tokenization endpoint) along with the usual payment context: amount, currency, billing details, and redirect URLs. Exirom resolves the token, applies the same risk checks, and routes the charge through the card network.
- Billing details from the original tokenization are reused automatically. Pass
billingDetailsonly to override them for a specific charge. - 3DS may still be triggered by the issuer, even for a saved card. If required, the response returns
transactionStatus: "CUSTOMER_VERIFICATION"with achallengeUrl— handle it exactly as you would for a first-time payment. - The final result arrives via webhook to your
callbackUrl.
#Key Differences from Standard Payment
| Standard Card Payment | Charge with Token | |
|---|---|---|
| Card input | Raw card details | cardToken |
| PCI scope | Full PAN in transit | Token only |
| 3DS | May be required | May still be required |
| Webhooks | Same | Same |
| Response | Same | Same |
#Error Cases
| Scenario | Result |
|---|---|
| Token not found or expired | 400 — charge is declined |
| Billing details missing from both request and token | 400 |
| Issuer declines | transactionStatus: "FAILED" with declineCode |
#Related
- API Reference: POST /api/v1/payments/card/charge — Full endpoint spec, parameters, Try It
- Tokenization Flow — End-to-end flow diagram
- Tokenizing a Card — How to obtain a card token
- Recurring Payments — Schedule automatic charges
Was this helpful?