Skip to main content
Card on File lets you securely save customer card details and charge them later — for recurring, on-demand, or subscription payments — without the customer re-entering their card.
Card on File requires card payments to be activated on your merchant account. Contact support if not enabled.

Save During Checkout

For most merchants, saving cards during the checkout flow is the simplest and most effective approach.
1

Create a Customer (Optional but Recommended)

Use the Create Customer API to create a customer before checkout. This enables better tracking and customer management.
Response includes id (customer UUID) to use as atoaCustomerId in the next step.
2

Process Payment with savePaymentMethod

Call Process Payment with savePaymentMethod=true and atoaCustomerId from step 1:
atoaCustomerId is the Atoa customer UUID returned from step 1 (Create Customer API). This is different from customerId, which is your own merchant reference for the customer.
The card is automatically saved after successful 3DS authentication.
3

Retrieve Saved Cards

Use List Payment Methods to see all cards saved for a customer:
4

Process Future Payments

Option A: Faster Checkout (One-Click)Pass atoaCustomerId in process-payment to automatically show saved cards at checkout:
Customer sees their saved cards and can complete payment with one click.Option B: Charge Saved CardUse Charge Saved Card to charge a saved card without customer interaction:

Save a Card Without a Payment

If you want to store a card before any money moves — for example when onboarding a customer, setting up a subscription, or collecting card details over a link — use the standalone Authorize Card API instead of process-payment.
1

Create a Customer

Use the Create Customer API and keep the returned id — this is the customerId used in the next step.
2

Request a Card Authorization Link

Call Authorize Card. Atoa returns a secure hosted page URL. No amount is involved and no money moves.
Response includes a hostedPageUrl. Present it in your app or WebView, or set sendLinkToCustomer=true to have Atoa deliver it by email (or SMS if the customer has no email).
3

Customer Saves Their Card

The customer enters their card details on Atoa’s PCI-compliant hosted page and completes 3DS authentication. Card details never touch your systems, and there is no separate confirmation call to make.
4

Charge the Saved Card Later

Retrieve the card with List Payment Methods, then charge it at any time with Charge Saved Card using the returned paymentMethodId.

Which Flow Should I Use?

Both flows end with a card on file — the difference is whether a payment happens at the same time. Either way, charge the saved card later with Charge Saved Card.

Authentication

All Card on File endpoints use Bearer token authentication. Generate your accessSecret from the Atoa Business App or Web Dashboard (Profile icon > Settings > API Access).

Capture Types

When processing a card payment, you choose a capture type that determines how and when funds are collected:

Payment Status Lifecycle

Webhooks

Card on File payments trigger the same PAYMENTS_STATUS webhook event as Pay by Bank payments. Subscribe to webhooks to receive real-time notifications when payment status changes. For card payments, the webhook payload includes additional statuses: See Payment Status Webhook Payload for the full payload structure.

Checking Payment Status

Use the existing Get Payment Status API (GET /api/payments/v1/payment-status/{paymentRequestId}) to check the status of card payments. For card transactions, the response includes a cardPaymentDetails object in each transaction detail with card-specific information such as card type, capture type, and masked card number.

Error Handling

All endpoints return errors in this format: