Charging a Saved Card

POST /v1/payments/card/charge

This endpoint allows you to charge a customer’s card using a previously generated token (from the tokenize
endpoint). It creates a payment transaction similar to the standard card payment initiation, but instead of
raw card details, you supply the token.

Request Body Parameters

The charge request requires the following JSON fields:

Field

Type

Required

Description

requestId

String

Yes

Unique ID for this charge request (used for idempotency and tracking).

mid

String

Yes

Merchant account ID that the transaction belongs to.

token

String

Yes

The card token obtained from a prior tokenization (cardToken).

amount

String

Yes

Amount to charge, in string format (following the currency’s format).

currency

String

Yes

Currency code in ISO 4217 format (e.g., "USD", "EUR").

callbackUrl

String

No

URL for webhook callback with the transaction result. Required if 3DS or async processing is possible.
Refer to the Webhook Callback Behavior page.

successRedirectUrl

String

No

URL to redirect the customer after successful 3D Secure authentication (if required).

failureRedirectUrl

String

No

URL to redirect the customer after failed 3D Secure authentication.

order

Object (Order Object)

No

Order or transaction details (order ID, description, etc.) for recordkeeping.

billingDetails

Object (BillingDetails Object)

No

Customer billing info, if needed (optional if already known or not required for this charge).

device

Object (Device Object)

No

Device information if the charge involves customer interaction. Required if 3D Secure may be triggered.

metadata

Map<String, String>

No

Additional metadata for this transaction.

This request works much like the normal card payment request, except that the card details are not passed
(the token is used instead). If the token was created from a card that requires 3D Secure or if the
circumstances of the charge require extra authentication (e.g., a high-risk transaction or regulatory
requirement), the response may include a challengeUrl for 3DS, just as with a normal payment. Ensure
that you provide the callbackUrl and redirect URLs if a 3DS challenge is possible.

Response Body

The response for charging a tokenized card will have the same structure as a normal payment initiation.
You will receive a transactionId and transactionStatus, and possibly `challengeUrl fields if
further authentication is needed. You should handle the response and any subsequent webhook the same
way as for a normal payment request.

For example, a successful immediate charge might return:

{
"transactionId": "742609401625775731",
"transactionStatus": "PENDING"
}

(You would then wait for a webhook or poll the status to see if it succeeds.)

If a 3D Secure authentication is required for this token charge, you might see:

{
"transactionId": "742609401625775732",
"transactionStatus": "CUSTOMER_VERIFICATION",
"challengeUrl": "https://secure-3ds-url.com/challenge?...",
"challengeUrlIframe": "https://secure-3ds-url.com/iframe-challenge?..."
}

In this case, you should redirect the user to challengeUrl (or use the iframe URL) to complete the
authentication, just like with a normal card payment.