Accept a SEPA Direct Debit payment
Learn to accept SEPA Direct Debit payments.
Caution
Stripe can automatically present the relevant payment methods to your customers by evaluating currency, payment method restrictions, and other parameters.
- Follow the Accept a payment guide to build a Checkout integration that uses dynamic payment methods.
- If you don’t want to use dynamic payment methods, follow the steps below to manually configure the payment methods in your Checkout integration.
Accepting SEPA Direct Debit payments on your website consists of creating an object to track a payment, collecting payment method information and mandate acknowledgement, and submitting the payment to Stripe for processing. Stripe uses this payment object, the PaymentIntent, to track and handle all the states of the payment until the payment completes.
Note
SEPA Direct Debit is a delayed notification payment method, which means that funds aren’t immediately available after payment. A payment typically takes 5 business days to arrive in your account.
Determine compatibility
To support SEPA Direct Debit payments in Checkout, Prices for all line items must be expressed in Euro (currency code eur).
Accept a payment
Note
This guide builds on the foundational accept a payment Checkout integration.
Use this guide to learn how to enable SEPA Direct Debit—it shows the differences between accepting payments using dynamic payment methods and manually configuring payment methods.
Enable SEPA Direct Debit as a payment method
When creating a new Checkout Session, you need to:
- Add
sepa_to the list ofdebit payment_.method_ types - Make sure all your
line_use theitems eurcurrency.
curl https://api.stripe.com/v1/checkout/sessions \ -u ":" \ -d "line_items[0][price_data][currency]"=eur \ -d "line_items[0][price_data][product_data][name]"=T-shirt \ -d "line_items[0][price_data][unit_amount]"=2000 \ -d "line_items[0][quantity]"=1 \ -d mode=payment \ -d "payment_method_types[0]"=card \ -d "payment_method_types[1]"=sepa_debit \ --data-urlencode success_url="https://example.com/success"sk_test_BQokikJOvBiI2HlWgH4olfQ2
Fulfill your orders
After accepting a payment, learn how to fulfill orders.
Test your integration
Stripe provides several test numbers you can use to make sure your integration is ready for production.
Test IBANs
Use these test IBANs with the Payment Element to test your SEPA Direct Debit integration. The Payment Element automatically validates the IBAN and displays the mandate when you enter one of these test values.
| Account Number | Token | Description |
|---|---|---|
AT611904300234573201 |
pm_ |
The PaymentIntent status transitions from processing to succeeded. |
AT321904300235473204 |
pm_ |
The PaymentIntent status transitions from processing to succeeded after at least three minutes. |
AT861904300235473202 |
pm_ |
The PaymentIntent status transitions from processing to requires_. |
AT051904300235473205 |
pm_ |
The PaymentIntent status transitions from processing to requires_ after at least three minutes. |
AT591904300235473203 |
pm_ |
The PaymentIntent status transitions from processing to succeeded, but a dispute is immediately created. |
AT981904300000343434 |
pm_ |
The payment fails with a charge_ failure code due to payment amount causing account to exceed its weekly payment volume limit. |
AT601904300000121212 |
pm_ |
The payment fails with a charge_ failure code due to payment amount exceeding account's transaction volume limit. |
AT981904300002222227 |
pm_ |
The payment fails with an insufficient_ failure code. |
Handle refunds and disputes
The refund period for SEPA Direct Debit is up to 180 days after the original payment.
Customers can dispute a payment through their bank up to 13 months after the original payment and there’s no appeal process.
Learn more about SEPA Direct Debit disputes.