Build an in-app payments integration
Use Stripe’s In-app Payments to build a customized payments integration and checkout flows for your iOS, Android, and React Native apps. This overview helps you plan your integration.
US apps selling digital goods
Android apps in the US that sell digital goods can process payments in-app using Stripe. If you sell digital goods on iOS, see how to implement an app-to-web flow using Stripe Checkout in Sell in-app digital goods and subscriptions.
This feature is available across all supported platforms.
Tap to add your card availability
The tap to add your card feature is in private preview. You can learn more about how to request access and integrate the feature for Payment Sheet or Payment Element.
With Stripe In-App Payments, you can:
- Dynamically display 40+ payment methods, including Apple Pay, Google Pay, and Link , as well as saved payment methods.
- Collect payment information like credit card numbers and billing details.
- Complete the payment, handling authentication like 3DS2 or redirecting to a banking app.
Choose a UI
Choose from three different UI integrations depending on your preferred UX and design needs.
| Payment Sheet | Flow Controller | Payment Element | |
|---|---|---|---|
| Integration effort | Low code | Some code | Some code |
| Display payment methods | In a sheet | In a sheet | In an embeddable view |
| Collect payment details | In a sheet | In a sheet | In a sheet |
| Complete payment | In a sheet | You control when to confirm in your UI | You control when to confirm in your UI |
| Layout flexibility | Fixed sheet presentation | Fixed sheet for selection, flexible confirmation | Embed payment methods anywhere in your app |
This integration displays payment methods, collects payment information, and completes payment all in a single prebuilt sheet. We recommend using this UI to take payments in your app for most users.
You can customize more than 50 aspects of the appearance, including colors and fonts, with the Appearance API guide.
Try the demo: Scan the QR code or use this link to download an interactive demo app.
Best for…
- Adding in‑app payments quickly with minimal code.
- A checkout where the customer taps a single “Buy” button and completes payment in one step.
Consider another option for…
- Collecting a payment method first and confirming payment separately in your own UI. To do this, use Flow Controller .
- Embedding payment methods directly into your own screens instead of a sheet. To do this, use Payment Element .
Choose an API
Stripe’s In-App Payments integration uses either PaymentIntents or SetupIntents.
Accept a payment
| ⠀ | |
|---|---|
| API | PaymentIntent |
| Description | Collect payment and charge the customer immediately. Our UI displays a “Save my info” checkbox, allowing customers to save their payment method for future checkouts. Learn more about saved payment methods. |
| Supported payment methods | Both single-use and reusable |
| Examples | Buying a product or service in a single transaction (for example, e-commerce checkout) Paying for a ride or food delivery at the time of order |
| Get started | Accept a payment with Payment Sheet |
Set up a payment method
| ⠀ | |
|---|---|
| API | SetupIntent |
| Description | Collect and save a payment method for future payments without charging the customer. |
| Supported payment methods | Reusable payment methods only |
| Examples | Signing up for an app and saving a payment method during onboarding Setting up a payment method at the start of a subscription with a free trial period Collecting payment details for crowdfunding campaigns (charge only if goal is met) Storing payment information before activating a utility or service |
| Get started | Set up a payment method with Payment Sheet |
Accept and set up a payment
| ⠀ | |
|---|---|
| API | PaymentIntent with setup_future_usage |
| Description | Charge the customer now and save their payment method for future use by configuring your PaymentIntent to save the payment method. You can require all payment methods to be saved by configuring setup_future_usage. Using setup_future_usage disables one-time payment methods, like most BNPLs. To support both one-time and reusable payment methods, configure future usage on specific payment methods, such as payment_method_options[card][setup_future_usage] to save cards. |
| Supported payment methods | Both single-use and reusable |
| Examples | Signing users up for a subscription that includes an upfront payment (for example, charging the first month immediately) Charging for an initial purchase while also saving the payment method for incidentals or add-on purchases |
| Get started | Accept and set up a payment with Payment Sheet |
Saved payment methods
Stripe’s In-App Payments supports saving, displaying, and managing saved card, US Bank account, and the related setting Debit payment methods. Consent collection is handled automatically, ensuring global compliance.
Access saved payment methods in Payment Sheet
The CustomerSessions API provides additional control over:
- When to show or hide the save consent box
- When to show or hide the saved payment methods
- Allowing customers to remove saved payment methods
- Preventing customers from removing the last saved payment method
Features and availability
- UI In-app Payments
- UI customization Extensive, using the Appearance API
- Payment methods 1
- [100+](/the relevant part of the product#choose-how-to-add-payment-methods)
- [Dynamic payment methods](/the relevant part of the product)
- Faster checkout with Link
- Apple Pay , Google Pay , and Amazon Pay
- [Custom payment methods](/the relevant part of the product)
- SDK support iOS, Android, and React Native
- One-time and recurring payments Yes
- Fraud protection Yes
- Global payments Yes
1 Wallet payment methods require registering your domain.
