# iDEAL Bank Selector UI for iOS: The Right Pattern

> By Lawrence Arya, Founder & CEO of VP0. Published 2026-06-04. 5 min read.
> Source: https://vp0.com/blogs/ideal-payment-bank-selector-ui-ios

You never touch bank credentials. The selector picks a bank, your PSP redirects, the user approves in their bank app.

**TL;DR.** iDEAL is a Dutch bank-redirect payment method, so the bank selector is a picker that hands off to the user's bank, never a screen that collects banking credentials. On iOS you render the list of supported banks (get it from your payment provider, do not hardcode it), the user picks one, and your PSP like Stripe, Mollie, or Adyen redirects to that bank's app or web flow to approve. Watch the iDEAL 2.0 change, where bank selection can move into the bank app, so confirm the current flow with your provider. Start the checkout UI from a free VP0 design at $0.

iDEAL is the dominant way people pay online in the Netherlands, and the classic UI is a bank selector: a list of banks the user picks from before approving the payment in their own banking app. The thing to understand first is what it is not. It is not a card form, and it never collects banking credentials. It is a redirect picker. Get that mental model right and the UI is simple. Here is how to build it on iOS, where the bank list comes from, and the iDEAL 2.0 change worth watching. Start the checkout from a free [VP0](https://vp0.com) design (the free iOS and React Native design library AI builders read from) at $0.

## The flow: pick, redirect, return

iDEAL is a bank-redirect method, so the money never moves through a card field:

| Step | Where | What happens |
|---|---|---|
| 1 | Your app | User picks their bank from the selector |
| 2 | PSP | Your provider redirects to that bank's app or web flow |
| 3 | Bank | User authenticates and approves in their own bank |
| 4 | Your app | User returns; you confirm status from your backend |

Your app and backend only ever see the payment **status**, never the user's banking login. That is the entire security model, and it is why any screen that asks for bank credentials inside your app is wrong. The provider docs are the reference: [Stripe's iDEAL guide](https://docs.stripe.com/payments/ideal), [Mollie](https://docs.mollie.com/), and [Adyen's iDEAL page](https://docs.adyen.com/payment-methods/ideal/) all describe the same redirect shape.

## Where the bank list comes from

Do not hardcode the banks. The set of supported iDEAL issuers can change, so fetch it from your PSP's API, or better, use the provider's hosted selector component, which keeps the list current for you. A stale hardcoded list is a real bug: a bank disappears or rebrands and your checkout silently breaks for those users. The official [iDEAL site](https://www.ideal.nl/en/) lists participating banks for reference, but your runtime source of truth is the PSP.

## The iDEAL 2.0 change to watch

iDEAL is in transition. In the newer setup, bank selection can move into the user's own bank app or a single unified flow rather than a dropdown inside your checkout, and some providers now recommend against building your own issuer list at all. Because the flow is changing, confirm the current behavior with your PSP before you build a custom selector, and lean on their maintained component where one exists. That keeps you correct through the transition instead of shipping a pattern that is on its way out. The surrounding checkout screens follow the usual e-commerce shape: see [the e-commerce checkout screen in SwiftUI](/blogs/e-commerce-checkout-screen-swiftui/) and, for a hosted drop-in comparison, [the Adyen drop-in checkout UI in SwiftUI](/blogs/adyen-drop-in-checkout-ui-swiftui/). For another regional method's pattern, [the Fawry payment gateway UI](/blogs/fawry-payment-gateway-ui-mobile/) shows the same redirect-and-return shape. When you store anything about a user's payments, the [account deletion flow iOS requirement](/blogs/user-account-deletion-flow-ios-requirement/) governs how it must be removable, and unrelated app features like [the React Native step counter widget for iOS](/blogs/react-native-step-counter-widget-ios/) keep their own data separate.

The request-side product this selector usually lives inside, payment requests shared as links with a who-paid tracker, is covered in [the Tikkie clone guide](/blogs/tikkie-betaalverzoek-ui-clone-swiftui/).

The BNPL sibling of the payment selector, where the credit agreement stays with the provider, is built in [the Klarna checkout widget](/blogs/klarna-checkout-ui-widget-swiftui/).

## Key takeaways

- iDEAL is a bank-redirect method; the selector is a picker, not a card form.
- Your app never touches banking credentials; you only confirm the payment status.
- Fetch the bank list from your PSP (or use its hosted component); never hardcode it.
- Watch iDEAL 2.0: bank selection may move into the bank app, so confirm the current flow.
- Build the checkout and selector from a free VP0 design at $0, wired to Stripe, Mollie, or Adyen.

## Frequently asked questions

### How does an iDEAL bank selector work on iOS?

iDEAL is a bank-redirect method, so the selector is a picker, not a card form. You show the list of supported banks, the user taps theirs, and your payment provider (Stripe, Mollie, Adyen, and others) redirects to that bank's app or website to authorize the payment. Your app never sees or stores the user's banking credentials. After approval, the user returns to your app and you confirm the payment status from your backend.

### Where do I get the list of iDEAL banks?

From your payment service provider's API, not a hardcoded list. Providers expose the current set of supported iDEAL issuers, which can change, so fetch it rather than baking it in. Many providers also offer a hosted component that renders the selector for you, which keeps the list current automatically.

### Is the iDEAL bank selector going away with iDEAL 2.0?

The flow is evolving. With the newer iDEAL setup, bank selection can move into the user's own bank app or a unified flow rather than an in-merchant dropdown, and some providers now recommend not building your own issuer list. Because it is in transition, confirm the exact current flow with your PSP before building, and prefer their maintained component if available.

### Do I handle banking credentials in an iDEAL flow?

No, and you must not. iDEAL works by redirecting the user to their own bank to authenticate and approve; your app and backend only ever see the payment status, never the login or banking details. That is the whole security model of a bank-redirect method, so any UI that asks for bank login details inside your app is wrong and unsafe.

### What is the best way to build an iDEAL checkout UI on iOS?

Start from a clean checkout layout and use your PSP's maintained bank list or hosted component, then handle the redirect and the return. A free VP0 design, the free iOS and React Native design library for AI builders, gives you the checkout and selector layout to generate in Cursor or Claude Code at $0, wired to Stripe, Mollie, or Adyen.

## Frequently asked questions

### How does an iDEAL bank selector work on iOS?

iDEAL is a bank-redirect method, so the selector is a picker, not a card form. You show the list of supported banks, the user taps theirs, and your payment provider (Stripe, Mollie, Adyen, and others) redirects to that bank's app or website to authorize the payment. Your app never sees or stores the user's banking credentials. After approval, the user returns to your app and you confirm the payment status from your backend.

### Where do I get the list of iDEAL banks?

From your payment service provider's API, not a hardcoded list. Providers expose the current set of supported iDEAL issuers, which can change, so fetch it rather than baking it in. Many providers also offer a hosted component that renders the selector for you, which keeps the list current automatically.

### Is the iDEAL bank selector going away with iDEAL 2.0?

The flow is evolving. With the newer iDEAL setup, bank selection can move into the user's own bank app or a unified flow rather than an in-merchant dropdown, and some providers now recommend not building your own issuer list. Because it is in transition, confirm the exact current flow with your PSP before building, and prefer their maintained component if available.

### Do I handle banking credentials in an iDEAL flow?

No, and you must not. iDEAL works by redirecting the user to their own bank to authenticate and approve; your app and backend only ever see the payment status, never the login or banking details. That is the whole security model of a bank-redirect method, so any UI that asks for bank login details inside your app is wrong and unsafe.

### What is the best way to build an iDEAL checkout UI on iOS?

Start from a clean checkout layout and use your PSP's maintained bank list or hosted component, then handle the redirect and the return. A free VP0 design, the free iOS and React Native design library for AI builders, gives you the checkout and selector layout to generate in Cursor or Claude Code at $0, wired to Stripe, Mollie, or Adyen.

---
*Published on the [VP0 Journal](https://vp0.com/blogs). Free to read, index and cite with attribution.*
