Recurring card payments
We refer to recurring payments when the platform repeatedly charges the end user’s card at regular intervals for the goods and/or services provided.
Learn more about recurring payments →The recurring card payments feature is testable in Sandbox and a specific set of mocks has been developed to simulate the errors that occur when working with recurring objects.
1. Select the pay-in to which the mock is going to apply
You can use the mock for a customer-initiated or a merchant-initiated transaction.
To do so, you may use the Create a Recurring PayIn Registration endpoint, and use the 33501
value in one of the following Amount
parameters in the body of the request:
FirstTransactionDebitedFunds
to test an MITNextTransactionDebitedFunds
to test a CIT
2. Choose the error to simulate in the recurring registration
You can use the value below in the AddressLine2
parameter of the Billing
object in your recurring pay-in registration body.
AddressLine2 value | Simulated case | Returned error code |
---|---|---|
01100 | Failed pay-in | 101101 |
01116 | Failed due to card limit reached | 101199 |
01125 | Failed due to inactive card | 101106 |
01131 | Reauthentication request from the bank (MIT only) | 101305 |
03022 | Failed SCA (CIT only) | 101301 |
3. Make the recurring pay-in
Make the pay-in (MIT or CIT) with the Create a Recurring PayIn endpoint with the amount of 33501
for the DebitedFunds
.
Example
In this example, we simulate a failed merchant-initiated transaction due to an inactive card by following these steps:
- Create a Recurring PayIn Registration with the mock values
- Create an initial CIT for the authentication
- Create an MIT which will fail, returning the 101106 error.
Note - Mocks available in Postman Collection
The Mangopay API Postman Collection contains the full flow for the recurring mocks to help you test faster.
{
"AuthorId": "{{USER_NATURAL_PAYER}}",
"CardId": "{{CARD_CHALLENGE_FLOW_ID}}",
"CreditedWalletId": "{{USER_LEGAL_OWNER_WALLET_ID}}",
"FirstTransactionDebitedFunds": {
"Currency": "EUR",
"Amount": 10000
},
"FirstTransactionFees": {
"Currency": "EUR",
"Amount": 1000
},
"Billing": {
"FirstName": "{{$randomFirstName}}",
"LastName": "{{$randomLastName}}",
"Address": {
"AddressLine1": "{{$randomStreetAddress}}",
"AddressLine2": "01116",
"City": "Paris",
"Region": "Ile-de-France",
"PostalCode": "75001",
"Country": "FR"
}
},
"Frequency": "Monthly",
"FixedNextAmount": true,
"FractionedPayment": false,
"Migration": false,
"NextTransactionDebitedFunds": {
"Currency": "EUR",
"Amount": 33501
},
"NextTransactionFees": {
"Currency": "EUR",
"Amount": 1000
},
}
{
"RecurringPayinRegistrationId": "{{RECURRING_PAYIN_REGISTRATION_ID}}",
"IpAddress": "{{$randomIPV6}}",
"BrowserInfo": {
"AcceptHeader": "text/html, application/xhtml+xml, application/xml;q=0.9, /;q=0.8",
"JavaEnabled": true,
"Language": "FR-FR",
"ColorDepth": 4,
"ScreenHeight": 1800,
"ScreenWidth": 400,
"TimeZoneOffset": 60,
"UserAgent": "Mozilla/5.0 (iPhone; CPU iPhone OS 13_6_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148",
"JavascriptEnabled": true
},
"SecureModeReturnURL": "https://mangopay.com/docs/please-ignore",
"StatementDescriptor": "POSTMAN",
"Tag": "Created using Mangopay API Postman Collection",
"DebitedFunds": {
"Currency": "{{CURRENCY}}",
"Amount": 5000
},
"Fees": {
"Currency": "{{CURRENCY}}",
"Amount": 100
}
}
{
"RecurringPayinRegistrationId": "{{RECURRING_PAYIN_REGISTRATION_ID}}",
"StatementDescriptor": "POSTMAN",
"Tag": "Created using Mangopay API Postman Collection",
"DebitedFunds": {
"Currency": "{{CURRENCY}}",
"Amount": 33501
},
"Fees": {
"Currency": "{{CURRENCY}}",
"Amount": 100
}
}
{
"Id": "195780716",
"Tag": "Created using Mangopay API Postman Collection",
"CreationDate": 1688721801,
"AuthorId": "195777863",
"CreditedUserId": "195777905",
"DebitedFunds": {
"Currency": "EUR",
"Amount": 33501
},
"CreditedFunds": {
"Currency": "EUR",
"Amount": 33401
},
"Fees": {
"Currency": "EUR",
"Amount": 100
},
"Status": "FAILED",
"ResultCode": "101102",
"ResultMessage": "Transaction refused by the bank (Amount limit)",
"ExecutionDate": null,
"Type": "PAYIN",
"Nature": "REGULAR",
"CreditedWalletId": "195777929",
"DebitedWalletId": null,
"PaymentType": "CARD",
"ExecutionType": "DIRECT",
"SecureMode": null,
"CardId": "195778022",
"SecureModeReturnURL": null,
"SecureModeRedirectURL": null,
"SecureModeNeeded": false,
"Culture": "EN",
"SecurityInfo": {
"AVSResult": "NO_CHECK"
},
"StatementDescriptor": "POSTMAN",
"BrowserInfo": null,
"IpAddress": null,
"Billing": {
"FirstName": "Vernice",
"LastName": "Prohaska",
"Address": {
"AddressLine1": "5819 Heidenreich Mount",
"AddressLine2": "01116",
"City": "Paris",
"Region": "Ile-de-France",
"PostalCode": "75001",
"Country": "FR"
}
},
"Shipping": {
"FirstName": "Vernice",
"LastName": "Prohaska",
"Address": {
"AddressLine1": "5819 Heidenreich Mount",
"AddressLine2": "01116",
"City": "Paris",
"Region": "Ile-de-France",
"PostalCode": "75001",
"Country": "FR"
}
},
"Requested3DSVersion": null,
"Applied3DSVersion": null,
"RecurringPayinRegistrationId": "195780242"
}
Was this page helpful?