Skip to main content

SEPA Direct Debit

Introduction

SEPA Direct Debit (DD) is a bank-to-bank payment method available across the Single Euro Payments Area, enabling merchants to collect funds directly from a customer's account in EUR-Currency. It is widely used for recurring billing and one-off payments, particularly in markets where bank transfers are preferred over cards. SEPA Direct Debit is designed to standardize euro-denominated bank payments across participating countries, and offers a secure and reliable method for debiting accounts with the customer's authorization.

info

SEPA DD operates as a "pull-based" payment method, where the merchant initiates the debit after receiving prior authorization from the customer.

This authorization is granted through a mandate, which is a legal document signed by the customer to allow the merchant to collect funds from their account. The mandate includes information such as the customer's IBAN, the merchant's unique creditor ID, a unique mandate reference to identify the agreement, and the terms under which funds may be collected. Once signed, the mandate permits the merchant to initiate future payments without requiring repeated customer input.

The merchant, referred to as the creditor in SEPA terminology, is the entity authorized to collect payments from customers by initiating direct debit transactions. As part of their role, the creditor is required to store and manage mandates securely. The Creditor Identifier used can either be inherited from MPS or configured as a merchant-specific Creditor Identifier.

The customer, who authorizes the payment by signing the mandate, is referred to as the debtor. The debtor agrees to allow the creditor to initiate direct debits from their account under the terms specified in the mandate. The debtor's bank processes the payment based on the mandate details provided, ensuring that the amount and conditions match the agreement established between the customer and the shop.

SEPA Schemes

SmartPay supports both SEPA Direct Debit schemes: SEPA Core (B2C) and SEPA B2B.

SEPA Core (B2C) is the default scheme and can be used for charging standard bank accounts. It is governed by consumer protection regulations, including a right to dispute transactions within 8 weeks. Disputed transactions will be immediately returned to the customer without any option for the merchant to hold funds back. The mandate does not require pre-validation by the customer's bank which simplifies signing but increases exposure to chargeback risks. SEPA B2C is suitable for merchants offering recurring services for customers, such as digital subscriptions or memberships. For other use-cases, especially if they include shipment of physical goods, merchants must be considering the 8-weeks dispute risk.

SEPA B2B is available exclusively for designated business accounts and requires the customer to instruct their bank to pre-authorize the mandate before the first debit can be collected. The scheme does not offer chargeback rights for authorized transactions, making it a preferred option for B2B merchants with contractual agreements. Due to the additional validation and stricter format, B2B mandates carry a lower risk of unpaid debts and reduce operational exposure for the merchant.

important

If you are unsure which SEPA scheme to implement, contact your assigned Product Solution Specialist (PSS) for guidance.

For implementation details, please refer to documentation pages:

Supported SmartPay SEPA Mandate Options

Integration OptionIntegration Reference  Core Scheme    B2B Scheme  Mandate managed
by JPM MPS
Mandate managed
by Merchant
    JPM   MPS   
   as Creditor    
    Merchant   
   as Creditor    
SDK integration
(Guest)
Checkout Web SDK
SDK integration
(Stored)
Checkout Web SDK
API-only
integration
Mandate management

The table outlines the available SmartPay SEPA mandate integration options and their supported features. The SDK integrations (Guest and Stored) support only SEPA Core (B2C) payments, with JPM MPS acting as the creditor. Mandates are created, signed, and stored by JPM MPS, and merchants are not involved in mandate handling. Mandate management via API supports both SEPA Core and B2B transactions. It allows either JPM MPS or the merchant to act as the creditor. When merchants act as creditors, they are responsible for mandate creation, signing and storage. SDK integrations are limited to SEPA Core with JPM MPS creditor setup. Mandate Management via API is required for B2B and custom Creditor ID handling.

SmartPay Integration Flow for SEPA

SmartPay enables merchants to accept SEPA Direct Debit payments through API and SDK integrations. Payments are processed synchronously, providing immediate transaction status. Mandates can either be stored for future payments or collected as one-time mandates during checkout. Mandate creation and management are handled either by JPM MPS or by the merchant, depending on the onboarding configuration. The SmartPay API supports mandate management and payment processing, while the SDKs simplify the customer authorization flow during checkout in line with SEPA requirements.

Please refer to our SEPA integration options table for more information on the appropriate setup. Our Product Solution Specialist (PSS) are at your disposal for guidance.

SEPA DD Stored Payment Options

SmartPay supports SEPA Direct Debit for one-time and recurring payments. Customer mandates are collected and managed within SmartPay's Stored Payment Options (SPO) system to ensure SEPA compliance. Please refer to our Get SPO endpoint for more information.

info

When using Mandate Management, additional mandate-related data is included in the request and response payloads. The additionalData placement varies between API responses but is consistent across create and update operations.

{
"name": "SEPA Direct Debit B2B",
"code": "SEPADDB2B", //Or "SEPADDCORE"
"carrierNumber": "DE******",
"reference": "U861vQBGPgSn8iPeNfGH5",
"isDefault": false,
"isExpired": false,
"expiresSoon": false,
"expiryDate": "12/2999",
"additionalData": [
{
"name": "dd.creditorName",
"value": "J.P. Morgan Mobility Payments Solutions"
},
{
"name": "dd.creditorIdentifier",
"value": "LU11ZZZ0000000000000001491"
},
{
"name": "dd.creditorAddressCity",
"value": "Munich"
},
{
"name": "dd.creditorAddressCountryCode",
"value": "DE"
},
{
"name": "dd.creditorAddressNumber",
"value": "456"
},
{
"name": "dd.creditorAddressLine1",
"value": "Leopoldstr."
},
{
"name": "dd.creditorPostCode",
"value": "80807"
},
{
"name": "dd.mandateStatus",
"value": "ACTIVE"
},
{
"name": "dd.mandateReference",
"value": "HM3BY4H***V4F5SQDXYZD5"
},
{
"name": "dd.mandateDateOfSignature",
"value": "2021-02-23"
},
{
"name": "dd.mandateId",
"value": "224e1e25-12d5-4015-8d18-64383a14d50e"
},
{
"name": "dd.mandateVersionTag",
"value": "0001"
},
{
"name": "dd.debtorBankName",
"value": "Banca Frencesa new"
},
{
"name": "dd.debtorBankBic",
"value": "PSSTFRPPNEW"
}
]
}

SEPA DD Additional Data Parameters

important

For SEPA Direct Debit with Mandate Management, the API responses consistently include mandate-related data under the additionalData field. This structure is uniform across all SEPA payment options and remains consistent between create and update operations.

NameDescriptionTypeMax Length
additionalDataA list of "name" and "value" pairs.Array-
    - dd.creditorNameName of the creditor created in the mandate.String70
    - dd.creditorIdentifierCreditor ID created in the mandate.String35
    - dd.creditorAddressCityCity in creditor address created in the mandate.String35
    - dd.creditorAddressCountryCodeCountry code of the creditor's address.String2
    - dd.creditorAddressNumberAddress number of the creditor's address.String10
    - dd.creditorAddressLine1Address line 1 of the creditor's address.String60
    - dd.creditorPostCodePostcode of the creditor's address.String10
    - dd.merchantNameName of the merchant in the mandate.String30
    - dd.mandateStatusPossible values:
  • CREATED: Mandate created and not activated.
  • ACTIVE: Mandate active and can be used for payments.
  • CLOSED: Mandate is either canceled, used or expired.
String-
    - dd.mandateReferenceReference number for the mandate.String35
    - dd.mandateDateOfSignatureDate of signature of B2B or CORE mandate.String70
    - dd.mandateIdMandate ID.String39
    - dd.mandateVersionTagVersion tag of the mandate.String4
    - dd.debtorBankNameDebtor Bank Name from Create Mandate API.String70
    - dd.debtorBankBicDebtor Bank Bic from Create Mandate API.String11
info

These "name/value pairs" represent SEPA-specific mandate attributes that can be included in additionalData and it in turn help SmartPay manage SEPA Direct Debit transactions efficiently by storing relevant mandate information within the payment option.

SEPA Test Data

Test data is provided to support simulation of payment flows across all available payment options during integration and testing. It facilitates validation of API behavior, verification of SDK rendering, and end-to-end troubleshooting without processing real transactions. The same test data applies to both SEPA Core and B2B payment flows.

Debtor Bank Accounts

IBANSWIFT / BICCountryResult
DE89370400440532013000COBADEFFXXXGermanySuccess
DE72710900000147433891GENODEF1BGLGermanySuccess
DE75512108001245126199SOGEDEFFXXXGermanySuccess
MT84MALT011000012345MTLCAST001SMALTMTMTMaltaSuccess
FR1420041010050500013M02606PSSTFRPPLILFranceSuccess
PL61109010140000071219812874WBKPPLPPXXXPolandSuccess
IT60X0542811101000000123456BLOPIT22ItalySuccess
ES9121000418450200051332CAIXESBBXXXSpainSuccess
AT483200000012345864RLNWATWWXXXAustriaSuccess