POST
/
api
/
payments
/
card
/
process-payment
curl --request POST \
  --url https://api.atoa.me/api/payments/card/process-payment \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "customerId": "550e8400-e29b-41d4-a716-446655440000",
  "paymentMethodId": "card_abc123def456",
  "captureType": "AUTO_CAPTURE",
  "amount": 10.50,
  "orderId": "ORDER-001",
  "notes": "Payment for order #001"
}'
{
  "paymentRequestId": "9baa68d8-362a-4127-994d-2ea622ef35ee",
  "status": "PENDING",
  "amount": 10.50,
  "currency": "GBP",
  "orderId": "ORDER-001",
  "customerId": "550e8400-e29b-41d4-a716-446655440000",
  "paymentMethodId": "card_abc123def456",
  "captureType": "AUTO_CAPTURE",
  "createdAt": "2025-06-15T10:30:00.000Z"
}

Charge a customer’s saved card without them being present (off-session). The customer must have a previously saved payment method (see List Payment Methods).

The response always returns status: "PENDING" to confirm that the payment processing has started. The final status (COMPLETED, AUTHORIZED, FAILED) is updated asynchronously once the card network confirms the transaction. Use Webhooks to receive real-time status updates, or poll the Get Payment Status API.

For MANUAL_CAPTURE or CAPTURE_BEFORE_EXPIRY, the payment will move to AUTHORIZED once confirmed — you must then call Manual Capture Payment to collect the funds. For AUTO_CAPTURE, the payment moves directly to COMPLETED.

Authorization

Bearer <accessSecret>

Request Body Schema

customerId
string
required

The customer UUID to charge. Must be a valid UUID.

paymentMethodId
string
required

The saved card ID from List Payment Methods response (id field). 1-64 characters.

captureType
string
required

How to capture the payment.

amount
number
required

Payment amount in pounds. Example: 10.50 for ten pounds fifty pence. Minimum: £1.

orderId
string
required

Your merchant order reference for tracking. 1-50 characters, must not be blank.

notes
string

Short payment description or notes. Max 30 characters.

storeId
string

Store UUID. If not provided, the merchant’s primary store is used. Refer Get Stores API.

Response

paymentRequestId
string

Unique payment identifier (UUID). Use this for Capture, Cancel, and status queries.

status
string

Always PENDING in the initial response. Indicates that payment processing has been initiated. The final status is updated asynchronously via webhook.

amount
number

Payment amount in pounds.

currency
string

Currency code (e.g., GBP).

orderId
string

Your merchant order reference.

customerId
string

The charged customer’s UUID.

paymentMethodId
string

The card used for payment.

captureType
string

The capture type used.

createdAt
string

ISO 8601 timestamp.

expiresAt
string

When the authorization expires (only for MANUAL_CAPTURE / CAPTURE_BEFORE_EXPIRY).