# Account onboarding Use the Account onboarding Connect embedded component. The Account onboarding component uses the Accounts API to read requirements and generate an onboarding form that’s localized for all Stripe-supported countries and that validates data. In addition, Embedded onboarding handles all business types, various configurations of company representatives, document uploads, identity verification, and verification statuses. For more information, see [Embedded onboarding](https://docs.stripe.com/connect/embedded-onboarding.md). Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. The Account onboarding component uses the Accounts API to read requirements and generate an onboarding form that’s localized for all Stripe-supported countries and that validates data. In addition, Embedded onboarding handles all business types, various configurations of company representatives, document uploads, identity verification, and verification statuses. For more information, see [Embedded onboarding](https://docs.stripe.com/connect/embedded-onboarding.md). Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. The Account onboarding component uses the Accounts API to read requirements and generate an onboarding form that’s localized for all Stripe-supported countries and that validates data. In addition, Embedded onboarding handles all business types, various configurations of company representatives, document uploads, identity verification, and verification statuses. For more information, see [Embedded onboarding](https://docs.stripe.com/connect/embedded-onboarding.md). Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. The Account onboarding component uses the Accounts API to read requirements and generate an onboarding form that’s localized for all Stripe-supported countries and that validates data. In addition, Embedded onboarding handles all business types, various configurations of company representatives, document uploads, identity verification, and verification statuses. For more information, see [Embedded onboarding](https://docs.stripe.com/connect/embedded-onboarding.md). Note: The following is a preview/demo component that behaves differently than live mode usage with real connected accounts. The actual component has more functionality than what might appear in this demo component. For example, for connected accounts without Stripe dashboard access (custom accounts), no user authentication is required in production. ## Requirements collection options When you collect information using the account onboarding component, it always collects `currently_due` requirements. You can use the `collectionOptions` attribute to also request any of the following: - `eventually_due` requirements - [future requirements](https://docs.stripe.com/connect/handle-verification-updates.md) - Granular [requirement restrictions](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md#requirement-restrictions) For more information about specific requirements for your connected accounts, see [Required verification information](https://docs.stripe.com/connect/required-verification-information.md). ### Requirement restrictions When you specify collection options, you can configure granular requirement restrictions as `only` or `exclude`. Both options accept an array of strings representing required properties as they appear in `requirements.entries[].description` for v2 Accounts and the various requirement arrays for v1 Accounts. For details about which requirements apply to your connected accounts, see [Required verification information](https://docs.stripe.com/connect/required-verification-information.md). Think of the options as filters, where `exclude` filters out matching account requirements, and `only` acts as an intersection between the account requirements and the specified values. They also support wildcard matching using `*` and relationship prefixes. For example, if you have a connected account with several owners, you can collect the address information for all owners by specifying `only: ["owners.address.*"]`. A person can have multiple relationships associated to them, and relationships can be assigned to multiple persons. Therefore, when you leverage relationship prefixes, they apply to all persons on the account with the specified relationship. This is especially useful in situations where you don’t know a specific person’s ID, but do know their relationship. Important considerations: - Accounts still need to satisfy all KYC requirements in order to have capabilities enabled. The `exclude` option doesn’t remove a requirement, it only prevents collection at the time. The information must still be collected. - These restrictions only apply within embedded components. They don’t affect accounts using other types of dashboards. - This feature is intended for building improved user experiences, not for preventing accounts from accessing information. #### only requirement restriction This option scopes collection to the set of specified requirements that are also outstanding on the account. It’s most commonly used to build a remediation experience, and is particularly useful for requirements that require some form of document upload or identity verification. This option prevents account onboarding from presenting the standard final summary step. If all of the specified requirements have been provided, the account onboarding component exits immediately. #### exclude requirement restriction This option hides the specified fields, which prevents a connected account from providing or editing that information. It only hides fields from the component; it doesn’t remove information requirements. This option is useful when you want to prefill information that you don’t want the connected account to access during onboarding. For Express accounts, if you want to `exclude` the `business_type` requirement (such as to prevent an account from changing their business type), the account country and capabilities must be set. ## External account collection Use the [external_account_collection](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_onboarding-features-external_account_collection) feature to control whether the component collects external account information. This parameter is enabled by default. When `external_account_collection` is enabled, [user authentication](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#user-authentication-in-connect-embedded-components) is required. You can opt out of Stripe user authentication with the [disable_stripe_user_authentication](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_onboarding-features-disable_stripe_user_authentication) parameter. ## Disable Stripe user authentication Use the [disable_stripe_user_authentication](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_onboarding-features-disable_stripe_user_authentication) feature to control whether the component requires Stripe user authentication. - By default, `disable_stripe_user_authentication` is the opposite of the [external_account_collection](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_onboarding-features-external_account_collection) value. - If you leave `external_account_collection` unset, it defaults to true, so `disable_stripe_user_authentication` defaults to false. - When `controller.requirement_collection` is `stripe`, both values default to false. This value can only be true for accounts where `controller.requirement_collection` is `application`. We recommend implementing 2FA or equivalent security measures as a [best practice](https://docs.stripe.com/connect/risk-management/best-practices.md#prevent-account-take-overs). For account configurations that support this feature, such as Custom accounts, you assume liability for connected accounts if they can’t pay back [negative balances](https://docs.stripe.com/connect/risk-management/best-practices.md#decide-your-approach-to-negative-balance-liability). ## Customize policies shown to your users Connected accounts see Stripe’s service agreement and [Privacy Policy](https://stripe.com/privacy) during embedded onboarding. Connected account users who haven’t [accepted Stripe’s services agreement](https://docs.stripe.com/connect/service-agreement-types.md#accepting-the-correct-agreement) must accept it on the final onboarding screen. Embedded onboarding also has a footer with links to Stripe’s service agreement and [Privacy Policy](https://stripe.com/privacy). For connected accounts where the platform is responsible for requirement collection, you have additional options to customize the onboarding flow, as outlined below. ### Handle service agreement acceptance on your own If you’re a platform onboarding connected accounts where you’re responsible for requirement collection, you can [collect Terms of Service acceptance](https://docs.stripe.com/connect/updating-service-agreements.md#tos-acceptance) using your own process instead of using the embedded account onboarding component. If using your own process, the final onboarding screen only asks your connected accounts to confirm the information they entered, and you must secure their acceptance of Stripe’s service agreement. Embedded onboarding still has links to the terms of service (for example, in the footer) that you can replace by [linking to your own agreements and privacy policy](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md#link-to-your-own-agreements-and-privacy-policy). ### Link to your agreements and privacy policy Connected accounts see the Stripe service agreement and [Privacy Policy](https://stripe.com/privacy) throughout embedded onboarding. For the connected accounts where you’re responsible for requirement collection, you can replace the links with your own agreements and policy. Follow the instructions to [incorporate the Stripe services agreement](https://docs.stripe.com/connect/updating-service-agreements.md#adding-stripes-service-agreement-to-your-terms-of-service) and [link to the Stripe Privacy Policy](https://docs.stripe.com/connect/updating-service-agreements.md#disclosing-how-stripe-processes-user-data). ## Integrate the account onboarding component Create an [Account Session](https://docs.stripe.com/api/account_sessions.md) by specifying the ID of the connected account and `account_onboarding` as the component to enable. ### Create an Account Session When [creating an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable account onboarding by specifying `account_onboarding` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]"=true ``` ### Render the Account onboarding component After creating the Account Session and [initializing ConnectJS](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), you can render the Account onboarding component in the front end: #### JavaScript ```js // Include this element in your HTML const accountOnboarding = stripeConnectInstance.create('account-onboarding'); accountOnboarding.setOnExit(() => { console.log('User exited the onboarding flow'); }); container.appendChild(accountOnboarding); // Optional: make sure to follow our policy instructions above // accountOnboarding.setFullTermsOfServiceUrl('{{URL}}') // accountOnboarding.setRecipientTermsOfServiceUrl('{{URL}}') // accountOnboarding.setPrivacyPolicyUrl('{{URL}}') // accountOnboarding.setCollectionOptions({ // fields: 'eventually_due', // futureRequirements: 'include', // requirements: { // exclude: ['business_profile.product_description'] // } // }) // accountOnboarding.setOnStepChange((stepChange) => { // console.log(`User entered: ${stepChange.step}`); // }); ``` #### HTML + JS | Method | Type | Description | Default | | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | | `setFullTermsOfServiceUrl` | `string` | Absolute URL to your [full terms of service](https://docs.stripe.com/connect/service-agreement-types.md#full) agreement. | [Stripe’s full service agreement](https://stripe.com/connect-account/legal/full) | | `setRecipientTermsOfServiceUrl` | `string` | Absolute URL to your [recipient terms of service](https://docs.stripe.com/connect/service-agreement-types.md#recipient) agreement. | [Stripe’s recipient service agreement](https://stripe.com/connect-account/legal/recipient) | | `setPrivacyPolicyUrl` | `string` | Absolute URL to your privacy policy. | [Stripe’s privacy policy](https://stripe.com/privacy) | | `setSkipTermsOfServiceCollection` | `string` | [DEPRECATED] Use requirement restriction `exclude: ["tos_acceptance.*"]` instead. If true, embedded onboarding skips terms of service collection and you must [collect terms acceptance yourself](https://docs.stripe.com/connect/updating-service-agreements.md#indicating-acceptance). | false | | `setCollectionOptions` | `{fields: 'currently_due' | 'eventually_due', future_requirements: 'omit' | 'include', requirements: { exclude: string[] } | { only: string[] }}` | Customizes collecting `currently_due` or `eventually_due` requirements, controls whether to include [future requirements](https://docs.stripe.com/connect/handle-verification-updates.md), and allows restricting requirements collection. Specifying `eventually_due` collects both `eventually_due` and `currently_due` requirements. | `{fields: 'currently_due', futureRequirements: 'omit'}` | | `setOnExit` | `() => void` | The connected account has exited the onboarding process | | | `setOnStepChange` | `({step}: StepChange) => void` | The connected account has navigated from one step to another within the onboarding process. Use `StepChange` to identify the current step, as described below. | | To use this component to set up new accounts: 1. Create a [connected account](https://docs.stripe.com/api/accounts/create.md). You can prefill information on the `Account` object in this API call. 1. [Initialize Connect embedded components](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions) using the ID of the connected account. 1. Include the `account-onboarding` element to show the onboarding flow to the connected account. 1. Listen for the `exit` event emitted from this component. Stripe sends this event when the connected account exits the onboarding process. 1. When `exit` triggers, retrieve the `Account` details to check the status of: - [details_submitted](https://docs.stripe.com/api/accounts/object.md#account_object-details_submitted) - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) - Any other requested capabilities If all required capabilities are enabled, you can take the connected account to the next step of your flow. #### React | React prop | Type | Description | Default | Required or Optional | | ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------ | -------------------- | | `onExit` | `() => void` | The component executes this callback function when the connected account exits the onboarding process | | required | | `fullTermsOfServiceUrl` | `string` | Link to your [full terms of service](https://docs.stripe.com/connect/service-agreement-types.md#full) agreement | [Stripe’s full service agreement](https://stripe.com/connect-account/legal/full) | optional | | `recipientTermsOfServiceUrl` | `string` | Link to your [recipient terms of service](https://docs.stripe.com/connect/service-agreement-types.md#recipient) agreement | [Stripe’s recipient service agreement](https://stripe.com/connect-account/legal/recipient) | optional | | `privacyPolicyUrl` | `string` | Link to your privacy policy | [Stripe’s privacy policy](https://stripe.com/privacy) | optional | | `skipTermsOfServiceCollection` | `boolean` | [DEPRECATED] Use requirement restriction `exclude: ["tos_acceptance.*"]` instead. If true, embedded onboarding skips terms of service collection and you must [collect terms acceptance yourself](https://docs.stripe.com/connect/updating-service-agreements.md#indicating-acceptance). | false | optional | | `collectionOptions` | `{fields: 'currently_due' | 'eventually_due', futureRequirements?: 'omit' | 'include', requirements?: { exclude: string[] } | { only: string[] }}` | Customizes collecting `currently_due` or `eventually_due` requirements, controls whether to include [future requirements](https://docs.stripe.com/connect/handle-verification-updates.md), and allows restricting requirements collection. Specifying `eventually_due` collects both `eventually_due` and `currently_due` requirements. You can’t update this parameter after the component has initially rendered. | `{fields: 'currently_due', futureRequirements: 'omit'}` | optional | | `onStepChange` | `({step}: StepChange) => void` | The component executes this callback function when the connected account has navigated from one step to another within the onboarding process. Use `StepChange` to identify the current step, as described below. | | optional | 1. Create a [connected account](https://docs.stripe.com/api/accounts/create.md). You can prefill information on the `Account` object in this API call. 1. [Initialize Connect embedded components](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions) using the ID of the connected account. 1. Include the `account-onboarding` element to show the onboarding flow to the connected account. 1. Pass a callback function `onExit` to run when the connected account exits the onboarding process. 1. When `onExit` triggers, retrieve the `Account` details to check the status of: - [details_submitted](https://docs.stripe.com/api/accounts/object.md#account_object-details_submitted) - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) - Any other requested capabilities If all required capabilities are enabled, you can take the connected account to the next step of your flow. ### The StepChange object The `StepChange` type is defined in `connect.js`. Every time the connected account navigates from one step to another in the onboarding process, the step change handler receives a `StepChange` object with the following property: | Name | Type | Example value | | ------ | ------------------------------------ | --------------- | | `step` | `string` (must be a valid step name) | `business_type` | The unique reference to an onboarding step. | ##### Step restrictions - The `StepChange` object is only for analytics. - Steps can appear in any order and can repeat. - The list of valid `step` names can change at any time, without notice. #### Step names Each page in an onboarding flow has one of the following step names. | Step name | Description | | ---------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `stripe_user_authentication` | [User authentication](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#user-authentication-in-connect-embedded-components) includes a popup to a Stripe-owned window. The connected account must authenticate before they can continue their workflow. | | `risk_intervention` | Guides the connected account to resolve risk-related requirements. | | `legal_entity_sharing` | Connected accounts can optionally [reuse business information](https://docs.stripe.com/connect/networked-onboarding.md) from existing accounts with the same owner. | | `business_type` | Sets the business type of the connected account. In certain cases the connected account can also set their country. | | `business_details` | Collects information related to the connected account’s business. | | `business_verification` | Collects a proof of entity document establishing the business’ entity ID number, such as the company’s articles of incorporation. Or allows users to correct wrongly entered information related to the entity. | | `business_bank_account_ownership_verification` | Collects documents needed to verify that bank account information, such as the legal owner’s name and account number, match the information on the user’s Stripe account. | | `business_documents` | Collects other documents and verification requirements related to the business. | | `representative_details` | Collects information about the account representative. | | `representative_document` | Collects a government-issued ID verifying the existence of the account representative. | | `representative_additional_document` | Collects an additional document to verifying the details of the account representative. | | `legal_guardian_details` | Collects the legal guardians consent for accounts opened by minors. | | `owners` | Collects information about the [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) of a company. | | `directors` | Collects information about the [directors](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) of a company. | | `executives` | Collects information about the [executives](https://support.stripe.com/questions/beneficial-owner-and-director-definitions) of a company. | | `proof_of_ownership_document` | Collects documentation that verifies a company’s [beneficial owners](https://support.stripe.com/questions/beneficial-owner-and-director-definitions). | | `proof_of_authorization` | Collects documentation to verify that the [account representative holds a position of sufficient authority](https://support.stripe.com/questions/representative-authority-verification) within a company. | | `confirm_owners` | Allows connected accounts to attest that the beneficial owner information provided to Stripe is both current and correct. | | `risa_compliance_survey` | (Applies only to businesses in Japan.) Answers questions concerning the [Revised Installment Sales Act](https://stripe.com/guides/installment-sales-act). | | `treasury_and_card_issuing_terms_of_service` | Collects [Financial Accounts for platforms and Card Issuing](https://docs.stripe.com/financial-accounts/connect.md) terms of service when requesting those capabilities. | | `external_account` | Collects the [external account](https://docs.stripe.com/api/accounts/object.md#account_object-external_accounts) of the connected account. | | `support_details` | Collects information that helps customers recognize the connected accounts business. This support information can be visible in payment statements, invoices, and receipts. | | `climate` | Allows a connected account to opt into [Stripe Climate](https://docs.stripe.com/climate.md). | | `tax` | Allows a connected account to opt into [Stripe Tax](https://docs.stripe.com/tax.md). | | `summary` | Final review step of onboarding. The connected account can update entered information from this step. The terms of service and privacy URL is displayed in this screen. | | `summary_risk` | From the summary step, a connected account can update information related to risk requirements. | | `summary_business_type` | From the summary step, a connected account can update information related to their business type. | | `summary_business` | From the summary step, a connected account can update information related to their business. | | `summary_support` | From the summary step, a connected account can update public-facing information related to their business. | | `summary_persons` | From the summary step, a connected account can update information about each person on their account. | | `summary_external_account` | From the summary step, a connected account can update information related to their [external account](https://docs.stripe.com/api/accounts/object.md#account_object-external_accounts). | | `summary_tax` | From the summary step, a connected account can update information related to their [Stripe Tax](https://docs.stripe.com/tax.md) integration. | | `summary_tax_identification_form` | From the summary step, a connected account can update information related to their W8/W9 certified tax information. This is shown when Stripe must collect W8/W9 information. | | `summary_climate` | From the summary step, a connected account can update information related to their [Stripe Climate](https://docs.stripe.com/climate.md) integration. | | `terms_of_service` | When leveraging requirement restrictions to collect `only` ToS acceptance, we render a special step because the summary step isn’t rendered when leveraging `only` requirement restrictions. | ### Create an Account Session When you [create an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable account onboarding by specifying `account_onboarding` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]"=true \ -d "components[account_onboarding][features][disable_stripe_user_authentication]"=true ``` ### Render the Account onboarding component After you create the Account Session and [set up StripeConnect](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), you can render the Account onboarding component in your app: #### Swift ```swift class MyViewController: UIViewController, AccountOnboardingControllerDelegate { func accountOnboardingButtonTapped() { // Optional. If you use CollectionOptions, make sure to follow our policy instructions. // let collectionOptions = AccountCollectionOptions() // collectionOptions.fields = .eventuallyDue // collectionOptions.futureRequirements = .include let accountOnboardingController = embeddedComponentManager.createAccountOnboardingController( // fullTermsOfServiceUrl: URL(string: "{{URL}}")!, // recipientTermsOfServiceUrl: URL(string: "{{URL}}")!, // privacyPolicyUrl: URL(string: "{{URL}}")!, // collectionOptions: collectionOptions ) accountOnboardingController.delegate = self accountOnboardingController.title = "Onboard with Stripe" // Display the component in your app accountOnboardingController.present(from: self) } // MARK: - AccountOnboardingControllerDelegate func accountOnboardingDidExit(_ accountOnboarding: AccountOnboardingController) { print("User exited the onboarding flow") } } ``` When `accountOnboardingDidExit` triggers, retrieve the `Account` details to check the status of: - [details_submitted](https://docs.stripe.com/api/accounts/object.md#account_object-details_submitted) - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) - Any other requested capabilities If all required capabilities are enabled, you can take the connected account to the next step of your application. [See reference documentation :external:](https://stripe.dev/stripe-ios/stripeconnect/documentation/stripeconnect/accountonboardingcontroller). ### Create an Account Session When you [create an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable account onboarding by specifying `account_onboarding` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]"=true \ -d "components[account_onboarding][features][disable_stripe_user_authentication]"=true ``` ### Render the Account onboarding component After you create the Account Session and [set up StripeConnect](https://docs.stripe.com/connect/get-started-connect-embedded-components.md#account-sessions), you can render the Account onboarding component in your app: #### Kotlin ```kotlin class MyActivity : FragmentActivity() { private lateinit var accountOnboardingController: AccountOnboardingController override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) EmbeddedComponentManager.onActivityCreate(this) // Optional. If you use CollectionOptions, make sure to follow our policy instructions. // val collectionOptions = CollectionOptions( // fields = FieldOption.EVENTUALLY_DUE, // futureRequirements = FutureRequirementOption.INCLUDE, // ) accountOnboardingController = embeddedComponentManager.createAccountOnboardingController( activity = this, title = getString(R.string.account_onboarding), props = AccountOnboardingProps( // fullTermsOfServiceUrl = "{{URL}}", // recipientTermsOfServiceUrl = "{{URL}}", // privacyPolicyUrl = "{{URL}}", // collectionOptions = collectionOptions ) ).apply { onDismissListener = OnDismissListener { println("User exited the onboarding flow") } } } private fun showAccountOnboarding() { accountOnboardingController.show() } } ``` When your dismissal listener triggers, retrieve the `Account` details to check the status of: - [details_submitted](https://docs.stripe.com/api/accounts/object.md#account_object-details_submitted) - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) - Any other requested capabilities If all required capabilities are enabled, you can take the connected account to the next step of your application. [See reference documentation :external:](https://stripe.dev/stripe-android/connect/com.stripe.android.connect/-account-onboarding-controller/index.html). ### Create an Account Session When you [create an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable account onboarding by specifying `account_onboarding` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_onboarding][enabled]"=true \ -d "components[account_onboarding][features][disable_stripe_user_authentication]"=true ``` ### Render the Account onboarding component After you create the Account Session and [set up StripeConnect](https://docs.stripe.com/connect/get-started-connect-embedded-components.md?platform=react-native#account-sessions), you can render the Account onboarding component in your app: #### TypeScript ```javascript import { ConnectAccountOnboarding } from '@stripe/stripe-react-native'; export default function AccountOnboardingScreen() { return ( { console.log('User exited onboarding'); }} /> ); } ``` When `onExit` triggers, retrieve the `Account` details to check the status of: - [details_submitted](https://docs.stripe.com/api/accounts/object.md#account_object-details_submitted) - [charges_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-charges_enabled) - [payouts_enabled](https://docs.stripe.com/api/accounts/object.md#account_object-payouts_enabled) - Any other requested capabilities If all required capabilities are enabled, you can take the connected account to the next step of your application. [See reference documentation :external:](https://stripe.dev/stripe-react-native/api-reference/functions/ConnectAccountOnboarding.html). ## Request access (Private preview) Sign in to request access to Connect embedded components for React Native in private preview. If you don’t have a Stripe account, you can [register now](https://dashboard.stripe.com/register).