Stripe | Financial Infrastructure to Grow Your Revenue

Stripe | Financial Infrastructure to Grow Your Revenue

4466 articles

Set up a subscription with iDEAL and SEPA Direct Debit


Set up a subscription with iDEAL and the related setting Direct Debit

iDEAL is a single use payment method that requires customers to authenticate each payment. After your customer authenticates the payment, Stripe saves your customer’s the related setting in a the related setting Direct Debit payment method. You can then use the the related setting Direct Debit payment method to accept future payments.

Use this guide to set up a subscription using iDEAL and Checkout.

With this integration, Stripe charges the first Subscription payment through iDEAL to collect your customer’s bank details. If you’re offering a free trial, Stripe charges your customer 0.01 EUR through iDEAL to collect their bank details and immediately refunds it.

A Checkout Session represents the details of your customer’s intent to purchase. You create a Checkout Session when your customer wants to start a subscription. After redirecting your customer to a Checkout Session, Stripe presents a payment form where your customer can complete their purchase. After your customer completes a purchase, they’re redirected back to your site.

Set up Stripe Server-side

Install the Stripe client of your choice:

Command Line

Select a language

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

# Available as a gem
sudo gem install stripe

Gemfile

Select a language

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

# If you use bundler, you can add this line to your Gemfile
gem 'stripe'

Install the Stripe CLI (optional). The CLI provides webhook testing, and you can run it to create your products and prices.

Install the Stripe CLI with npm:

Command Line

npm install -g @stripe/cli@latest

After installation, log in to your Stripe account:

Command Line

stripe login

After you install the CLI, you can also install agent tooling, or set up autocompletion.

Note

For more installation options for Windows, macOS, Linux, and Docker, see the Stripe CLI readme on GitHub.

Create the pricing model Dashboard Stripe CLI

Recurring pricing models represent the products or services you sell, how much they cost, what currency you accept for payments, and the service period for subscriptions. To build the pricing model, create products (what you sell) and prices (how much and how often to charge for your products).

This example uses flat-rate pricing with two different service-level options: Basic and Premium. For each service-level option, you need to create a product and a recurring price. To add a one-time charge for something like a setup fee, create a third product with a one-time price.

Each product bills at monthly intervals. The price for the Basic product is 5 EUR. The price for the Premium product is 15 EUR. See the flat rate pricing guide for an example with three tiers.

Go to the Add a product page and create two products. Add one price for each product, each with a monthly recurring billing period:

  • Premium product: Premium service with extra features
  • Price: Flat rate | 15 EUR
  • Basic product: Basic service with minimum features
  • Price: Flat rate | 5 EUR

After you create the prices, record the price IDs so you can use them in other steps. Price IDs look like this: price_G0FvDp6vZvdwRZ.

When you’re ready, use the Copy to live mode button at the top right of the page to clone your product from a sandbox to live mode.

For other pricing models, see Billing examples.

Create a Checkout Session Client-side Server-side

Add a checkout button to your website that calls a server-side endpoint to create a Checkout Session.

index.html

<html>
 <head>
 <title>Checkout</title>
 </head>
 <body>
 <form action="/create-checkout-session" method="POST">
 <button type="submit">Checkout</button>
 </form>
 </body>
</html>

Create a Session with the ID of an existing Price. Make sure that the mode is set to subscription and that you pass at least one recurring price. You can add one-time prices in addition to recurring prices. After creating the Checkout Session, redirect your customer to the URL returned in the response.

When creating a Session, you can specify payment_method_types or have Stripe automatically pick payment methods based on your Dashboard settings. If you don’t specify payment_method_types, you must turn on iDEAL recurring payments in the Dashboard. This enables the related setting Direct Debit for recurring iDEAL payments only, but doesn’t turn on the related setting Direct Debit payments as a stand alone payment method.

Command Line

Select a language

cURL

Ruby

Python

PHP

Java

Node.js

Go

.NET

No results

When your customer successfully completes their payment, they’re redirected to the success_url, a page on your website that informs the customer that their payment was successful. Make the Session ID available on your success page by including the {the related setting} template variable in the success_url as in the above example.

When your customer clicks on your logo in a Checkout Session without completing a payment, Checkout redirects them back to your website that the customer viewed prior to redirecting to Checkout.

Checkout Sessions expire 24 hours after creation by default.

Caution

Don’t rely on the redirect to the success_url alone for detecting payment initiation, because:

  • Malicious users could directly access the success _ url without paying and gain access to your goods or services.
  • After a successful payment, customers might close their browser tab before they’re redirected to the success _ url .

Confirm the payment is successful

When your customer completes a payment, they’re redirected to the URL that you specified as the success_url. This is typically a page on your website that informs your customer that their payment was successful.

Use the Dashboard, a custom webhook, or a third-party plugin to handle post-payment events like sending an order confirmation email to your customer, logging the sale in a database, or starting a shipping workflow.

Successful payments appear in the Dashboard’s list of payments. When you click a payment, it takes you to the Payment details page. The Checkout summary section contains billing information and the list of items purchased, which you can use to manually fulfill the order.

When a customer successfully pays for a recurring service, they’re automatically subscribed. Their subscription is recorded as a new entry in the Dashboard’s list of subscriptions.

Note

Stripe can help you keep up with incoming payments by sending you email notifications whenever a customer successfully completes one. Use the Dashboard to configure email notifications.

You can use plugins like Zapier to automate updating your purchase fulfillment systems with information from Stripe payments.

Some examples of automation supported by plugins include:

  • Updating spreadsheets used for order tracking in response to successful payments
  • Updating inventory management systems in response to successful payments
  • Triggering notifications to internal customer service teams using email or chat applications

Test the integration

Using your test API keys, select any bank from the list. After confirming, you’re redirected to a test page with options to authorize or fail the payment.

  • Click Authorize test payment to test the case when the setup is successful.
  • Click Fail test payment to test the case when the customer fails to authenticate.

Optional Create a trial for your subscription

See also

Last verified 2026-09-24

Is this helpful?