Recurring payments, also known as subscription payments are charged automatically to a customer at periodic intervals.
Implementation workflow
You can setup and charge recurring payments with
by following 3 simple steps:Multiexcerpt include SpaceWithExcerpt EN MultiExcerptName Partner-Name PageWithExcerpt EN:Wording
- Initial transaction with recurring intent
- Store credentials securely
- Subsequent recurring transactions
1. Initial transaction
Setup intent for a recurring payment by passing the below information in the credentialOnFile Object:
| Code Block |
|---|
{
...
"credentialOnFile": {
"type": "RECURRING",
"initialPayment": true,
"recurring": {
"frequency": "DAILY", // "WEEKLY"/"MONTHLY"/"YEARLY"
"startDate": "2025-01-01",
"expiryDate": "2025-12-01",
"useCase": "FIXED", // "FLEXIBLE_AMOUNT"/"FLEXIBLE_FREQUENCY"
}
}
} |
Parameter guide
| Parameter | Values | Description |
|---|---|---|
| frequency | DAILY/MONTHLY/WEEKLY/YEARLY | Billing cycle frequency |
| startDate | YYYY-MMM-DD | First charge date |
| expiryDate | YYYY-MMM-DD | Cancellation date |
| useCase | FIXED/FLEXIBLE_AMOUNT/FLEXIBLE_FREQUENCY |
|
2. Credential storage
Securely store the credentials based on the integration type upon receiving successful payment response to the initial transaction:
| Integration type | Action | ||
|---|---|---|---|
Hosted forms – Hosted Payment Page or card Hosted forms | Fetch the
| ||
Direct Integration | Store either:
|
3. Subsequent transactions
Subsequent transactions for an unscheduled MIT should always be sent via the direct integration.
Pass the below data in
credentialOnFileobject for subsequent recurring:Code Block { ... "credentialOnFile": { "type": "RECURRING", "initialPayment": false, "recurring": { "frequency": "daily", // "weekly"/"monthly"/"yearly" "startDate": "2025-01-01", "expiryDate": "2025-12-01", "useCase": "FIXED", // "FLEXIBLE_AMOUNT"/"FLEXIBLE_FREQUENCY" } } }In addition to the above pass the saved credentials and
schemeReferenceIdreturned previously in the response of initial transaction:Code Block { ... "paymentMethods": { "type": "CARD", "card": { "expiryDate": "202506", "cardHolderName": "John Doe", "securityCode": "123", "number": "5555555555554444", // clear card number or pseudo card number "schemeReferenceId": "4234234234" ..... ..... } } }