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:

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: