3RI - Requestor-Initiated Authentication
This guide is intended for PCI-DSS merchants using our API to perform authentication.
Version 2.2 of the 3-D Secure protocol introduces merchant-initiated authentication or"3DS Requestor initiated (3RI) authentications".
3RI is used in particular:
- when paying an installment of a subscription
- when paying a later installment of a payment in installments
- for the MOTO payment
The use case is determined by the value of the fieldspaymentSource
,useCase
andtransactionInitiator
.
Here are some examples of how to use 3RI :
Use cases | Payment stages | useCase | paymentSource | transactionInitiator |
---|---|---|---|---|
Subscription with fixed frequency and amounts | Payment of an nth installment | RECURRING_FIXED_TOTALAMOUNT | EC | MERCHANT |
Subscription with variable frequency and/or amounts | Payment of an nth installment | RECURRING_ VARIABLE_TOTAL_AMOUNT | EC | MERCHANT |
Payment in installments | Payment of an nth installment | INSTALLMENT | EC | MERCHANT |
Payment by post | Payment | PAYMENT | MAIL_ORDER | n/a |
Payment by phone | Payment | PAYMENT | TELEPHONE_ORDER | n/a |
Operating principle
The general principle applies to authentications "3RI".
A single call to the Web ServicePCI/Charge/Authenticateis all that's needed, and the merchant has no instructions to process or objectsdevice
to transmit.
List of fields relating to3RI:
name | Description | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
amount | Integer| Length: 1-12 |required Transaction amount expressed in the smallest fraction of the currency (for example: 30050 for 300.50 EUR). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
currency | String| Length: 3 |required Currency code according to ISO 4217 alpha-3 standard (for example: "EUR" for the euro). Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
productType | Product type for which the transaction is made. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionCategory | Transaction category. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
paymentSource | Source of payment. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
transactionInitiator | Initiator of the transaction. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
useCase | Transaction use case. Possible values
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
customer | Object containing information about the buyer. Item Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
device | Object containing information about the browser. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
paymentForm | Object containing the card data. Item Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
protocolRequest | Object containing information about the authentication protocol. Item Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
merchant | Object containing information about the contract. Item Details
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
recurring | Object containing subscription information. Item Details
|
The response contains authentication data for future authorization requests.
Use cases
Recurring payments
Step 1 - Subscription to the plan (cardholder present)
Call the Web ServicePCI/Charge/Authenticate to authenticate the buyer:
Fixed frequency and amounts | { "amount":"9990", "currency":"EUR", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } } |
Variable frequency and/or amounts | { "amount":"9990", "currency":"EUR", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } } |
The objectrecurring
is required to set the frequency of payments and the end date of the subscription.
Follow the Web Service integration guidePCI/Charge/Authenticate for processing instructions and authenticating the bearer.
Once the final result has been obtained, you can proceed with the authorization request.
Step 2 - Payment of installments (cardholder not present)
At each deadline, you call the Web ServicePCI/Charge/Authenticate to request authentication 3RI .
The objectrecurring
is required to set the frequency of payments and the end date of the subscription.
You must pass the authentication data, obtained when subscribing to the subscription, in the subjectpreviousAuthentication
:
Fixed frequency and amounts | { "amount":"9990", "currency":"EUR", "transactionInitiator": "MERCHANT", "useCase": "RECURRING_FIXED_TOTALAMOUNT", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
Variable frequency and/or amounts | { "amount":"9990", "currency":"EUR", "transactionInitiator": "MERCHANT", "useCase": "RECURRING_VARIABLE_TOTAL_AMOUNT", "recurring":{ "expiryDate": "2025-05-13", "frequency": { "unit": "DAY", "value": "30" } }, "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
The response contains the authentication data required for requesting authorization for the installment payment.
To help you, here is a table of correspondence between the data obtained in step 1 and the data required in step 2:
Exit stage 1 (carrier present) | Entrance stage 2 (carrier not present) |
---|---|
value.extension.dsTransID | customer.previousAuthentication.dsTransID |
value.extension.acsTransID | customer.previousAuthentication.acsTransID |
value.authenticationDateTime | customer.previousAuthentication.dateTime |
value.authenticationType | customer.previousAuthentication.effectiveAuthenticationType |
Payments in installments
Step 1: Payment of the first installment (cardholder present)
Call the Web ServicePCI/Charge/Authenticate to authenticate the buyer. Authentication must be requested for the total amount of the installments.
{ "amount":"12000", "currency":"EUR", "transactionCategory":"PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021", "installmentNumber": "3" }, "device": { "acceptHeader":"text/html", "colorDepth":"32", "deviceType":"BROWSER", "ip":"69.89.31.226", "javaEnabled": true, "language":"FR", "screenHeight":"768", "screenWidth":"1258", "timeZoneOffset":"-120", "userAgent":"Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:47.0) Gecko/20100101" }, "protocolRequest": { "name":"THREEDS", "version":"2", "challengePreference":"NO_PREFERENCE" } }
In this example, the total amount due is EUR 120.00.
The fieldinstallmentNumber
is required to specify the number of installments (e.g. "3" for a payment in 3 installments).
Follow the Web Service integration guidePCI/Charge/Authenticate for processing instructions and authenticating the bearer.
Once the final result has been obtained, you can proceed with the authorization request for the amount of the first installment.
Step 2: Payment of a subsequent installment (cardholder not present)
At each deadline, call the Web ServicePCI/Charge/Authenticate to request authentication 3RI for the amount of the installment.
You must transmit the authentication data obtained during the payment of the first installment, in the subjectpreviousAuthentication
:
{ "amount":"4000", "currency":"EUR", "transactionInitiator": "MERCHANT", "useCase": "INSTALLMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021", "installmentNumber": "3" }, "customer": { "previousAuthentication": { "dsTransID":"18e46ff7-b882-4102-9af4-aef9f40ee6a6", "acsTransID":"410d9fb4-8db1-483e-9a80-f94c3a79017e", "dateTime": "2024-10-09T06:37:22+00:00", "effectiveAuthenticationType": "CHALLENGE" } }, "protocolRequest": { "name":"THREEDS", "version":"2" } }
In this example, the authentication is requested for an amount of 40.00 EUR.
The response contains the authentication data required for requesting authorization for the installment payment.
To help you, here is a table of correspondence between the data obtained in step 1 and the data required in step 2:
Exit stage 1 (carrier present) | Entrance stage 2 (carrier not present) |
---|---|
value.extension.dsTransID | customer.previousAuthentication.dsTransID |
value.extension.acsTransID | customer.previousAuthentication.acsTransID |
value.authenticationDateTime | customer.previousAuthentication.dateTime |
value.authenticationType | customer.previousAuthentication.effectiveAuthenticationType |
MOTO payment
Call the Web ServicePCI/Charge/Authenticate to authenticate the buyer by specifying your use case:
Payment by phone | { "amount":"9990", "currency":"EUR", "paymentSource": "TELEPHONE_ORDER", "useCase": "PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
Payment by post | { "amount":"9990", "currency":"EUR", "paymentSource": "MAIL_ORDER", "useCase": "PAYMENT", "productType":"GOODS_OR_SERVICE_PURCHASE", "merchant": { "mid":"9876357" }, "paymentForm": { "expiryMonth":"09", "expiryYear":"28", "networkPreference":"VISA", "pan":"4970110000000021" }, "protocolRequest": { "name":"THREEDS", "version":"2" } } |
The response contains the authentication data required for the authorization request.