# Set up a subscription with SEPA Direct Debit

Learn how to create and charge a subscription with SEPA Direct Debit.

# Advanced integration


Learn how to create and charge for a *subscription* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) with SEPA Direct Debit.

> If you’re a new user, use the [Payment Element](https://docs.stripe.com/payments/payment-element.md) instead of using Stripe Elements as described in this guide. The Payment Element provides a low-code integration path with built-in conversion optimisations. For instructions, see [Build a subscription](https://docs.stripe.com/billing/subscriptions/build-subscriptions.md?payment-ui=elements).

## Create a product and price [Dashboard]

[Products](https://docs.stripe.com/api/products.md) represent the item or service you’re selling. [Prices](https://docs.stripe.com/api/prices.md) define how much and how frequently you charge for a product. This includes how much the product costs, what currency you accept, and whether it’s a one-off or recurring charge. If you only have a few products and prices, create and manage them in the Dashboard.

This guide uses a stock photo service as an example and charges customers a 15 EUR monthly subscription. To model this:

1. Go to the [Products](https://dashboard.stripe.com/products?active=true) page and click **Create product**.
2. Enter a **Name** for the product. You can optionally add a **Description** and upload an image of the product.
3. Select a **Product tax code**. Learn more about [product tax codes](https://docs.stripe.com/tax/tax-codes.md).
4. Select **Recurring**. Then enter **15** for the price and select **EUR** as the currency.
5. Choose whether to **Include tax in price**. You can either use the default value from your [tax settings](https://dashboard.stripe.com/test/settings/tax) or set the value manually. In this example, select **Auto**.
6. Select **Monthly** for the **Billing period**.
7. Click **More pricing options**. Then select **Flat rate** as the pricing model for this example. Learn more about [flat rate](https://docs.stripe.com/products-prices/pricing-models.md#flat-rate) and other [pricing models](https://docs.stripe.com/products-prices/pricing-models.md).
8. Add an internal **Price description** and [Lookup key](https://docs.stripe.com/products-prices/manage-prices.md#lookup-keys) to organise, query and update specific prices in the future.
9. Click **Next**. Then click **Add product**.

After you create the product and the price, record the price ID so you can use it in subsequent steps. The pricing page displays the ID and it looks similar to this: `price_G0FvDp6vZvdwRZ`.

## Create a customer [Server-side]

To create a subscription, you need to add a customer to reuse payment methods and track recurring payments.

> #### Use the Accounts v2 API to represent customers
> 
> The Accounts v2 API is generally available for Connect users, and in public preview for other Stripe users. If you’re part of the Accounts v2 preview, you need to specify a [preview version](https://docs.stripe.com/api-v2-overview.md#sdk-and-api-versioning) in your code.
> 
> To join the Accounts v2 preview, go to [Account previews and features](https://dashboard.stripe.com/settings/previews) in your Dashboard and enable **Reusable payment methods for Global Payouts**.
> 
> For most use cases, we recommend [modelling your customers as customer-configured Account objects](https://docs.stripe.com/accounts-v2/use-accounts-as-customers.md) instead of using [Customer](https://docs.stripe.com/api/customers.md) objects.

Create a customer-configured [Account](https://docs.stripe.com/api/v2/core/accounts/create.md#v2_create_accounts-configuration-customer) or [Customer](https://docs.stripe.com/api/customers/create.md) when your customer creates an account with your business or when saving a payment method. Associate the object’s ID with your own internal representation of a customer.

Create a new customer or retrieve an existing one to associate with this payment.

#### Accounts v2

Set `configuration.customer` to an empty object to enable the customer configuration on this account.

```curl
curl -X POST https://api.stripe.com/v2/core/accounts \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "contact_email": "jenny.rosen@example.com",
    "display_name": "Jenny Rosen",
    "configuration": {
        "customer": {}
    },
    "include": [
        "configuration.customer"
    ]
  }'
```

#### Customers v1

```curl
curl https://api.stripe.com/v1/customers \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "name=Jenny Rosen" \
  --data-urlencode "email=jenny.rosen@example.com"
```

## Create the subscription [Server-side]

Create the *subscription* (A Subscription represents the product details associated with the plan that your customer subscribes to. Allows you to charge the customer on a recurring basis) using the customer and price IDs. Return to the client side the `client_secret` from either the latest invoice’s [confirmation_secret.client_secret](https://docs.stripe.com/api/invoices/object.md#invoice_object-confirmation_secret) or, for subscriptions that don’t collect a payment up front, the [pending_setup_intent](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-pending_setup_intent). Additionally, set:

- [payment_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-payment_behavior) to `default_incomplete` to simplify collection of the SEPA Direct Debit mandate.
- [save_default_payment_method](https://docs.stripe.com/api/subscriptions/object.md#subscription_object-payment_settings-save_default_payment_method) to `on_subscription` to save the payment method as the default for the subscription when the payment succeeds. Saving a default payment method increases the success rate of future subscription payments.

#### Ruby

```ruby

# Don't put any keys in code. See https://docs.stripe.com/keys-best-practices.
# Find your keys at https://dashboard.stripe.com/apikeys.
client = Stripe::StripeClient.new('<<YOUR_SECRET_KEY>>')

post '/create-subscription' do
  content_type 'application/json'
  data = JSON.parse(request.body.read)
  customer_id = cookies[:customer]
  price_id = data['priceId']

  subscription = client.v1.subscriptions.create(
    customer: customer_id,
    items: [{
      price: price_id,
    }],
    payment_behavior: 'default_incomplete',
    payment_settings: {save_default_payment_method: 'on_subscription'},
    expand: ['latest_invoice.confirmation_secret', 'pending_setup_intent']
  )

  if subscription.pending_setup_intent != nil
    { type: 'setup', clientSecret: subscription.pending_setup_intent.client_secret }.to_json
  else
    { type: 'payment', clientSecret: subscription.latest_invoice.confirmation_secret.client_secret }.to_json
  end
end
```

## Collect payment method details and mandate acknowledgment [Client-side]

You’re ready to collect payment information on the client with [Stripe Elements](https://docs.stripe.com/payments/elements.md). Elements is a set of pre-built UI components for collecting payment details.

A Stripe Element contains an iframe that securely sends the payment information to Stripe over an HTTPS connection. The checkout page address must also start with https:// rather than http:// for your integration to work.

You can test your integration without using HTTPS. [Enable it](https://docs.stripe.com/security/guide.md#tls) when you’re ready to accept live payments.

### Set up Stripe Elements

#### HTML + JS

Stripe Elements is automatically available as a feature of Stripe.js. Include the Stripe.js script on your payment page by adding it to the `head` of your HTML file. Always load Stripe.js directly from js.stripe.com to remain PCI compliant. Don’t include the script in a bundle or host a copy of it yourself.

```html
<head>
  <title>Submit Payment</title>
  <script src="https://js.stripe.com/endive/stripe.js"></script>
</head>
```

Create an instance of Elements with the following JavaScript on your payment page. Pass the `mode` and `currency` to enable the Payment Element to collect SEPA Direct Debit payment details:

```javascript
const stripe = Stripe('<<YOUR_PUBLISHABLE_KEY>>');
const options = {
  mode: 'setup',
  currency: 'eur',
};
const elements = stripe.elements(options);
```

### Add the Payment Element

The Payment Element needs a place to live in your payment form. Create an empty DOM node (container) with a unique ID in your payment form. The Payment Element automatically displays the SEPA Direct Debit form and mandate acceptance text when SEPA Debit is enabled:

```html
<form action="/form" method="post" id="setup-form">
  <div id="payment-element">
    <!-- The Payment Element will be inserted here. -->
  </div>

  <!-- Add the client_secret from the SetupIntent as a data attribute   -->
  <button id="submit-button" data-secret="{CLIENT_SECRET}">
    Set up SEPA Direct Debit
  </button>

  <!-- Used to display form errors. -->
  <div id="error-message" role="alert"></div>
</form>
```

When the form loads, [create an instance](https://docs.stripe.com/js/elements_object/create_element?type=payment) of the Payment Element and mount it to the Element container. The Payment Element automatically collects the customer’s name, email, IBAN, and displays the mandate acceptance text:

```javascript
// Create and mount the Payment Element
const paymentElement = elements.create('payment');
paymentElement.mount('#payment-element');
```

#### React

Install [React Stripe.js](https://www.npmjs.com/package/@stripe/react-stripe-js) and the [Stripe.js loader](https://www.npmjs.com/package/@stripe/stripe-js) from the npm public registry:

```bash
npm install --save @stripe/react-stripe-js @stripe/stripe-js
```

Pass the setup details (`mode: 'setup'`, `currency`) to the [Elements Provider](https://docs.stripe.com/sdks/stripejs-react.md?ui=elements#elements-provider):

```jsx
import React from 'react';
import {loadStripe} from '@stripe/stripe-js';
import {Elements} from '@stripe/react-stripe-js';
import PaymentSetupForm from './PaymentSetupForm';

// Make sure to call `loadStripe` outside of a component's render to avoid
// recreating the `Stripe` object on every render.
const stripePromise = loadStripe('<<YOUR_PUBLISHABLE_KEY>>');

export default function App() {
  const options = {
    mode: 'setup',
    currency: 'eur',
  };

  return (
    <Elements stripe={stripePromise} options={options}>
      <PaymentSetupForm />
    </Elements>
  );
}
```

Create a setup form component that renders the [PaymentElement](https://docs.stripe.com/sdks/stripejs-react.md#element-components):

```jsx
import React from 'react';
import {PaymentElement} from '@stripe/react-stripe-js';

export default function PaymentSetupForm() {
  return (
    <form id="setup-form">
      <PaymentElement />
      <button type="submit">Set up SEPA Direct Debit</button>
      <div id="error-message" role="alert"></div>
    </form>
  );
}
```

## Submit the payment method details to Stripe [Client-side]

Use [confirmSepaDebitPayment](https://docs.stripe.com/js/payment_intents/confirm_sepa_debit_payment#stripe_confirm_sepa_debit_payment-with_element) or, for subscriptions that don’t collect a payment up front, [confirmSepaDebitSetup](https://docs.stripe.com/js/setup_intents/confirm_sepa_debit_setup#stripe_confirm_sepa_debit_setup-with_element) to confirm the subscription and create a SEPA Direct Debit [PaymentMethod](https://docs.stripe.com/api/payment_methods.md). Include the customer’s name and email address in the `payment_method.billing_details` properties.

#### HTML + JS

```javascript
// Define stripe with your publishable key
var stripe = Stripe('pk_test_1234');

// Get the IBAN information from your element
var iban = document.getElementById('iban-element');

const form = document.getElementById('payment-form');
const accountholderName = document.getElementById('accountholder-name');
const email = document.getElementById('email');

form.addEventListener('submit', async(event) => {
  event.preventDefault();
  // Create the subscription
  const res = await fetch('/create-subscription', {
    method: 'POST',
  });
  const {type, clientSecret} = await res.json();
  const confirmIntent = type === 'setup' ? stripe.confirmSepaDebitSetup : stripe.confirmSepaDebitPayment;

  const {error} = await confirmIntent(
    clientSecret,
    {
      payment_method: {
        sepa_debit: iban,
        billing_details: {
          name: accountholderName.value,
          email: email.value,
        },
      },
    }
  );
});
```

#### React

```jsx
import React, {useState} from 'react';
import {useStripe, useElements, IbanElement} from '@stripe/react-stripe-js';
import IbanForm from './IbanForm';

export default function PaymentSetupForm() {
  const stripe = useStripe();
  const elements = useElements();

  const handleSubmit = async (event) => {
    // We don't want to let default form submission happen here,
    // which would refresh the page.
    event.preventDefault();

    if (!stripe || !elements) {
      // Stripe.js hasn't yet loaded.
      // Make sure to disable form submission until Stripe.js has loaded.
      return;
    }

    const iban = elements.getElement(IbanElement);

    // For brevity, this example is using uncontrolled components for
    // the accountholder's name and email. In a real world app, you'd
    // probably want to use controlled components.
    // https://reactjs.org/docs/uncontrolled-components.html
    // https://reactjs.org/docs/forms.html#controlled-components

    const accountholderName = event.target['accountholder-name'];
    const email = event.target.email;

    // Create the subscription
    const res = await fetch('/create-subscription', {
      method: 'POST',
    });
    const {type, clientSecret} = await res.json();
    const confirmIntent = type === 'setup' ? stripe.confirmSepaDebitSetup : stripe.confirmSepaDebitPayment;

    const {error} = await confirmIntent(clientSecret, {
      payment_method: {
        sepa_debit: iban,
        billing_details: {
          name: accountholderName.value,
          email: email.value,
        },
      },
    });

    if (error) {
      // Show error to your customer
      console.log(error.message);
    } else {
      // Show a confirmation message to your customer
    }
  };

  return (
    <IbanForm onSubmit={handleSubmit} disabled={!stripe} />
  );
}
```

## Set the default payment method [Server-side]

You need to add a stored payment method to the customer so future payments are successful. Set the payment method you collected at the top-level of the object representing the customer (either a customer-configured [Account](https://docs.stripe.com/api/v2/core/accounts/object.md) or [Customer](https://docs.stripe.com/api/customers/object.md)) and as the [default payment method](https://docs.stripe.com/api/customers/update.md#update_customer-invoice_settings-default_payment_method) for *invoices* (Invoices are statements of amounts owed by a customer. They track the status of payments from draft through paid or otherwise finalized. Subscriptions automatically generate invoices, or you can manually create a one-off invoice):

#### Accounts v2

If you use customer-configured Account objects to represent your customers, set [configuration.customer.billing.default_payment_method](https://docs.stripe.com/api/v2/core/accounts/update.md#v2_update_accounts-configuration-customer-billing-default_payment_method):

```curl
curl -X POST https://api.stripe.com/v2/core/accounts/{{CUSTOMERACCOUNT_ID}} \
  -H "Authorization: Bearer <<YOUR_SECRET_KEY>>" \
  -H "Stripe-Version: 2026-09-30.preview" \
  --json '{
    "configuration": {
        "customer": {
            "billing": {
                "default_payment_method": "{{PAYMENTMETHOD_ID}}"
            }
        }
    }
  }'
```

#### Customers v1

If you use `Customer` objects to represent your customers, set [invoice_settings.default_payment_method](https://docs.stripe.com/api/customers/update.md#update_customer-invoice_settings-default_payment_method):

```curl
curl https://api.stripe.com/v1/customers/{{CUSTOMER_ID}} \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "invoice_settings[default_payment_method]={{PAYMENTMETHOD_ID}}"
```

## Manage subscription status [Client-side]

A subscription can become `active` while its first payment is still processing, so don’t use the subscription status alone to determine whether the payment succeeded. Before fulfilling goods or services, wait for the `invoice.paid` event or confirm that the underlying *PaymentIntent* (The Payment Intents API tracks the lifecycle of a customer checkout flow and triggers additional authentication steps when required by regulatory mandates, custom Radar fraud rules, or redirect-based payment methods) has a `succeeded` status, and verify that the related subscription is `active`.

When payments fail, the status changes to the **Subscription status** configured in your [automatic collection settings](https://docs.stripe.com/invoicing/automatic-collection.md). Notify the customer after a failure and [charge them with a different payment method](https://docs.stripe.com/billing/subscriptions/overview.md#requires-payment-method).

## Test the integration

You can test your integration using the IBANs below. The payment method details are successfully collected for each IBAN but exhibit different behavior when charged.

##### 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.

### AT

| Account Number       | Token                                         | Description                                                                                                                                                                                                        |
| -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| AT611904300234573201 | pm_sepaDebit_success_at                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| AT321904300235473204 | pm_sepaDebit_successDelayed_at                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| AT861904300235473202 | pm_sepaDebit_failed_at                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| AT051904300235473205 | pm_sepaDebit_failedDelayed_at                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| AT201904300000454545 | pm_sepaDebit_mandateRevoked_at                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| AT591904300235473203 | pm_sepaDebit_disputed_at                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| AT981904300000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_at      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| AT601904300000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_at | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| AT981904300002222227 | pm_sepaDebit_insufficientFunds_at             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| AT511904300000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### BE

| Account Number   | Token                                         | Description                                                                                                                                                                                                        |
| ---------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| BE62510007547061 | pm_sepaDebit_success_be                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| BE78510007547064 | pm_sepaDebit_successDelayed_be                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| BE68539007547034 | pm_sepaDebit_failed_be                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| BE51510007547065 | pm_sepaDebit_failedDelayed_be                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| BE12510000454545 | pm_sepaDebit_mandateRevoked_be                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| BE08510007547063 | pm_sepaDebit_disputed_be                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| BE90510000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_be      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| BE52510000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_be | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| BE90510002222227 | pm_sepaDebit_insufficientFunds_be             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| BE43510000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### HR

| Account Number        | Token                                         | Description                                                                                                                                                                                                        |
| --------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| HR7624020064583467589 | pm_sepaDebit_success_hr                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| HR6323600002337876649 | pm_sepaDebit_successDelayed_hr                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| HR2725000096983499248 | pm_sepaDebit_failed_hr                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| HR6723600004878117427 | pm_sepaDebit_failedDelayed_hr                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| HR9324020060000454545 | pm_sepaDebit_mandateRevoked_hr                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| HR8724840081455523553 | pm_sepaDebit_disputed_hr                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| HR7424020060000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_hr      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| HR3624020060000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_hr | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| HR7424020060002222227 | pm_sepaDebit_insufficientFunds_hr             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| HR2724020060000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### EE

| Account Number       | Token                                         | Description                                                                                                                                                                                                        |
| -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| EE382200221020145685 | pm_sepaDebit_success_ee                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| EE222200221020145682 | pm_sepaDebit_successDelayed_ee                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| EE762200221020145680 | pm_sepaDebit_failed_ee                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| EE922200221020145683 | pm_sepaDebit_failedDelayed_ee                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| EE862200000000454545 | pm_sepaDebit_mandateRevoked_ee                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| EE492200221020145681 | pm_sepaDebit_disputed_ee                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| EE672200000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_ee      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| EE292200000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_ee | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| EE672200000002222227 | pm_sepaDebit_insufficientFunds_ee             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| EE202200000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### FI

| Account Number     | Token                                         | Description                                                                                                                                                                                                        |
| ------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| FI2112345600000785 | pm_sepaDebit_success_fi                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| FI3712345600000788 | pm_sepaDebit_successDelayed_fi                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| FI9112345600000786 | pm_sepaDebit_failed_fi                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| FI1012345600000789 | pm_sepaDebit_failedDelayed_fi                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| FI8612345600454545 | pm_sepaDebit_mandateRevoked_fi                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| FI6412345600000787 | pm_sepaDebit_disputed_fi                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| FI6712345600343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_fi      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| FI2912345600121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_fi | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| FI6712345602222227 | pm_sepaDebit_insufficientFunds_fi             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| FI2012345600066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### FR

| Account Number              | Token                                         | Description                                                                                                                                                                                                        |
| --------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| FR1420041010050500013M02606 | pm_sepaDebit_success_fr                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| FR3020041010050500013M02609 | pm_sepaDebit_successDelayed_fr                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| FR8420041010050500013M02607 | pm_sepaDebit_failed_fr                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| FR7920041010050500013M02600 | pm_sepaDebit_failedDelayed_fr                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| FR1920041010050000000454545 | pm_sepaDebit_mandateRevoked_fr                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| FR5720041010050500013M02608 | pm_sepaDebit_disputed_fr                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| FR9720041010050000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_fr      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| FR5920041010050000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_fr | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| FR9720041010050000002222227 | pm_sepaDebit_insufficientFunds_fr             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| FR5020041010050000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### DE

| Account Number         | Token                                         | Description                                                                                                                                                                                                        |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| DE89370400440532013000 | pm_sepaDebit_success_de                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| DE08370400440532013003 | pm_sepaDebit_successDelayed_de                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| DE62370400440532013001 | pm_sepaDebit_failed_de                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| DE78370400440532013004 | pm_sepaDebit_failedDelayed_de                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| DE84370400440000454545 | pm_sepaDebit_mandateRevoked_de                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| DE35370400440532013002 | pm_sepaDebit_disputed_de                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| DE65370400440000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_de      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| DE27370400440000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_de | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| DE65370400440002222227 | pm_sepaDebit_insufficientFunds_de             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| DE18370400440000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### GI

| Account Number          | Token                                         | Description                                                                                                                                                                                                        |
| ----------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| GI60MPFS599327643783385 | pm_sepaDebit_success_gi                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| GI08RRNW626436291644533 | pm_sepaDebit_successDelayed_gi                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| GI41SAFA461293238477751 | pm_sepaDebit_failed_gi                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| GI50LROG772261344693297 | pm_sepaDebit_failedDelayed_gi                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| GI33NWBK000000000454545 | pm_sepaDebit_mandateRevoked_gi                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| GI26KJBC361883934534696 | pm_sepaDebit_disputed_gi                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| GI14NWBK000000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_gi      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| GI73NWBK000000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_gi | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| GI14NWBK000000002222227 | pm_sepaDebit_insufficientFunds_gi             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| GI64NWBK000000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### IE

| Account Number         | Token                                         | Description                                                                                                                                                                                                        |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| IE29AIBK93115212345678 | pm_sepaDebit_success_ie                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| IE24AIBK93115212345671 | pm_sepaDebit_successDelayed_ie                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| IE02AIBK93115212345679 | pm_sepaDebit_failed_ie                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| IE94AIBK93115212345672 | pm_sepaDebit_failedDelayed_ie                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| IE29AIBK93115200454545 | pm_sepaDebit_mandateRevoked_ie                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| IE51AIBK93115212345670 | pm_sepaDebit_disputed_ie                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| IE10AIBK93115200343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_ie      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| IE69AIBK93115200121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_ie | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| IE10AIBK93115202222227 | pm_sepaDebit_insufficientFunds_ie             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| IE60AIBK93115200066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### LI

| Account Number        | Token                                         | Description                                                                                                                                                                                                        |
| --------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| LI0508800636123378777 | pm_sepaDebit_success_li                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| LI4408800387787111369 | pm_sepaDebit_successDelayed_li                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| LI1208800143823175626 | pm_sepaDebit_failed_li                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| LI4908800356441975566 | pm_sepaDebit_failedDelayed_li                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| LI4308800000000454545 | pm_sepaDebit_mandateRevoked_li                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| LI7708800125525347723 | pm_sepaDebit_disputed_li                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| LI2408800000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_li      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| LI8308800000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_li | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| LI2408800000002222227 | pm_sepaDebit_insufficientFunds_li             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| LI7408800000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### LT

| Account Number       | Token                                         | Description                                                                                                                                                                                                        |
| -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| LT121000011101001000 | pm_sepaDebit_success_lt                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| LT281000011101001003 | pm_sepaDebit_successDelayed_lt                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| LT821000011101001001 | pm_sepaDebit_failed_lt                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| LT981000011101001004 | pm_sepaDebit_failedDelayed_lt                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| LT781000000000454545 | pm_sepaDebit_mandateRevoked_lt                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| LT551000011101001002 | pm_sepaDebit_disputed_lt                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| LT591000000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_lt      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| LT211000000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_lt | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| LT591000000002222227 | pm_sepaDebit_insufficientFunds_lt             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| LT121000000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### LU

| Account Number       | Token                                         | Description                                                                                                                                                                                                        |
| -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| LU280019400644750000 | pm_sepaDebit_success_lu                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| LU440019400644750003 | pm_sepaDebit_successDelayed_lu                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| LU980019400644750001 | pm_sepaDebit_failed_lu                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| LU170019400644750004 | pm_sepaDebit_failedDelayed_lu                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| LU120010000000454545 | pm_sepaDebit_mandateRevoked_lu                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| LU710019400644750002 | pm_sepaDebit_disputed_lu                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| LU900010000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_lu      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| LU520010000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_lu | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| LU900010000002222227 | pm_sepaDebit_insufficientFunds_lu             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| LU430010000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### NL

| Account Number     | Token                                         | Description                                                                                                                                                                                                        |
| ------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| NL39RABO0300065264 | pm_sepaDebit_success_nl                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| NL55RABO0300065267 | pm_sepaDebit_successDelayed_nl                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| NL91ABNA0417164300 | pm_sepaDebit_failed_nl                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| NL28RABO0300065268 | pm_sepaDebit_failedDelayed_nl                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| NL46RABO0000454545 | pm_sepaDebit_mandateRevoked_nl                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| NL82RABO0300065266 | pm_sepaDebit_disputed_nl                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| NL27RABO0000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_nl      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| NL86RABO0000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_nl | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| NL27RABO0002222227 | pm_sepaDebit_insufficientFunds_nl             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| NL77RABO0000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### NO

| Account Number  | Token                                         | Description                                                                                                                                                                                                        |
| --------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| NO9386011117947 | pm_sepaDebit_success_no                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| NO8886011117940 | pm_sepaDebit_successDelayed_no                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| NO6686011117948 | pm_sepaDebit_failed_no                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| NO6186011117941 | pm_sepaDebit_failedDelayed_no                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| NO2486010454545 | pm_sepaDebit_mandateRevoked_no                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| NO3986011117949 | pm_sepaDebit_disputed_no                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| NO0586010343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_no      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| NO6486010121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_no | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| NO0586012222227 | pm_sepaDebit_insufficientFunds_no             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| NO5586010066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### PT

| Account Number            | Token                                         | Description                                                                                                                                                                                                        |
| ------------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| PT50000201231234567890154 | pm_sepaDebit_success_pt                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| PT66000201231234567890157 | pm_sepaDebit_successDelayed_pt                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| PT23000201231234567890155 | pm_sepaDebit_failed_pt                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| PT39000201231234567890158 | pm_sepaDebit_failedDelayed_pt                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| PT24000201230000000454545 | pm_sepaDebit_mandateRevoked_pt                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| PT93000201231234567890156 | pm_sepaDebit_disputed_pt                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| PT05000201230000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_pt      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| PT64000201230000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_pt | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| PT05000201230000002222227 | pm_sepaDebit_insufficientFunds_pt             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| PT55000201230000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### ES

| Account Number           | Token                                         | Description                                                                                                                                                                                                        |
| ------------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ES0700120345030000067890 | pm_sepaDebit_success_es                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| ES2300120345030000067893 | pm_sepaDebit_successDelayed_es                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| ES9121000418450200051332 | pm_sepaDebit_failed_es                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| ES9300120345030000067894 | pm_sepaDebit_failedDelayed_es                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| ES3600120345000000454545 | pm_sepaDebit_mandateRevoked_es                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| ES5000120345030000067892 | pm_sepaDebit_disputed_es                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| ES1700120345000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_es      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| ES7600120345000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_es | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| ES1700120345000002222227 | pm_sepaDebit_insufficientFunds_es             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| ES6700120345000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### SE

| Account Number           | Token                                         | Description                                                                                                                                                                                                        |
| ------------------------ | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| SE3550000000054910000003 | pm_sepaDebit_success_se                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| SE5150000000054910000006 | pm_sepaDebit_successDelayed_se                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| SE0850000000054910000004 | pm_sepaDebit_failed_se                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| SE2450000000054910000007 | pm_sepaDebit_failedDelayed_se                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| SE4750000000000000454545 | pm_sepaDebit_mandateRevoked_se                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| SE7850000000054910000005 | pm_sepaDebit_disputed_se                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| SE2850000000000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_se      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| SE8750000000000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_se | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| SE2850000000000002222227 | pm_sepaDebit_insufficientFunds_se             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| SE7850000000000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### CH

| Account Number        | Token                                         | Description                                                                                                                                                                                                        |
| --------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| CH9300762011623852957 | pm_sepaDebit_success_ch                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| CH8656663438253651553 | pm_sepaDebit_successDelayed_ch                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| CH5362200119938136497 | pm_sepaDebit_failed_ch                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| CH1843597160341964438 | pm_sepaDebit_failedDelayed_ch                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| CH3700762000000454545 | pm_sepaDebit_mandateRevoked_ch                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| CH1260378413965193069 | pm_sepaDebit_disputed_ch                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| CH1800762000000343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_ch      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| CH7700762000000121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_ch | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| CH1800762000002222227 | pm_sepaDebit_insufficientFunds_ch             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| CH6800762000000066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

### GB

| Account Number         | Token                                         | Description                                                                                                                                                                                                        |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| GB82WEST12345698765432 | pm_sepaDebit_success_gb                       | The PaymentIntent status transitions from `processing` to `succeeded`.                                                                                                                                             |
| GB98WEST12345698765435 | pm_sepaDebit_successDelayed_gb                | The PaymentIntent status transitions from `processing` to `succeeded` after at least three minutes.                                                                                                                |
| GB55WEST12345698765433 | pm_sepaDebit_failed_gb                        | The PaymentIntent status transitions from `processing` to `requires_payment_method`.                                                                                                                               |
| GB71WEST12345698765436 | pm_sepaDebit_failedDelayed_gb                 | The PaymentIntent status transitions from `processing` to `requires_payment_method` after at least three minutes.                                                                                                  |
| GB89WEST12345600454545 | pm_sepaDebit_mandateRevoked_gb                | The PaymentIntent status transitions from `processing` to `requires_payment_method` with a `debit_not_authorized` failure code. The mandate becomes `inactive`. Collect a new mandate before retrying the payment. |
| GB28WEST12345698765434 | pm_sepaDebit_disputed_gb                      | The PaymentIntent status transitions from `processing` to `succeeded`, but a dispute is immediately created.                                                                                                       |
| GB70WEST12345600343434 | pm_sepaDebit_exceedsWeeklyVolumeLimit_gb      | The payment fails with a `charge_exceeds_source_limit` failure code due to payment amount causing account to exceed its weekly payment volume limit.                                                               |
| GB32WEST12345600121212 | pm_sepaDebit_exceedsWeeklyTransactionLimit_gb | The payment fails with a `charge_exceeds_weekly_limit` failure code due to payment amount exceeding account's transaction volume limit.                                                                            |
| GB70WEST12345602222227 | pm_sepaDebit_insufficientFunds_gb             | The payment fails with an `insufficient_funds` failure code.                                                                                                                                                       |
| GB23WEST12345600066666 |                                               | Payment method creation fails with a `bank_account_unusable` error. Use a different bank account or payment method. Applies to SetupIntents and PaymentIntents that include inline IBAN data.                      |

## Optional: Set the billing period

When you create a subscription, it automatically sets the billing cycle by default. For example, if a customer subscribes to a monthly plan on 7 September, they’re billed on the 7th of every month after that. Some businesses prefer to set the billing cycle manually so that they can charge their customers at the same time each cycle. The [billing cycle anchor](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-billing_cycle_anchor) argument allows you to do this.

#### Accounts v2

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer_account={{CUSTOMERACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d billing_cycle_anchor=1611008505
```

#### Customers v1

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d billing_cycle_anchor=1611008505
```

Setting the billing cycle manually automatically charges the customer a pro rata amount for the time between the subscription being created and the billing cycle anchor. If you don’t want to charge customers for this time, you can set the [proration_behavior](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-proration_behavior) argument to `none`. You can also combine the billing cycle anchor with [trial periods](https://docs.stripe.com/billing/subscriptions/sepa-debit.md#trial-periods) to give users free access to your product and then charge them a pro rata amount.

## Optional: Subscription trials

Free trials allow customers access to your product for a period of time for free. Pass a timestamp in [trial end](https://docs.stripe.com/api/subscriptions/create.md#create_subscription-trial_end) to set the trial period.

#### Accounts v2

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer_account={{CUSTOMERACCOUNT_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d trial_end=1610403705
```

#### Customers v1

```curl
curl https://api.stripe.com/v1/subscriptions \
  -u "<<YOUR_SECRET_KEY>>:" \
  -d "customer={{CUSTOMER_ID}}" \
  -d "items[0][price]={{PRICE_ID}}" \
  -d trial_end=1610403705
```

You can also combine a [billing cycle anchor](https://docs.stripe.com/billing/subscriptions/sepa-debit.md#billing-cycle) with a free trial. For example, say it’s September 15 and you want to give your customer a free trial for seven days and then start the normal billing cycle on October 1. You can set the free trial to end on September 22 and the billing cycle anchor to October 1. This gives the customer a free trial for seven days and then charges a prorated amount for the time between the trial ending and October 1. On October 1, you charge them the normal subscription amount for their first full billing cycle.

## Optional: Create SEPA Direct Debit payments using other payment methods

> This doc refers to a *Legacy* (Technology that's no longer recommended) feature (the `idealBank` Element) that’s no longer available in the latest version of Stripe.js. We recommend you use the [Payment Element](https://docs.stripe.com/payments/payment-element.md), a UI component for the web that accepts 40+ payment methods, validates input and handles errors.

You can create SEPA Direct Debit payments using other payment methods such as [iDEAL](https://docs.stripe.com/payments/ideal/set-up-payment.md). Using this payment method requires a few additional steps. For iDEAL:

1. Use an [idealBank Element](https://docs.stripe.com/js/elements_object/create_element?type=idealBank) to collect payment information.
2. Confirm the subscription using [confirmIdealPayment](https://docs.stripe.com/js/payment_intents/confirm_ideal_payment) or, for subscriptions that don’t collect a payment up front, [confirmIdealSetup](https://docs.stripe.com/js/setup_intents/confirm_ideal_setup).
3. [List the customer’s payment methods](https://docs.stripe.com/api/payment_methods/customer_list.md), find the SEPA Direct Debit payment method, and set it as the customer’s [default payment method](https://docs.stripe.com/billing/subscriptions/sepa-debit.md#set-default-payment-method).

