The Single Euro Payments Area (SEPA) is an initiative of the European Union to simplify payments within and across member countries. They established and enforced banking standards to allow for the direct debiting of every EUR-denominated bank account within the SEPA region.
In order to debit an account, businesses must collect their customer’s name and bank account number in IBAN format. During the payment flow, customers must accept a mandate that gives the business an authorization to debit the account. Stripe is able to generate this mandate for businesses to present to their customers. Locate the ID of the mandate used for this payment on the Charge under the payment_method_details.sepa_debit.mandate property. Then, use the mandate ID to retrieve the Mandate.
SEPA Direct Debit is a reusable, delayed notification payment method. This means that it can take up to 14 business days to receive notification on the success or failure of a payment after you initiate a debit from the customer’s account, though the average is five business days.
SEPA Direct Debit transactions have a limit of 10,000 EUR each. For new users, there’s an additional weekly limit of 10,000 EUR, which quickly increases as you process more SEPA direct debit payments. If you need higher limits, contact support.
Using SEPA Direct Debit requires you to complete additional identity verification steps. We prompt you to complete these steps after you request access from the Payment methods settings. If you require further assistance, please contact support.
Preview the payment flow using the test information below or view the sample code on GitHub.
- Any name
- Any email address
- Test account number:
You don’t actually have to integrate SEPA Direct Debit and other payment methods individually. If you use our front-end products, Stripe automatically determines the most relevant payment methods to display. Follow a quickstart for one of our hosted UIs:
After setting up your payment form, activate the payment methods you want using the Stripe Dashboard.
Other payment products
The following Stripe products also support adding SEPA Direct Debit from the Dashboard:
If you prefer to manually list payment methods or want to save SEPA Direct Debit details for future payments, see the following guides:
Debit notification emails
The SEPA Direct Debit rulebook requires that you notify your customer each time you debit their account. For this case, by default, Stripe automatically sends the customer an email.
When processing SEPA Direct Debit payments using the Stripe Creditor ID, debit notification emails are always sent automatically by Stripe.
If you decide to send your customer a custom notification:
- Turn off Stripe emails in the Stripe Dashboard email settings. However, if you use the Sources API, you can only control emails using mandate.notification_method (for more information, see notifying customers of recurring payments).
- Use the payment_intent.processing event to trigger debit initiation emails.
- The email must include:
- The last 4 digits of the debtor’s bank account
- The mandate reference (
sepa_debit[reference]on the Mandate)
- The amount to be debited
- Your SEPA creditor identifier
- Your contact information
- It’s standard to send notifications at least 14 calendar days before you create a payment. However, SEPA rules let you send notifications closer to the payment date—just make sure your mandate clearly states when customers can expect to receive a notification. The mandate provided by Stripe specifies this can happen up to two calendar days in advance of future payments, allowing you to send notifications at payment creation. For recurring payments of the same amount (for example, a subscription of a fixed amount), you may indicate multiple upcoming debits with corresponding dates in a single notice.
Creditor Identifiers (Creditor ID)
A SEPA Creditor Identifier (Creditor ID) is an ID associated with each SEPA Direct Debit payment that identifies the company requesting the payment. While companies may have multiple creditor identifiers, each creditor identifier is unique and allows your customers to easily identify the debits on their account.
By default your Stripe account is configured to use a Stripe Creditor ID when collecting SEPA Direct Debit Payments.
Stripe Payments will appear on bank statements alongside your configurable Stripe statement descriptor. We recommend configuring a recognizable statement descriptor to ensure customers recognize payments and to reduce the risk of disputes. If you’re using the Stripe Creditor ID, we also recommend you use Stripe Checkout to collect mandates from your customers for SEPA Direct Debits.
If you’re based in the EU, Stripe recommends that you use your own Creditor ID to both reduce dispute rates and improve your customer experience. You can configure your own Creditor ID on the Payment Method Settings page. When using your own Creditor ID your name will appear on statements instead of Stripe’s and you can use the Stripe statement descriptor for per-payment customization.
After you’ve collected live SEPA Direct Debit payments on your account, you can’t change your Creditor ID in the dashboard. If you need help with this issue, contact Stripe support for information about migrating to a new Creditor ID.
SEPA Debit payment failures can occur for a number of reasons, such as a customer’s account being frozen or having insufficient funds.
When a payment fails, Stripe provides a failure reason in the
failure_code field on the
Charge. Stripe also provides an extended description in the
failure_message field on the
The following table lists the possible SEPA Debit payment failure codes with recommended next steps.
|Failure code||Explanation||Next steps|
|refer_to_customer||We don’t have detailed information about the payment failure because your customer’s bank didn’t provide a reason code.||Reach out to your customer for additional information.|
|insufficient_funds||The payment process can’t be completed because your customer’s bank account lacks the necessary funds.||Reach out to your customer to verify that they have the required funds, then retry the transaction.|
|debit_disputed||Your customer requested that their bank refund this payment.||Reach out to your customer to resolve any dispute, then retry the transaction.|
|authorization_revoked||Your customer revoked their authorization and refused this payment.||Reach out to your customer to understand the reasons for this revocation, then collect a new mandate and retry the transaction.|
|debit_not_authorized||The payment lacks an authorized mandate.||Collect a new mandate and retry the transaction.|
|account_closed||The payment can’t be processed because your customer’s bank account is closed.||Reach out to your customer for new account details, then try the transaction again.|
|bank_account_restricted||The payment can’t be processed because your customer’s bank has blocked Direct Debits, due to either the bank’s actions or your customer’s.||Reach out to your customer to understand the reason for the block. If the bank unblocks the account, attempt the transaction again.|
|debit_authorization_not_match||The transaction can’t be processed due to missing or incorrect mandate information.||Collect a new mandate from your customer, then attempt the transaction again.|
|recipient_deceased||The mandate was set up on the account of a possibly deceased individual.||Verify your customer’s status before proceeding further.|
|branch_does_not_exist||The payment can’t be processed because the bank branch associated with your customer’s IBAN does not exist.||Reach out to your customer to provide new bank details, then attempt the transaction again.|
|incorrect_account_holder_name||The transaction can’t be processed because your customer’s account information is missing or incorrect.||Collect a new mandate and ask your customer to provide their name and address exactly as it appears on their bank account. Then, retry the transaction.|
|invalid_account_number||The transaction can’t be processed because the IBAN provided by your customer is incorrect.||Reach out to your customer for correct bank details, then attempt the transaction again.|
|generic_could_not_process||Stripe can’t identify a particular reason for the payment failure.||Reach out to https://stripe.com/support for more information.|
SEPA Direct Debit provides a dispute process for customers to dispute payments.
Customers can dispute a payment through their bank on a “no questions asked” basis up to eight weeks after their account is debited. Any disputes within this period are automatically honored.
After eight weeks and up to 13 months, a customer can only dispute a payment with their bank if the debit is considered unauthorized. If this occurs, we automatically provide the bank with the mandate that the customer approved. This does not guarantee cancellation of the dispute; the bank can still decide that the debit was unauthorized and the customer is entitled to a refund.
A dispute can also occur if the bank is unable to debit the customer’s account because of an issue (for example, the account is frozen or has insufficient funds), but has already provided the funds to make the charge successful. If this occurs, the bank reclaims the funds in the form of a dispute.
When a dispute is created, a
charge.dispute.created webhook event is sent and Stripe deducts the dispute amount and dispute fee from your Stripe balance. The dispute fee varies based on your account’s default settlement currency:
|Settlement Currency||Dispute Fee|
Unlike credit card disputes, SEPA Direct Debit disputes are final and there is no process for appeal. If a customer successfully disputes a payment, you must contact them if you want to resolve the situation. If you’re able to come to an arrangement and your customer is willing to return the funds to you, they must make a new payment.
In general, each dispute includes the reason for its creation, but this varies from country to country. For example, disputed payments in Germany do not provide additional information for privacy reasons.
If a payment is disputed, and that payment is associated with a multi-use mandate, that mandate could be deactivated. Make sure to check the status of such mandates after a dispute. You have to recollect mandate acceptance from your customers if their previous mandate is deactivated.
SEPA Direct Debit payments are subject to a 5 business day payout timing if your current payout timing is less than 5 business days or 7 calendar days. When you reach 35,000 USD of SEPA Direct Debit processing volume, payout timing for SEPA Direct Debit payments returns to normal.
Customers can dispute a payment with their bank even after it has been refunded, resulting in two credits for the same payment. To prevent fraud, refunds may be disabled upon first refund attempt until your account has been reviewed. The review can take up to 2 business days. If you need assistance processing a refund please contact us via support.stripe.com/contact for further information.
For accounts with refunds enabled, Stripe recommends issuing refunds on SEPA Direct Debit payments only when:
- It is a trusted and verified customer
- You have confirmed with the customer that you’re refunding the payment
- 7 business days have passed since you initiated the payment
Refunds for payments made with SEPA Direct Debit must be submitted within 180 days from the date of the original payment. Refunds require additional time to process (typically three to four business days). If you accidentally debit your customer, please contact them immediately to avoid a payment dispute.
SEPA does not explicitly label refunds when the funds are deposited back to a customer’s bank account. Instead, refunds are processed as a credit and include a visible reference to the original payment’s statement descriptor.
When issuing a refund, you should inform your customer immediately that the refund can take up to five business days to arrive in their bank account.