Definitions
Stripe’s customer and account relationships.
Sharing Customer information to create an Account:
- Customer and Account objects are separate entities in Stripe
- Information from a Customer object cannot be directly used to create an Account
- The user would need to go through a separate onboarding process to create a Stripe Account
Users having both Customer and Account objects:
- Yes, a user can have both a Stripe Customer object and a Stripe Account
- These are treated as separate entities within Stripe
- A business owner might have a personal Customer object for purchases and an Account for their business
Process for Account users to create Customer objects:
- Stripe Accounts (businesses) can create Customer objects for their own customers
- There’s no direct process to convert an Account into a Customer object
Process for Customers to create Accounts:
- No direct conversion process exists
- The user would need to sign up for a new Stripe Account separately
- Some information might be reused, but it would be a manual process
- Represents an individual who makes payments
- Created by businesses to store customer payment information
- Used for processing payments and managing subscriptions
- Does not have access to Stripe’s interface or dashboard
- Typically associated with a single business’s Stripe Account
- Easily save and reuse payment methods
- Simplify recurring payments and subscriptions
- Organize and track customer payment history
- Improve security by tokenizing sensitive data
- Enable features like updating payment methods without re-entering full details
- Represents a business or platform using Stripe’s services
- Used to accept payments, manage finances, and access Stripe features
- Has access to Stripe Dashboard for reporting, analytics, and settings
- Can create and manage multiple Customers
- Receives payouts from Stripe for processed payments
- Purpose: Customers are for payment processing; Accounts are for business management
- Access: Customers have no direct Stripe access; Accounts have full Stripe Dashboard access
- Relationship: Many Customers can belong to one Account
- Functionality: Customers are limited to payment data; Accounts have broader financial tools
For more details, see:
In summary, Stripe Customers are entities you create to process payments for your users, while a Stripe Account is what you, as a business, use to interact with Stripe’s services.
Express and Standard connected accounts are two types of accounts offered by Stripe Connect, each with distinct characteristics:
- Stripe handles onboarding and identity verification
- Platform has more control over payout settings and charge types
- Platform is responsible for disputes and refunds
- Connected accounts have access to a limited Express Dashboard
- Ideal for platforms wanting quick setup and significant control over interactions
- Platform is liable for fraud and disputes
- Connected accounts have a direct relationship with Stripe
- Connected accounts have full access to the Stripe Dashboard
- Connected accounts can process charges on their own
- Stripe handles most of the account experience
- Connected accounts are responsible for fraud and disputes (in most cases)
- Ideal for platforms working with experienced online businesses
- Dashboard access: Express accounts have limited access, while Standard accounts have full access
- Liability: Platform is liable for Express accounts, while Standard account holders are usually liable for themselves
- Control: Platforms have more control over Express accounts compared to Standard accounts
- Integration effort: Express requires low integration effort, while Standard requires the lowest
- Short-lived API keys
- Used primarily in mobile applications
- Designed to securely access a specific Customer object
- Provide temporary, limited access to Stripe resources
- Enhance security by reducing exposure of long-lived secret keys
- Allow mobile apps to perform actions on behalf of a specific customer
- Retrieving customer payment methods in mobile apps
- Updating customer information securely
- Managing customer-specific data without exposing full API access
Your server creates an ephemeral key for a specific Customer The key is sent to your mobile app The app uses the key to make secure, customer-specific API calls
- Generate ephemeral keys on your server, not in the client app
- Set short expiration times (typically a few minutes)
- Regenerate keys as needed for extended sessions
- Reusable: A SetupIntent can be used to save a payment method that can be charged multiple times in the future.
- Purpose: The main goal of a SetupIntent is to securely collect and save payment details for future use, not for a one-time transaction.
- Attachment to Customer: Once a SetupIntent successfully saves a payment method, it’s typically attached to a Stripe Customer object. This allows you to reuse the payment method for multiple future charges.
- Multiple charges: You can use the saved payment method associated with a successful SetupIntent to create multiple PaymentIntents or charge the customer multiple times without needing to create a new SetupIntent each time.
- Lifecycle: After a SetupIntent is successfully completed (status: ‘succeeded’), it has fulfilled its purpose of saving the payment method. You don’t use the SetupIntent itself again, but rather the payment method it saved.
For more details on how SetupIntents work and how to implement them, see Save a customer’s payment method without making a payment.
A SetupIntent is used to securely save a customer’s payment method for future use without immediately charging them. Here’s why SetupIntents are used and why you can’t specify an amount:
Purpose: SetupIntents are designed to collect and securely store payment details for later use, without processing an immediate payment. See Save a customer’s payment method without making a payment for more details.
No amount specified: Since SetupIntents are not meant for immediate charges, there’s no need to specify an amount. They’re focused on validating and storing payment information for future transactions.
Future flexibility: By not tying a SetupIntent to a specific amount, you maintain flexibility for future charges. The saved payment method can be used for various amounts in subsequent transactions.
Verification process: SetupIntents typically validate card information, CVC, and expiry, but don’t verify sufficient funds as no actual payment is processed.
Use cases: SetupIntents are ideal for scenarios like:
- Setting up recurring payments or subscriptions
- Storing payment information for one-click checkouts
- Preparing for future charges where the amount is not yet known
Remember, while a successful SetupIntent means the payment details are saved, it doesn’t guarantee that future transactions will succeed. Each subsequent charge may still succeed or fail based on various factors at the time of the transaction.
- The
payment_methodfield represents a PaymentMethod ID - a reusable object that contains the customer’s payment details (like a saved credit card).
| Object | Purpose | Example ID |
|---|---|---|
PaymentMethod | Represents payment details (card, bank account, etc.) | pm_1234567890 |
SetupIntent | Used to save payment methods for future use | seti_1234567890 |
PaymentIntent | Processes an actual payment | pi_1234567890 |
SetupIntent- Creates and saves a PaymentMethodPaymentMethod- Used in PaymentIntent to process payments