Merchant-Initiated Recurring Payments with PAN
RedeREST API
After the initial recurring payment (CIT), subsequent recurring payments are
merchant-initiated transactions (MITs).
Prerequisites
The first transaction in a recurring payment is a customer-initiated transaction
(CIT). Before you can perform a subsequent merchant-initiated transaction (MIT), you
must store the customer's credentials for later use. Before you can store the
customer's credentials, you must get their consent to store their private
information. This is also known as establishing a relationship with the
customer.
Support Card Type
The Visa card type is supported for processing
credentialed transactions.
Mastercard uses standing order and subscription payments instead of recurring
payments. See Mastercard Standing Order Payments and
Mastercard Subscription Payments.
Address Verification Service for Recurring Payments
If your processor supports the Address Verification Service (AVS), then the AVS
should verify every authorization request.
Cybersource
recommends
checking the AVS's results for the first recurring payment to ensure that the
payment information is accurate and to reduce the risk of fraud.You must determine how to handle the AVS results for any subsequent recurring
payments that are not the same as the already-verified billing address information
from the first recurring payment.
Endpoint
Production:
POST
https://api.cybersource.com
/pts/v2/paymentsTest:
POST
https://apitest.cybersource.com
/pts/v2/paymentsRequired Fields for Authorizing a Merchant-Initiated Recurring Payment
Use these required fields to authorize subsequent recurring payments.
- processingInformation. authorizationOptions. initiator. merchantInitiatedTransaction. previousTransactionID
- For Discover and American Express cards, use the transaction ID from the original transaction. For Visa, use the last successful transaction ID.
- Set totrue.
- Set tomerchant.
- Set torecurring.
Card-Specific Required Fields for Authorizing Subsequent Recurring Payments
Some card companies require additional information when making authorizations with stored credentials.
Discover
Include the authorization amount from the original transaction in this field:
- processingInformation.authorizationOptions.initiator.merchantInitiatedTransaction. originalAuthorizedAmount
Mastercard
Mastercard supports subscription and standing order payments instead of recurring
payments.
REST Example: Authorizing a Merchant-Initiated Recurring Payment
Request
12345678910111213141516171819202122232425262728293031323334353637{"processingInformation": { "commerceIndicator": "recurring", "authorizationOptions": { "initiator": { "storedCredentialUsed": "true", "type": "merchant", "merchantInitiatedTransaction": { "previousTransactionId": "123456789619999", "originalAuthorizedAmount": "100" //Discover Only } } } }, "orderInformation": { "billTo": { "firstName": "John", "lastName": "Doe", "address1": "201 S. Division St.", "postalCode": "48104-2201", "locality": "Ann Arbor", "administrativeArea": "MI", "country": "US", "phoneNumber": "5554327113", "email": "test@cybs.com" }, "amountDetails": { "totalAmount": "100.00", "currency": "USD" } }, "paymentInformation": { "card": { "expirationYear": "2031", "number": "4111xxxxxxxxxxxx", "expirationMonth": "12" } }}
Response to a Successful Request
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354{"_links": { "authReversal": { "method": "POST", "href": "/pts/v2/payments/6530824710046809304002/reversals" }, "self": { "method": "GET", "href": "/pts/v2/payments/6530824710046809304002" }, "capture": { "method": "POST", "href": "/pts/v2/payments/6530824710046809304002/captures" } }, "clientReferenceInformation": { "code": "1653082470983" }, "id": "6530824710046809304002", "orderInformation": { "amountDetails": { "authorizedAmount": "100.00", "currency": "USD" } }, "paymentAccountInformation": { "card": { "type": "002" } }, "paymentInformation": { "tokenizedCard": { "type": "002" }, "card": { "type": "002" } }, "pointOfSaleInformation": { "terminalId": "111111" }, "processorInformation": { "approvalCode": "888888", "authIndicator": "1", "networkTransactionId": "123456789619999", "transactionId": "123456789619999", "responseCode": "100", "avs": { "code": "X", "codeRaw": "I1" } }, "reconciliationId": "79710341A39WTT5W", "status": "AUTHORIZED", "submitTimeUtc": "2022-05-20T21:34:31Z"}