SEPA Direct Debit Managed Mandate

Payment method properties

Markets (consumer)

EU/EEA countries: AT BE BG CY CZ DE DK EE ES FI FR GR HR HU IE IS IT LI LT LU LV MT NL NO PL PT RO SE SI SK

Non-EEA Countries with bilateral agreements: AD CH GB MC SM VA

Non-EEA Territories: BL GG GI IM JE NC PF PM TF WF

Processing currenciesEUR
Consumer currenciesEUR
Authentication methodsN/A
Authentication timeout1 day
Minimum payment amount0.10 EUR
Maximum payment amount1,000.00 EUR
Payment instrumentBANK_ACCOUNT
Recurring paymentsYes
Separate capturesNo
RefundFull - Partial - Multiple
Refund validity365 days
DisputesYes
Settlement riskYes

Make a SEPA Direct Debit payment

Before debiting an account via SEPA Direct Debit, we need to collect the consumer's name and bank account number in IBAN format. During the payment flow, the consumer must accept a mandate authorizing the debit — hosted within PPRO's redirect based checkout experience.

In this variant, PPRO handles the entire mandate management process on the merchant's behalf — covering consumer consent, mandate storage, email notifications, and lifecycle tracking — all under PPRO's own Creditor ID. Simply make use of the PPRO Hosted Payments Page and we take care of the rest.

To make a SEPA Direct Debit payment, you'll need to provide the following data at minimum when calling our /v1/payment-charges endpoint:

FieldDescription
paymentMethodSEPA_DIRECT_DEBIT_MANAGED_MANDATE
amount.valueThe amount to be paid in the smallest units of the currency used.
amount.currencyEUR
consumer.nameFull name of the consumer.
consumer.countryThe country of residence of the consumer.
consumer.emailThe consumer’s email address
instrument: BANK_ACCOUNT
details.iban
The IBAN of the consumer's bank account.
authenticationSettings: REDIRECT
settings.returnUrl
Specify the URL to which the consumer should be redirected after completing the payment. This is required for the REDIRECT payment flow.

Request:

POST /v1/payment-charges

{
    "paymentMethod": "SEPA_DIRECT_DEBIT_MANAGED_MANDATE",
    "amount": {
        "value": 1000,
        "currency": "EUR"
    },
    "consumer": {
        "name": "John Smith",
        "country": "FR",
        "email": "[email protected]"
    },
    "instrument": {
        "type": "BANK_ACCOUNT",
        "details": {
            "iban": "FR1420041010050500013M02606"
        }
    },
    "authenticationSettings": [
        {
            "type": "REDIRECT",
            "settings": {
                "returnUrl": "https://www.ppro.com"
            }
        }
    ]
}

Response:

Since SEPA Direct Debit Managed Mandate has additional consumer authentication step, you will see a request URL that leads the consumer to a SEPA Mandate consent page before processing the SEPA payment. Only after the successful consent is provided by the consumer, the payment processing is initiated.

{
    "id": "charge_Z3Sjo35rlj1LyOSZuGK0B",
    "paymentMethod": "SEPA_DIRECT_DEBIT_MANAGED_MANDATE",
    "paymentMedium": "ECOMMERCE",
    "scheduleType": "UNSCHEDULED",
    "instrumentId": "instr_uCPBUG3r7KXIScprhnUud",
    "currency": "EUR",
    "country": "FR",
    "status": "AUTHENTICATION_PENDING",
    "consumer": {
        "name": "John Smith",
        "email": "[email protected]",
        "country": "FR"
    },
    "authenticationMethods": [
        {
            "details": {
                "requestUrl": "https://authman.sandbox.lp-pl.ppro.com/v0/pages/?redirection_token=eyJhbGciOiJIUzUxMiJ9.eyJzZXNzaW9uIjp7InIiOiJjaGFyZ2VfWjNTam8zNXJsajFMeU9TWnVHSzBCIn19.07iC5c-G3uRRvYzsQJ8b6dK0FF2vlU3WSWOPmr-49pAwzMtsfcHS2qao8TvTBA23vT5-9cYBDi9VM49zKeefkA",
                "requestMethod": "GET"
            },
            "type": "REDIRECT"
        }
    ],
    "authorizations": [
        {
            "id": "authz_4vA9xc8PMLAOWy987XScn",
            "amount": 1000,
            "status": "AUTHENTICATION_PENDING",
            "createdAt": "2026-07-22T15:59:58.342Z",
            "updatedAt": "2026-07-22T15:59:58.342Z"
        }
    ],
    "captures": [],
    "refunds": [],
    "discards": [],
    "voids": [],
    "createdAt": "2026-07-22T15:59:58.069Z",
    "updatedAt": "2026-07-22T15:59:58.342Z",
    "_links": {
        "authorizations": {
            "href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/authorizations"
        },
        "captures": {
            "href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/captures"
        },
        "refunds": {
            "href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/refunds"
        },
        "discards": {
            "href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/discards"
        },
        "voids": {
            "href": "/v1/payment-charges/charge_Z3Sjo35rlj1LyOSZuGK0B/voids"
        }
    }
}

Pick the desired authentication method

REDIRECT

Redirect your consumer to the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestUrl.
For example, with the value of https://redirection-target.ppro.com/ using the returned $.authenticationMethods[?(@.type == "REDIRECT")].details.requestMethod HTTP method.


Handling the payment result

REDIRECT

  1. After the consumer completes the payment, they are redirected to the returnUrl specified in the payment charge creation request.
  2. Upon redirect back to your site, retrieve the latest payment status by performing a GET /v1/payment-charges/{paymentChargeId}. Use the returned status field to determine and display the final payment outcome to the consumer.
  3. Additionally, webhooks are triggered to notify you of the payment result. This ensures you receive the outcome even if the consumer closes their browser or fails to return to your website.

The payment charge status will initially be set to AUTHORIZATION_ASYNC. If a positive response is received and no reversals or refusals are returned by the consumer's bank, the charge will update to CAPTURED and you will be notified via webhook. Should a reversal or refusal occur, the status will change to FAILED with one of the reason codes outlined below.

Response codes

CodeISO definition
AC01Incorrect Account Number
AC04Consumer Bank Reversal
AC06Blocked Account
AC13Invalid Debtor Account Type
AG01Transaction Forbidden
AG02Invalid Bank Operation Code
AM04Insufficient Funds
AM05Duplication
BE05Unrecognised Initiating Party
CNORCreditor Bank Is Not Registered
DNORDebtor Bank Is Not Registered
ED05Settlement Failed
FF01Invalid File Format
MD01No Mandate
MD02Missing Mandatory Mandate Information in Mandate
MD06Refund Request By End Customer
MD07End Customer Deceased
MS02Not Specified Reason Customer Generated
MS03Not Specified Reason Agent Generated
RC01Bank Identifier Incorrect
RR01Missing Debtor Account Or Identification
RR02Missing Debtor Name Or Address
RR03Missing Creditor Name Or Address
RR04Regulatory Reason
SL01Specific Service Offered By Debtor Agent

Payment instrument

An instrument of type BANK_ACCOUNT will be created to support SEPA Direct Debit Managed Mandate payments. It securely stores the consumer's bank account details and mandate ID, and can be used to initiate recurring payments.

GET /v1/payment-instruments/{instrument-id}

Response

{
  "id": "instr_w8yFLFrhvqnzNaJU1g1GL",
  "details": {
    "holderName": "John Smith",
    "iban": "FR1420041010050500013M02606",
    "debitMandateId": "mandate_ABGpvWGn4lIabjWrPpoYQ"
  },
  "type": "BANK_ACCOUNT"
}

Sandbox testing



Did this page help you?