SEPA Direct Debit

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 timeoutN/A
Minimum payment amount0.10 EUR
Maximum payment amount1,000.00 EUR
Payment instrumentBANK_ACCOUNT
Recurring paymentsYes
Separate capturesYes
RefundFull - Partial - Multiple
Refund validity365 days
DisputesYes
Settlement riskYes

Make a SEPA Direct Debit payment

Before debiting an account via SEPA Direct Debit, you must collect the consumer's name and bank account number in IBAN format. During the payment flow, the consumer must accept a mandate authorising the debit — this mandate is hosted within your own checkout experience, not on a PPRO-hosted payments page.

In this variant, the mandate is generated on your side with a unique ID, presented to the consumer for acceptance, and stored by you as the merchant. To initiate a SEPA Direct Debit payment, ensure the following minimum consumer details are collected and provided when calling our API /v1/payment-charges endpoint:

FieldDescription
paymentMethodSEPA_DIRECT_DEBIT
amount.valueThe amount to be paid in the smallest units of the currency used.
amount.currencyEUR or alternative.
consumer.nameFull name of the consumer.
consumer.countryThe country of residence of the consumer.
instrument: BANK_ACCOUNT
details.iban
The IBAN of the consumer's bank account.
instrument: BANK_ACCOUNT
details.debitMandateId
Generate a mandate ID (maximum 35 alphanumeric characters).

The following standard authorization text should be shown so the customer can implicitly sign the mandate during the payment flow. Replace Name of Merchant with your creditor name.

By providing your payment details and confirming this payment, you authorize (A) PPRO Financial Ltd on behalf of <Name of Merchant> to send instructions to your bank to debit your account and (B) your bank to debit your account in accordance with those instructions. You have the right to request a refund from your bank according to the conditions specified in your agreement with it. A refund must be requested within 8 weeks starting from the date on which your account was debited. Your rights regarding this mandate are explained in a statement that you can obtain from your bank.

Request:

POST /v1/payment-charges

{
  "paymentMethod": "SEPA_DIRECT_DEBIT",
  "amount": {
    "value": 1000,
    "currency": "EUR"
  },
  "consumer": {
    "name": "John Smith",
    "country": "FR"
  },
  "instrument": {
    "type": "BANK_ACCOUNT",
    "details": {
      "iban": "FR1420041010050500013M02606",
      "debitMandateId": "YOURDIRECTDEBITMANDATEID12123"
    }
  }
}

Response:

Since SEPA Direct Debit has no additional consumer authentication step, you'll receive our standard payment charge response:

{
  "id": "charge_s9KGjildrixhGpcSOVyCF",
  "paymentMethod": "SEPA_DIRECT_DEBIT",
  "paymentMedium": "ECOMMERCE",
  "scheduleType": "UNSCHEDULED",
  "instrumentId": "instr_w8yFLFrhvqnzNaJU1g1GL",
  "currency": "EUR",
  "country": "FR",
  "status": "AUTHORIZATION_ASYNC",
  "consumer": {
    "name": "John Smith",
    "country": "FR"
  },
  "authenticationMethods": [],
  "authorizations": [
    {
      "id": "authz_jBssECRurIpwaBShQpADm",
      "amount": 1000,
      "status": "PROVIDER_CONFIRMATION_PENDING",
      "createdAt": "2025-04-14T14:02:57.939Z",
      "updatedAt": "2025-04-14T14:02:57.939Z"
    }
  ],
  "captures": [],
  "refunds": [],
  "discards": [],
  "voids": [],
  "createdAt": "2025-04-14T14:02:57.624Z",
  "updatedAt": "2025-04-14T14:02:57.939Z",
  "_links": {
    "authorizations": {
      "href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/authorizations"
    },
    "captures": {
      "href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/captures"
    },
    "refunds": {
      "href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/refunds"
    },
    "discards": {
      "href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/discards"
    },
    "voids": {
      "href": "/v1/payment-charges/charge_s9KGjildrixhGpcSOVyCF/voids"
    }
  }
}

Handling the payment result

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 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": "YOURDIRECTDEBITMANDATEID12123"
  },
  "type": "BANK_ACCOUNT"
}

Sandbox testing



Did this page help you?