Skip to content
English
  • There are no suggestions because the search field is empty.

Recurring Payments

To initiate a recurring payment you can send a request with a payload with the following structure to our payment gateway:

{ "description": "The description that the payee sees on the bank statement", "reference": "Your unique alphanumeric id", "integration": { "isTest": "false" }, "paymentMethod": { "name": "sepa", "action": "pay", "recurring": true, "paymentType": "donation", "frequence": "month" }, "amount": { "value": 0.01, "currency": "EUR" }, "debitor": { "firstName": "Better", "lastName": "World", "addressLine1": "Barbara Strozzilaan 201", "postalCode": "1083 HN", "city": "Amsterdam", "countryCode": "NL", "emailAddress": "merchant@example.nl", "bankAccount": { "iban": "NL01BW00000000001", "accountHolder": "Better World" } }, "notification": { "callbackUrl": "https://yourcallbackurl.nl", "successUrl": "https://yoursuccessurl.nl", "failedUrl": "https://yourfailedurl.nl", "cancelledUrl": "https://yourscancelledurl.nl", "expiredUrl": "https://yourexpiredurl.nl", "rejectedUrl": "https://yoursrejectedurl.nl" } }

The main object in this request contains the basic information of the payment, like your reference and the description the payee will see on their bank statement.

The integration object indicates if it is a production payment or a test payment. Test payments will be rerouted to a page where you can select the desired status and will not be processed through the payment method.

The amount object contains the amount and the currency of the transaction. Currently we only process transactions in Euros.

In the paymentMethod object you can currently only use sepa as a payment method for recurring payments. The value in the frequency field will be used to create an installment for the recurring payment. The values in this field can be monthly, quarterly or yearly. As payment type you can use the values donation (default) or membership. These values will be used if you have an integration with a financial platform like Exact Online.

The debitor object will be used to create a debitor, a mandate and a bank account in our payment infrastructure for the processing of the recurring payments.

Based on this request you will receive a response with the following structure:

{ "transactionId": "Our UUID transaction id", "dateTime": "2026-01-18T12:35:54", "reference": "reference within your platform", "key": "your handshake key", "description": "description on banking statement consumer", "integration": { "IsTest": false }, "amount": { "value": 10.0, "currency": "EUR" }, "paymentMethod": { "name": "sepa", "action": "pay", "recurring": true, "paymentType": "donation", "frequence": "month" }, "debitor": { "debitorId": "DEBITOR-07f8-41a6-875f-af813cce8a19", "firstName": "Better", "lastName": "World", "addressLine1": "Barbara Strozzilaan 201", "postalCode": "1083 HN", "city": "Amsterdam", "countryCode": "NL", "languageCode": "nl", "emailAddress": "merchant@example.nl", "bankAccount": { "bankaccountId": "BANK-07f8-41a6-875f-af813cce8a19", "iban": "NL00BANK0000000001", "accountHolder": "J. Jansen" }, "mandate": { "mandateId": "MANDATE-07f8-41a6-875f-af813cce8a19", "scheme": "SEPA", "signing_date": "2023-01-18T12:35:54", "state": "created" } }, "notification": { "authorizationUrl": "https://payments.betterworld.nl/p/form/[HASH]", "callbackUrl": "https://yourcallbackurl.nl", "successUrl": "https://yoursuccessurl.nl", "failedUrl": "https://yourfailedurl.nl", "cancelledUrl": "https://yourscancelledurl.nl", "expiredUrl": "https://yourexpiredurl.nl", "rejectedUrl": "https://yoursrejectedurl.nl" }, "status": { "value": 700, "description": "Transaction Pending", "subStatus": { "code": "P703", "description": "An additional action is required: Redirect To Mandated Form" } } }

The main object is now expanded with our UUID for the transaction and the DateTime of the creation of the payment.

The debitor object now contains the unique identifier for the debitor in our platform and the same goes for the sub-object bankAccount and the mandate object.

In the notification object there is now an authorizationUrl included. This URL contains a page for the payee to digitally sign the mandate. The signing will be done with an iDEAL payment, so we can verify the bank account and account holder. After signing the mandate, the debitor and bank account will be activated in our platform and an installment for the chosen frequency will be created.