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:
- 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:
{ ... "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 { ... "paymentMethods": { "type": "CARD", "card": { "cardholderName": "John Doe", "pseudoCardNumber": "01234567890124444", "first6Digits": 555555, "last4Digits": 4444, "expiryDate": "01.01.2028", "schemeReferenceId": "4234234234", ...... ...... } } } |
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
credentialOnFile
object for subsequent recurring:{ ... "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
schemeReferenceId
returned previously in the response of initial transaction:{ ... "paymentMethods": { "type": "CARD", "card": { "expiryDate": "202506", "cardHolderName": "John Doe", "securityCode": "123", "number": "5555555555554444", // clear card number or pseudo card number "schemeReferenceId": "4234234234" ..... ..... } } }