Create your platform account
Owner: product management or finance
Before you start building your integration, you need to create a Stripe account and add the Connect application. To create your account:
To add the Connect application to your account:
- Click Connect in the left navigation menu.
- Click the Get started button and fill out the form.
- Click the + New user button on the team page to give your team access to the Dashboard. Engineering, finance, customer service, and product team members often need access. Make sure each user has the appropriate role and email notifications set.
- Optionally set up CVC and AVS checks.
- Set your default Statement descriptor. These can be set dynamically as well.
- Set your platform's payout schedule.
Data migration and storage
Owner: finance or product management
Stripe has a dedicated Migrations Team (firstname.lastname@example.org) that works with you to migrate your data. They need to know what data you intend to migrate, and how it maps to Stripe data. For example, you might want to migrate credit card numbers, and those credit card numbers need to be associated with a customer ID or a connected account ID. Your engineering team can use the Imports: Moving data to Stripe guide to work through the migration process.
If you have an MCC number, provide it to either the Migrations Team or your Sales representative so it can be used with your Stripe account. If you have an existing relationship with AMEX, we can port your SEID to Stripe.
Build seller experience
Owners: engineering, UX
The seller experience you’ll build is a standard OAuth flow. When sellers complete this flow, it allows your platform to create charges and make other API requests on behalf of the connected accounts. If a seller doesn’t have a connected account yet, completing the OAuth flow creates one for them. As a part of this flow, you’ll also need to provide a redirect page that sellers are brought to after they complete the OAuth flow.
Using Connect with Express Accounts explains how to implement the OAuth flow for Express accounts. If you already have information on your connected accounts, you can use it to prefill some of the fields.
After you implement the OAuth flow, configure automatic payouts by setting payout schedules for your connected accounts. We recommend automatic payouts because they’re easier to manage and improve reporting capabilities.
Build buyer experience
Owner: engineering, UX
Several teams might be involved in deciding what kind of buyer experience to build, but your engineering and UX teams are responsible for building it.
Collecting payment details
To accept payments, you need to collect payment details from buyers. Most integrations use Stripe Elements to build forms or payment request buttons that securely collect payment details. If you expect buyers to make future or recurring purchases, use the customer_object to save card details for later. This speeds up subsequent checkouts.
For Connect Express and Custom accounts, your platform needs to create charges with the destination or on_behalf_of parameter. This lets you create charges on behalf of connected accounts and take fees in the process.
If you need to accept currencies that are different from the currency deposited in your platform account,
you need to change the
currency parameter in the
charge API call.
You should also learn about currency conversions and
how to work with multiple currencies using Connect.
Collecting metadata lets you store additional information on charges, customers, accounts, and more. For example, you might want to assign order IDs or item descriptions to each charge. This information is useful for customer service and finance teams that use the Stripe Dashboard. Metadata is also used in reporting and you can query it in Stripe Sigma. Work with your customer service and finance teams to identify what metadata is useful to them.
Dynamic statement descriptors let you customize the statement description customers see on their credit card or bank statements. This information is useful to customers because it explains what a charge is for, which often reduces dispute risk.
While collecting payment details is enough to accept payments, there’s more you should do to manage risk and protect against fraud. When using Elements, you should collect the cardholder’s name and billing address when you create the token. It’s also common to save customer email addresses and shipping information.
If you’re using the
Customer object to create charges,
use the email address and
shipping information attributes. If you’re using the
Charge object, use the description for the email address,
and the shipping attribute for the shipping address.
Even if you don’t plan to use Stripe’s CVC check,
you still need to pass CVCs. Financial institutions consider charges without CVCs as a higher risk, so it's
best to pass them anyway.
You can use the fingerprint attribute to uniquely identify card numbers. This lets you check whether multiple customers are using the same card number, which sometimes indicates fraudulent activity that should be blocked.
You can also implement 3D Secure which adds a layer of security. This is recommended for high-risk payments that you or Stripe have identified (e.g., payments you suspect are fraudulent). 3D Secure requires your customers to complete additional steps during the payment process that could impact their checkout experience. For instance, if a customer does not know their 3D Secure information, they might not be able to complete the payment.
There are a number of events you can listen to using
webhooks. Listening to these events lets you set up notifications like sending emails to
customers for successful charges, refunds, disputes, etc. You can also monitor
API errors. For example, the
card_error type lets you know when a charge fails.
You can use this information to notify customers that they need to update payment details or other information.
There are several third-party integrations that can help you
with notifications as well.
Use this checklist to help track your progress through the integration phase. Depending on your integration, some of the checklist items might not apply to you, or you might have other items to track that aren't listed. The state of each checkbox is stored in your browser's cache, so you can return to this page at any time to see what has completed.