Capture
Capturing a payment confirms that it's ready for financial settlement. This transfers the authorized funds from the cardholder's account to your merchant account.
Key Rules
- If not captured within 7 days, the authorization is automatically voided by the system
- Settlement timing begins from the moment of capture, not authorization
- A payment can only be captured once (but you can capture a partial amount)
- If the payment was created with
"capture": true, it was already captured — attempting again returns an error - If no amount is specified, the full authorized amount is captured
Endpoint
POST https://{FQDN}/payments/{externalPaymentId}/capture
Headers:
| Header | Value |
|---|---|
Authorization | Bearer {accessToken} |
Content-Type | application/json |
Request Body (Optional)
Omit the body to capture the full authorized amount. Include it for a partial capture:
{
"amount": {
"total": 50.00,
"currency": "USD"
}
}
| Field | Type | Required | Description |
|---|---|---|---|
amount.total | number | ❌ | Amount to capture (must be ≤ authorized amount) |
amount.currency | string | ❌ | Currency code (must match the authorization) |
Example — Full Capture
curl -X POST https://{FQDN}/payments/order-12345/capture \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Content-Type: application/json'
Example — Partial Capture
curl -X POST https://{FQDN}/payments/order-12345/capture \
-H 'Authorization: Bearer eyJhbGciOiJSUzI1NiIs...' \
-H 'Content-Type: application/json' \
-d '{
"amount": {
"total": 50.00,
"currency": "USD"
}
}'
Response (200)
{
"paymentId": "bfb9eacb-7c72-4cc8-9cae-afd9164ec792",
"parentPaymentId": "bfb9eacb-7c72-4cc8-9cae-afd9164ec792",
"externalPaymentId": "order-12345",
"amount": 100.10,
"created": "2024-04-22 16:22:06",
"approved": true,
"message": "Payment Approved",
"automaticReversed": false,
"status": "CAPTURED",
"captured": true,
"voided": false,
"authCode": "bfb9eacb-7c72-4cc8-9cae-afd9164ec792",
"issuerName": "BANK OF AMERICA",
"issuerCountry": "US",
"cvcResult": "APPROVED",
"avsResult": "NOT_SENT"
}
For partial captures, the status will be PARTIALLY_CAPTURED.
