Skip to main content

Authorise a payment

Technical Author Note

Draft content to be reviewed and verified.

Use an authorisation to reserve funds on a card now and settle them later.

An authorisation places a hold on the cardholder's funds without debiting them. You settle the hold with a separate Capture once the final amount is known, or release it with Cancel if it is no longer needed. This makes it a two-step flow, unlike a sale.

Use this flow when the final amount may differ from the amount reserved, or when the charge is confirmed after the order is placed — for example hotel or car-rental deposits.

The authorisation request uses the same structure and endpoint as Accept a payment, with intent set to authorise. Capture and Cancel are mutually exclusive, and a hold can only be cancelled if it has not already been captured. To return funds from a capture that has already settled, use Refund a payment.

How it works

  1. Authenticate — attach your Bearer token and Integrator ID to the request headers.
  2. Place card details inside sender.custom_data: PAN, expiry month, expiry year, and holder name. CVC is submitted separately at root custom_data.authentication.cvc.
  3. Set intent: authorise, channel: ecommerce, and routing.payment_flow: credit_card.
  4. POST the request. A successful authorisation returns status: success and an id — save it as your payment_id.
  5. When the final amount is known, capture or cancel the hold using that payment_id — see below.

Key rules

note
  • intent: authorise reserves funds without debiting them — settlement happens on capture.
  • Capture and Cancel are mutually exclusive — see below.
Request body
{
"amount": 1000,
"currency": "EUR",
"sender": {
"type": "credit_card",
"custom_data": {
"pan": "4000000000000000",
"expiry_month": "12",
"expiry_year": "2030",
"holder_name": "NAME NAME"
}
},
"receiver": {
"configuration_id": "idid+001"
},
"routing": {
"payment_flow": "credit_card"
},
"intent": "authorise",
"channel": "ecommerce",
"custom_data": {
"authentication": {
"cvc": "123"
}
}
}

Capture

Settle a pre-authorisation by sending a POST to the capture endpoint with the original payment_id in the URL.

To capture the full authorised amount, send an empty request body. To capture a partial amount, include {"amount": N} — the value must not exceed the amount originally authorised.

The response id is a new transfer_id. Do not overwrite your stored payment_id. The parent_operation_id in the response references the original authorisation_id.

Cancel

Void a pre-authorisation and release the reserved funds by sending a POST to the cancel endpoint with the original payment_id in the URL.

To cancel in full, send an empty request body. To release a partial amount, include {"amount": N}.

A pre-authorisation can only be cancelled if it has not already been captured. The response id is the cancel_id. The parent_operation_id in the response references the original authorisation_id.

For the full list of which IDs each operation returns and which to store, see Response ID Fields.

Try it

Call this flow directly in the API Reference.

  • POST Create Direct payment ( intent: authorise )
  • POST Capture a Payment
  • POST Cancel a Payment