Skip to main content
Payment Intents let you accept card and Apple Pay payments into an account. Create an intent for the amount you want to collect, then confirm it with an intent action.

The Payment Intent object

string
Unique payment intent identifier.
string
ISO 4217 currency code. e.g. USD, GBP, EUR.
number
Amount in the smallest currency unit. 1000 = $10.00 USD.
string
Your unique order or transaction reference.
string
Optional human-readable payment description.
string
Intent status. One of requires_action, processing, completed, cancelled, or failed.
string
Reason for the current status. Present when the intent is cancelled with a reason. For a failed payment, check status_reason on the nested intent_action instead.
string
Entity that owns the payment intent.
string
Account credited when the payment completes.
number
Unix timestamp in milliseconds when the intent was created.
object | null
The most recent confirmation attempt for this payment intent. See The Intent Action object. null until a confirmation is submitted.

Payment intent statuses


The Intent Action object

string
Unique intent action identifier.
string
Currency inherited from the payment intent.
number
Payment amount inherited from the payment intent.
number
Fee charged for the payment in the smallest currency unit.
number
Amount charged for the payment.
number
Amount refunded so far in the smallest currency unit. See Payment Refund to issue a refund.
string
Client reference inherited from the payment intent.
string
Action performed. Currently confirm.
string
Payment category. Currently collections.
string
Payment method. One of card-acq or applepay-acq.
object
Payment method data returned for the action. Sensitive card details are never returned.
string
Action status. One of pending, pending_user_action, completed, or failed.
string
Reason for the current status. Present when a payment fails.
string
Entity that owns the intent action.
string
Account credited when the payment completes.
string
Payment Intent linked to this action.
boolean
true when the customer must complete a redirect or challenge.
object
Next step for the customer when requires_action is true.
string
URL the customer is redirected to after authentication.
number
Unix timestamp in milliseconds when the action was created.

Intent action statuses


Card data encryption

For card-acq, send encrypted card details in intent_action.payment_type_data.data. See Encryption for how to get your public key, validate card data before encrypting, and implementation examples in Node.js and Python. Encrypt this JSON object with RSA-OAEP SHA-256 using the encryption_public_key returned when you create or rotate an API key:
string
required
Card PAN. 13–19 digits. Spaces are ignored after decryption.
string
required
Expiry month, 1–12 or zero-padded 01–12.
string
required
Four-digit expiry year. The expiry date must not be in the past.
string
required
Card verification value. 3 or 4 digits.
string
Optional name printed on the card.
Never send raw card details in an API request. Only send the encrypted Base64 value in payment_type_data.data.

Create a payment intent

POST /payment-intents Creates a payment intent for a card payment.

Request parameters

string
required
ISO 4217 currency code. e.g. USD.
number
required
Amount in the smallest currency unit. 1000 = $10.00 USD.
string
required
Account to credit when the payment completes.
string
required
Unique order or transaction reference. 1–100 characters. The same reference cannot be reused for the same account.
string
A human-readable payment description. Maximum 250 characters.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
object
Optional confirmation action. Include this to create and confirm the Payment Intent in one request.

Request

Response

Returns a Payment Intent with status: "requires_action".

Create and confirm in one request

Include intent_action when your server already has the encrypted card payload. This still goes through the same authentication rules as a standalone confirmation: if the issuer requires 3DS, the response returns status: "processing", the nested intent_action.status: "pending_user_action", and a next_action.url to redirect the customer to, the same as confirming separately.

Confirm a payment intent

POST /intent-actions Confirms a payment intent with card or Apple Pay payment data.

Request parameters

string
required
Payment Intent to confirm. The intent must have status: "requires_action".
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
object
required
Confirmation action details.
string
required
Always confirm.
string
required
Always collections.
string
required
Payment method. One of card-acq or applepay-acq.
object
required
Payment method data.
string
Encrypted Base64 card data. Required for card-acq; omit for applepay-acq.
object
required
Billing address. For applepay-acq, only country is required.
string
Card authentication model. Defaults to 3ds_required.
object
Browser data used for 3DS authentication. Required when auth_model is 3ds_required.
object
required
Customer details for the payment.
string
URL to redirect the customer to after authentication. Required unless auth_model is 3ds_disabled.

Card request

Apple Pay request

Response

Returns an Intent Action. If requires_action is true, redirect the customer to next_action.url.
payment_type_data.card_brand and card_type are not populated while the action is pending_user_action. They appear once the action reaches completed.

Payment intent webhooks

Payment Intent webhooks notify your server when a payment reaches a final state. Subscribe to payment_intent.completed, payment_intent.failed, and payment_intent.cancelled to track a payment intent after confirmation. See Event types for the full payload schema, including the nested intent_action. Return a 2xx response to acknowledge receipt. See Webhooks for delivery and retry details.

Retrieve a payment intent

GET /payment-intents/{id} Returns a single Payment Intent, including its most recent intent_action if one exists.
string
required
Payment Intent ID.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.

Response

Returns the Payment Intent object.

List payment intents

GET /payment-intents Returns a paginated list of Payment Intents.
string
Filter by status.
string
Filter by client reference.
string
Filter by currency.
string
Filter by account.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
string
Filter by creation date start.
string
Filter by creation date end.
number
Maximum number of records to return.
string
Cursor for the next page.
string
Cursor for the previous page.

Response

List endpoints for Payment Intents and Intent Actions return the page under data.items, not data.data. This differs from the standard pagination envelope used elsewhere in the API.

Cancel a payment intent

PATCH /payment-intents/{id} Cancels a Payment Intent that has not been confirmed. Only intents with status: "requires_action" can be cancelled.
string
required
Payment Intent ID.
string
required
Must be cancel.
string
Cancellation reason. 1–100 characters.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.

Response


Retrieve an intent action

GET /intent-actions/{id} Returns a single Intent Action.
string
required
Intent Action ID.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.

Response

Returns the Intent Action object.

List intent actions

GET /intent-actions Returns a paginated list of Intent Actions.
string
Filter by currency.
string
Filter by client reference.
string
Filter by payment type. e.g. card-acq.
string
Filter by status.
string
Filter by Payment Intent ID.
string
Filter by account.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.
string
Filter by creation date start.
string
Filter by creation date end.
number
Maximum number of records to return.
string
Cursor for the next page.
string
Cursor for the previous page.

Response

Like List payment intents, this endpoint returns the page under data.items, not data.data.

Verify an intent action

POST /intent-verifications/{id} Rechecks an Intent Action that has not reached a final status. If the action is already completed or failed, the current action is returned.
string
required
Intent Action ID.
string
Defaults to the authenticating entity when omitted. Required when acting on a child entity. See Managing child entities for details.

Response

Returns the Intent Action object.