Recurring payments with Strong Customer Authentication
To ease the subsequent payments event, an initial checkout is authenticated according to 3DS checks. All following checkouts refer to the initial one in terms of 3DS authentication.
You will go through the following steps:
- Set up a checkout session
- Process checkout
- Retrieve the checkout
- Process future subsequent payments with a token
Steps
1. Set up a checkout session
The flow is initiated with the create a checkout
endpoint. It is important to pass the customer_id
parameter in this step, for future linking to a payment instrument, ideal for quickly creating and processing later payments. Additionally, a purpose
parameter is passed to indicate the payment type as recurrent and process an authorisation charge of the checkout amount indicated, which is instantly reimbursed.
{
...
"purpose": "SETUP_RECURRING_PAYMENT"
...
}
The initial checkout may be subject to the 3DS challenge, depending on multiple factors described briefly here.
Sample request available in our API Reference.
{
"checkout_reference": "CO746453",
"amount": 5,
"currency": "EUR",
"merchant_code": "ME7RMQN3",
"pay_to_email": "[email protected]",
"description": "Sample request",
"return_url": "http://example.com",
"customer_id": "DC000101",
"purpose": "SETUP_RECURRING_PAYMENT"
}
2. Process checkout
A mandate
object needs to be passed at checkout processing. This object indicates that a customer has given consent to store their payment details for recurrent payments.
Depending on the local region regulations this request may result in a 3DS redirection step, which you will need to handle accordingly.
{
"payment_type": "card",
"installments": 1,
"card": {
"name": "FIRSTNAME LASTNAME",
"number": "4111111111111111",
"expiry_year": "2023",
"expiry_month": "01",
"cvv": "123",
"zip_code": "12345"
},
"mandate": {
"type": "recurrent",
"user_agent": "Chrome: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/77.0.3865.90 Safari/537.36.",
"user_ip": "2001:0db8:85a3:0000:0a00:8a2e:0370:7300"
}
}
3. Retrieve the checkout
If the previous operation is successful, a token representing a payment instrument is created. You can retrieve a checkout
to find the value within a payment_instrument
object.
{
"id": "cd36780e-f43d-4f22-1i9e-e32a1a1bafc8",
"checkout_reference": "0BYNWLYC7KV",
"amount": 3.51,
"currency": "EUR",
...
"payment_instrument": {
"token": "2fa27578-e765-5dbh-aa97-d45d3d6cdfbb"
}
}
4. Process future subsequent payments with a token
After following the above requests you can now process recurring payments by referencing the saved token and the associated customer. Both token
and customer_id
fields are required.
{
"payment_type": "card",
"installments": 1,
"token": "{{CARD_TOKEN}}"
"customer_id": "DC000101",
}