# Account management Show account details and allow them to be edited. Account management renders a UI component for connected accounts to view and proactively edit their account details. Connected accounts can view and edit account information such as personal or business information, public information, and bank accounts they use for payouts. Account management isn’t optimized for collecting missing account information, and doesn’t handle [risk verifications](https://docs.stripe.com/connect/handling-api-verification.md#handle-risk-verifications). For those use cases, consider using [account onboarding](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md) or the [notification banner](https://docs.stripe.com/connect/supported-embedded-components/notification-banner.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 a connected account has outstanding [requirements](https://docs.stripe.com/api/v2/core/accounts/object.md#v2_account_object-requirements), account management prompts them to update their information. It always collects `currently_due` requirements, and 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-management.md#requirement-restrictions) ### 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. ## Displayed fields The [fields](https://docs.stripe.com/connect/required-verification-information.md) that the account management component displays depend on how you configured the connected account—specifically on the connected account country, business type, capabilities and service agreement type. This works similarly to how the [onboarding component](https://docs.stripe.com/connect/supported-embedded-components/account-onboarding.md) only collects the information that’s required for how the connected account is configured. ## External account collection Use the [external_account_collection](https://docs.stripe.com/api/account_sessions/create.md#create_account_session-components-account_management-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_management-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_management-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_management-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). ### Create an Account Session When [creating an Account Session](https://docs.stripe.com/api/account_sessions/create.md), enable account management by specifying `account_management` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[account_management][enabled]"=true \ -d "components[account_management][features][external_account_collection]"=true ``` ### Render the account management component #### JavaScript ```js // Include this element in your HTML const accountManagement = stripeConnectInstance.create('account-management'); container.appendChild(accountManagement); // Optional: // accountManagement.setCollectionOptions({ // fields: 'eventually_due', // futureRequirements: 'include', // }) ``` #### HTML + JS | Method | Type | Description | Default | | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | | `setCollectionOptions` | `{fields: 'currently_due' | 'eventually_due', future_requirements: 'omit' | 'include', requirements: { exclude: string[] } | { only: string[] }}` | Specifies whether to collect `eventually_due` requirements and whether to include `future_requirements`. Specifying `eventually_due` collects both `eventually_due` and `currently_due` requirements. | `{fields: 'currently_due', futureRequirements: 'omit'}` | | #### React | React prop | Type | Description | Default | Required or Optional | | ------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------- | -------------------- | | `collectionOptions` | `{fields: 'currently_due' | 'eventually_due', futureRequirements?: 'omit' | 'include', requirements?: { exclude: string[] } | { only: string[] }}` | Specifies whether to collect `eventually_due` requirements and whether to include `future_requirements`. 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 |