Scoping considerations
Before you start building your integration, make sure that everyone impacted by the move to Stripe agrees to the scope and understands their requirements. This guide helps identify essential decisions you need to make, the corresponding considerations, and technical approaches to building your integration.
Key decisions
- How will you structure your Stripe account(s)?
- How will merchants connect their accounts to your platform?
- How and where will you accept payments?
- How will you capture customer payment details?
- Where will your platform store customer card data?
- How will you reconcile your payments and payouts?
How will you structure your Stripe account(s)?
One of the first questions to answer is whether you’ll need a single Stripe account, or several. Start by reviewing the Account setup guide and Payments and payouts guide to assess your account needs.
Considerations:
Which countries will you operate in?
If more than one, consider creating Stripe accounts where you have legal entities to take advantage of local acquiring for local customers.
In some countries, Stripe supports adding multiple bank accounts for different currencies, which may impact the number of accounts you create.
For example, if you have legal entities in the United States, Canada, and the Netherlands, and plan to pay out to bank accounts in multiple currencies, you might choose to have a US account for USD payouts, a CA account for CAD payouts, and one NL account capable of settling in EUR, GBP, and DKK. This account organization ensures that you can benefit from local acquiring and separate payouts by business line.
Do you need to direct funds to more than one bank account?
If both bank accounts are in the same currency, create separate platforms to take advantage of automatic payouts and avoid manually switching between bank accounts for each payout.
How will you create your accounts?
You’ll need to go through account setup for each Stripe account. To set up regional Stripe accounts, add new accounts using your first Stripe account to simplify authentication and access.
If your integration requires multiple Stripe accounts, it’s important to know which account you’re operating in. You need to specify the secret key on each API request to correctly identify the regional account.
If you’re going to use a single platform account for Stripe transactions and charge customers in every currency, you only need to go through account setup one time. This account organization ensures that all data is available in a single account, which simplifies the integration and reporting process. You can also create additional Stripe accounts later for different geographies if desired.
Can you benefit from local acquiring?
If you want to benefit from local acquiring, you’ll need regional platform accounts.
Do you need centralized reporting in a single Stripe account?
Options Regional Unified Description A more complex integration that uses multiple regional Stripe accounts to manage multiple bank accounts or acquire in local currencies. Requires a local legal entity for each Stripe account. The simplest integration that uses a single Stripe account for charging customers in every currency and specific payment methods depending on the account’s location. Benefits - Acquire in the local market with the most support for new payment methods.
- Eliminate FX and settles into like currency for platform payouts.
- Achieve higher authorization rates and lower network costs
- Unify reporting under a single Stripe account for all markets.
- Avoid developing internal logic for routing customer transactions to the correct Stripe account for processing.
Limitations - Adds complexity to reporting and integration.
- Lacks a holistic Dashboard view of data.
- May not work with all payment methods.
- Necessitates cross border acquiring and settlement FX.
How will merchants connect their accounts to your platform?
With Standard Connect, Stripe handles merchant onboarding, but you’re responsible for creating a path for merchants to authorize your platform to connect to their account. Connect Onboarding is the recommended integration path for creating and connecting your merchants’ Stripe accounts because it’s where Stripe will build future functionality. If you’re building an extension or an application that needs access to your customers’ existing accounts to provide services, use the OAuth Connect flow. Both onboarding methods allow you to customize your business name, website, and logo for the Stripe onboarding page in the Dashboard settings.
Options | Connect Onboarding | OAuth |
---|---|---|
Description | Uses the /v1/accounts APIs to allow your platform to control account creation for your users. | Provides a multi-step process between your website and Stripe’s Standard Connect onboarding page for merchants to connect to your platform |
Benefits |
|
|
Limitations |
|
|
How and where will you accept payments?
With Standard Connect, you’ll create direct charges on the connected accounts and have two options to do this.
PaymentIntents is our default API. PaymentIntents track the lifecycle of a customer’s payment flow and enable you to integrate against asynchronous payment flows like 3D Secure. Asynchronous flows are especially important when it comes to supporting global expansion (for example, SCA, compliance with 3D Secure in Europe (and similar regulations in India), and introducing other payment methods like SEPA Direct Debit or SOFORT in Europe.
Considerations:
Which payment methods will you offer your customers?
To see which payment methods the PaymentMethods API supports, check here for digital wallets, bank debits, bank redirects, buy now, pay later, and vouchers
Which countries will you operate in?
If your business is based in the European Economic Area (EEA), if you create payments on behalf of connected accounts based in the EEA, or if you serve customers in the EEA, you must integrate on PaymentIntents to comply with SCA regulations. If your business is based in India and serving customers in India, you should also use PaymentIntents.
Which payment methods and countries are on your roadmap?
If you don’t require PaymentIntents today but plan to expand to new payment methods or countries, you should still integrate with PaymentIntents for all methods that are currently available as PaymentMethods, and plan your migration to PaymentIntents for the remaining methods when they become available on the PaymentMethods API.
How will you capture customer payment details?
The client-side integration process typically involves building components for collecting customer and payment information. Stripe has a website checklist that provides best practices and standards for your frontend development. The Integration security guide helps you ensure PCI compliance and explains the importance of secure communication between your customer and your servers.
Considerations:
Is your business already PCI-compliant?
If yes, and you want to process cards without tokenizing, speak to your Stripe contact or support.stripe.com.
Will you be using multiple payment processors?
If yes, consider dual-tokenization when processing card payments. Dual-tokenizing can help you to continue to run charges on your other payment processor without prompting your customers for their credit card details again.
How will you manage fraud in the checkout experience?
To provide Stripe with additional fraud signals, include Stripe.js on every page that a customer interacts with related to the checkout process. This includes product and payment pages.
How much control do you need over the checkout experience?
Stripe offers two main ways to create payment forms: Elements and Checkout.
Both are secure, optimized for conversion, and PCI-compliant, though they differ in terms of customizability and time to integrate.
Options Stripe Checkout Stripe.JS and Elements Description
Stripe Checkout is a secure, Stripe-hosted page that lets you collect payments quickly. It works across devices and is designed to increase your conversion.
Elements is a set of prebuilt UI components, like inputs and buttons, for building your checkout flow. Stripe.js tokenizes sensitive payment details without ever letting it touch your server.
Benefits
- Simplified integration.
- Up-to-date with available payment methods.
- Optimized conversion.
- Co-branded with your business logo and colors.
- Optimized conversion with dynamic inputs.
- Simplified PCI compliance with SAQ A reporting because all sensitive information is handled by Stripe.js.
- Customizable styling to match the look and feel of your checkout flow.
Limitations
- Temporarily redirects customers off your web domain.
- Fewer options for customization.
- Increased integration time and effort compared to Checkout.
- Elements doesn’t support all payment methods, requiring that you build additional fields to use unsupported methods.
Creating a PaymentMethod with Stripe.js or a mobile SDK
If you’re using Stripe.js and Elements, before creating a charge, you should first tokenize payment details from a customer. At a high level, this process involves using a publishable key to transmit card (or other payment method) details from a client browser or mobile app directly to Stripe’s servers. Stripe ingests these sensitive payment details and returns a PaymentMethod that can be charged. For users accessing the service using a web browser, use Stripe.js. If the user is submitting payment details using an iOS or Android app, use one of Stripe’s libraries.
Where will your Platform store customer card data?
Stripe typically recommends saving Customer and PaymentMethod objects on the connected accounts. Saving Customers and PaymentMethods to a connected account allows you to reuse them for future payments without collecting payment details again. If your platform wants to reuse customers’ payment details (for example, one-click checkout) across different connected accounts, you must create Customer objects on the platform account using the payment details that you collected in the frontend.
Considerations:
Do your merchants’ customers need to be shared across connected accounts?
If so, save Customer objects and PaymentMethod on the platform and share them to the connected accounts as payments occur.
Options | Connected Accounts | Platforms |
---|---|---|
Description | In this approach you save the PaymentMethods or Sources, and Customers in the connected account. | In this approach you save the PaymentMethods or Sources, and Customers in your platform account. Useful for creating a shared wallet experience. |
Benefits |
|
|
Limitations |
|
|
How will you reconcile your payments and payouts?
Involve your finance team early in your scoping so that they can advise you on your new reconciliation process and reporting needs. To learn more about your options, start by reviewing the Payments and payouts and Financial reports Guides. Depending on your needs, you may use a combination of Financial Reports, Dashboard exports, Sigma, and the API.
Reporting considerations:
Do you require fast and frequent access to transaction data, such as application fees and payouts on your platform?
Financial Reports and Sigma make your data available by 12:00 UTC the following day.
Dashboard exports, while available immediately, take longer to generate, which makes them best for pulling small increments of data on the order of several thousand records—not tens of thousands.
Building custom reporting using the Stripe APIs ensures that you have the specific data you need as it becomes available — but keep in mind that it’s resource-intensive to both build and maintain.
Do you have data analytics tooling?
Sigma is our custom reporting tool that makes all of your transactional data available as an interactive SQL environment in the Dashboard. You can use it to gain insights into anything from ARPU to customer churn, and identify new business opportunities.
Which data points do you use to reconcile your finances? Are any of these fields custom and generated by your team (for example, an order or booking ID)?
Make sure your custom data is included as metadata on any relevant reporting objects.
Do you require insights about the payments you make on behalf of your platform users?
Use the API to create reports as described in the Financial reports guide and in the table below.
Options | Financial Reports | Sigma | Custom Reports |
---|---|---|---|
Description | View the financial data within your Stripe account, helping to streamline your business workflows | Process business data using SQL. Use SQL to explore your Stripe data, revenue, and create customized reports | Build your own reporting through dashboard exports, the API, and webhooks. |
Benefits |
|
|
|
Limitations |
|
|
|
Payout considerations:
- Are there any reasons you need to pay out specific amounts to your account?
Do you want to retain a balance in your account?
Manual and Instant payouts allow you to keep a Stripe balance of your choosing.
Do you plan to reconcile between transactions on your account and payouts to your bank?
If yes, use automatic payouts.
Options | Manual | Automatic |
---|---|---|
Description | Manually create payouts for the specified amount and currency to the bank account of your choosing. | Automatically pay out funds when they’re available and after settlement, either daily, weekly, or monthly. |
Benefits |
|
|
Limitations |
|
|