Recurring Transactions
The processing of recurring transactions is only currently supported when using DNA Payments as the Acquirer.
Types of Recurring Transactions
Checkout allows for the processing of two different types of recurring transactions; Those initiated by the consumer (when selecting their stored card when purchasing goods online), and those requested by the merchant (scheduled payment of an invoice etc.).
Consumer Initiated Transaction (CIT)
The CIT is supported via the Token Wallet functionality in Checkout - this is covered in detail in Stored Cards– “Token Wallet”. The consumer chooses their card from those displayed in the payment form and once selected the token is used in the authorisation in place of the card details. Checkout will set the relevant flags to the acquirer/issuer to inform them that this was initiated by the consumer and if applicable by the merchant’s configuration 3D Secure v2 will be performed to ensure SCA compliance.
Merchant Initiated Transaction (MIT)
MIT processing is supported for scenarios when the merchant needs to charge for goods or services without the interaction of the consumer. One such example of this could be where the consumer has placed their card details ‘on file’ with the merchant to allow monthly invoices to be automatically settled. Merchant initiated transactions are processed via the “recurring” endpoint and are detailed below. The recurring transaction is initiated by supplying the ID of the original transaction. This is used to retrieve the card information and associated data.
Recurring Transaction Request
Method | POST |
Recurring Transaction Request | |||||||
---|---|---|---|---|---|---|---|
Field Name | State | Data Type | Description | ||||
parentTransactionId | Mandatory | String | ID of the original transaction made using this card. | ||||
transactionType | Optional | String | Transaction type being requested. If this field is not supplied the value configured on the platform is used.
| ||||
amount | Mandatory | Decimal | Total amount of the order including decimal places where applicable. ‘Whole’ amounts (e.g. “1”) on a GBP account will be processed as £1.00. This value must match the value provided during authorisation or the request will be rejected. | ||||
sequenceType | Mandatory | String | Transaction sequence.
| ||||
periodicType | Mandatory | String | Type of recurring payment.
| ||||
invoiceId | Mandatory | String | Order/invoice/transaction/basket number generated by the host website. This ID must be unique for this transaction. This value must match the value provided during authorisation or the request will be rejected. | ||||
merchantCustomData | Optional | String Max 1024 bytes | Free text field for integrated system to pass custom data that will be stored against the transaction. This data will be available via the Transaction Management functions |
Recurring Transaction Response
Recurring Transaction Response | ||||||
---|---|---|---|---|---|---|
Field Name | Data Type | Description | ||||
accountId | String | Unique reference for the store processing the transaction. | ||||
amount | Decimal | Total amount of the original order/authorisation including decimal places where applicable. | ||||
currency | String | Currency of the transaction.
| ||||
id | String | Unique transaction ID. | ||||
invoiceId | String | Order/invoice/transaction/basket number generated by the host website, as passed in the request. | ||||
message | String | Message confirming the processing result of the transaction request. | ||||
success | Boolean | Confirmation of the reversal result.
| ||||
authCode | String | Authorisation code issued for the transaction. | ||||
authDateTimeUTC | String | Date and time of when the transaction was authorised with the acquirer. | ||||
errorCode | Integer | Provides additional detail should an error have occurred with the transaction.
| ||||
parentTransactionId | String | Transaction Id of the original Sale transaction which is linked to this subsequent transaction. | ||||
responseCode | String | Returned by the acquirer detailing the result of the transaction. A full list of Response Codes can be found here. | ||||
rrn | String | Unique reference allocated by Optomany to the authorisation. | ||||
success | Boolean | Confirms whether the transaction has been successful.
| ||||
payerAuthenticationResult | String | Will not be populated as the consumer is not present to complete authentication. |
Examples
- Request
- Response
{
"parentTransactionId": "6fce7714-6109-40d8-b408-0c6700509b6a",
"transactionType": "AUTH",
"amount": 10,
"sequenceType": "recurring",
"periodicType": "ucof",
"invoiceId": "1589804887471"
}
{
"accountId": "uuid000001",
"amount": 10,
"currency": "GBP",
"id": "a59ee97d-b9e9-4423-a23c-06d6766b6bfe",
"invoiceId": "1589804887471",
"message": "Authorised and settled",
"authCode": "123ABC",
"errorCode": 0,
"parentTransactionId": "6fce7714-6109-40d8-b408-0c6700509b6a",
"responseCode": "00",
"rrn": "8653/188/11052020143247000",
"success": true,
"payerAuthenticationResult": "-/-"
}