Capture an order
This endpoint is used to capture the funds of an existing, uncaptured order. When the payment for an order is authorised, you can capture the order to send it to the processing stage.
For more information about the order and payment lifecycle, see: Order and payment lifecycle.
Capture modes
When you create an order, you can choose one of the following capture modes:
Capture mode | Description |
---|---|
automatic | The order is captured automatically after payment authorisation. No further actions are needed. |
manual | The order is not captured automatically and stays in authorised state. You must manually capture the order using the steps outlined below. |
Uncaptured orders remain in authorised
state for 7 days. If not captured within this period, the funds are returned to the customer's original payment method.
Manual capture
To capture an order manually, use one of the following methods:
Web UI | Merchant API |
---|---|
| Use the /capture endpoint. |
For more information about manually capturing an order, see: Authorise an amount to capture later.
Partial capture
You have the option to capture only a fraction of the full amount. In such cases, the uncaptured portion of the amount will be voided.
The following limitations apply to manual captures:
- It's not possible to capture an amount multiple times
- Captured amount can't exceed the authorised amount
- On Web UI, only capturing full amount is possible
0
amount captures are not allowed- For partial captures, you can only resend the request with the initial amount
Idempotency and repeated requests
The capture operation is idempotent. This means that an order can only be captured once. If you send a capture request more than once:
- The first valid request captures the order and moves it to the processing stage.
- Any subsequent capture requests for the same order will not recapture the funds. Instead, these requests will behave like a Retrieve an order request. The response will provide the current state of the order as if you queried it using the order retrieval endpoint.
Utilising the idempotent nature of this endpoint helps maintain data consistency and prevents duplicate processing of the same order.
Authorization
Each Merchant API request must contain an authorization header in the following format to make a call:
'Authorization: Bearer <yourSecretApiKey>'
Before you start, ensure that you've successfully applied for a Merchant Account in your Revolut Business Account.
The Public key is on the same path in your Revolut Business account as the Secret key. There are two different functions for each:
- Public key should be provided with payment methods at checkout
- Secret key is used as a part of the authorization header for all server calls, e.g., creating order
Complete the following steps to generate the Production API keys (Secret, Public):
- Log in to your Revolut Business portal.
- On the top left corner, click your account name, click APIs then select Merchant API.
- Under the Production API Secret key and Production API Public key sections you will find the API keys needed. If it's your first time on this page, you will need to click the Generate button to create your unique API keys.
You can also use this link to directly open the Merchant API page.
Use these keys only for the production environment. For the Revolut Business Sandbox environment, use the sandbox API keys.
SSL
This authentication protocol is used exclusively when using Fast checkout.
Connection over HTTPS is using SSL authentication. For successful authentication, your system's certificate should be issued by a Public Certificate Authority (PCA) and your system should trust Revolut's public certificate.
Revolut-Pay-Payload-Signature
This authentication protocol is used exclusively when using Fast checkout.
Data integrity and authorship will be verified using a payload-based signature. The response of a successful URL registration for address validation (see: Register address validation for Fast checkout) will contain a secret signing key.
The signing key will be used by Revolut to compute a Hash-based Message Authentication Code (HMAC) payload signature whenever the registered URL is called, which should be verified by your backend.
Request
Response
Order captured