Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Published by Scroll Versions from space ENWORK and version Documentation

Recurring mandates allow you to debit a customer's bank account repeatedly without requiring the customer to approve each payment individually. This is a common pattern for subscription models, one-click checkouts and adhoc merchant-initiated debits.

Multiexcerpt include
SpaceWithExcerptEN
MultiExcerptNamePlatform-Name
PageWithExcerptWording
supports recurring mandates for the two main scenarios: 

  • Unscheduled Customer-Initiated Transactions (CIT): One-click payments where the customer initiates payment manually but does not have to re-enter payment information.
  • Unscheduled Merchant-Initiated Transactions (MIT) & Recurring Payments: Payments initiated by you without any customer interaction, such as in the case of subscriptions or ad-hoc charges.


Implementation workflow

You can setup recurring mandates with

Multiexcerpt include
SpaceWithExcerptEN
MultiExcerptNamePartner-Name
PageWithExcerptWording
 by following 3 simple steps:

  1. Initial transaction with recurring intent
  2. Store credentials securely
  3. Subsequent transactions

1. Initial transaction

Setup intent for an recurring by passing the below information in the credentialOnFile object:

Code Block
{
  ...
  "credentialOnFile": {
    "type": "RECURRING",
    "initialPayment": true
  }
}


2. Credential storage

Store the account and mandate details based on the integration type upon receiving successful payment response to the initial transaction:

Integration typeAction

Hosted forms Hosted Payment Page or Direct Debit Hosted forms

Fetch the account and mandate details by calling Retrieve payment details by payment ID and store it

Code Block
{
  ...
  "paymentMethods": {
  "type": "DIRECTDEBIT",
  "directDebit": {
      ....
      "mandate": {
          "mandateId": "SEPA123456789",
          "dateOfSignature": "15.02.2025"
      },
      "account": {
          "code": "DE123456789",
          "number": "DE89370400440532013000",
          "accountHolderName": "John Doe",
          "bankName": "National Bank"
      }
    }
  }
}


Direct integration

Store the account and mandate details that you already have during the payment process.


3. Subsequent transactions

Submit the subsequent payment request with request parameters depending on the type of your integration

Integration typePayment parameters
Hosted forms - Hosted Payment Page or card hosted forms
  • Submit the credentialOnFile object as below: 
    Code Block
    {
      ...
      "credentialOnFile": {
          "type": "RECURRING",
          "initialPayment": false
      }
    }


  • Pass the account details in prefillInfo object and mandate details in mandate object, returned previously in the response of initial transaction, for a faster checkout 
    Code Block
    {
      "paymentMethods": {
          "type": "DIRECTDEBIT",
          "directDebit": {
              "mandate": {
                  "mandateId": "SEPA123456789",
                  "dateOfSignature": "15.02.2025"
              },
              "prefillInfo": {
                  "account": {
                      "code": "BYLADEM1KMD",
                      "number": "DE89370400440532013000",
                      "accountHolderName": "John Doe",
                      "bankName": "National Bank"
                  }
              }
          }
      }
    }
Direct Integration
  • Submit the credentialOnFile object as below: 
    Code Block
    {
      ...
      "credentialOnFile": {
          "type": "RECURRING",
          "initialPayment": false
      }
    }


  • Pass the account and mandate details as below: 
    Code Block
    {
      "paymentMethods": {
          "type": "DIRECTDEBIT",
          "directDebit": {
              "mandate": {
                  "mandateId": "SEPA123456789",
                  "dateOfSignature": "15.02.2025"
              },
              "account": {
                  "code": "BYLADEM1KMD",
                  "number": "DE89370400440532013000",
                  "accountHolderName": "John Doe",
                  "bankName": "National Bank"
              }
          }
      }
    }