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 MIT
  • NextTransactionDebitedFunds 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 valueSimulated caseReturned error code
01100Failed pay-in101101
01116Failed due to card limit reached101199
01125Failed due to inactive card101106
01131Reauthentication request from the bank (MIT only)101305
03022Failed 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

    }   

}


Recurring pay-in response
{

    "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"

}