# Capital application component Show an end-to-end application flow for Capital financing. The Capital application component allows your eligible connected accounts to complete a financing application in your platform’s website or application. They can select their offer amount and terms, view contractual details, and submit their application. This component is similar to the [Capital promotion](https://docs.stripe.com/connect/supported-embedded-components/capital-financing-promotion.md) component, but it invokes the application directly and excludes educational or promotional content. Use this embedded component if you want to customize how to display the financing offer and program information to eligible connected accounts. ## Before you begin - Embedded components are only available to display to connected accounts in the US and UK. - Before you go live, you must [enable automatic offers](https://docs.stripe.com/capital/embedded-component-integration.md#enable-automatic-offers) and [submit your integration to Stripe for review](https://docs.stripe.com/connect/supported-embedded-components/capital-financing-application.md#submit-for-review). - When you [render the component](https://docs.stripe.com/connect/supported-embedded-components/capital-financing-application.md#render-the-component), it links out to Stripe content by default. You can replace the link for [Privacy policy](https://stripe.com/privacy) and [How Capital for platforms works](https://docs.stripe.com/capital/how-capital-for-platforms-works.md) with your equivalent documentation. ## Install Capital embedded components Install a beta version of the Stripe SDKs to create account sessions for private preview components: - [Ruby](https://github.com/stripe/stripe-ruby/#public-preview-sdks) `>=15.5.0-beta.1` - [Python](https://github.com/stripe/stripe-python/#public-preview-sdks) `>=12.5.0b1` - [PHP](https://github.com/stripe/stripe-php/#public-preview-sdks) `>=17.6.0-beta.1` - [Node](https://github.com/stripe/stripe-node/#public-preview-sdks) `>=18.5.0-beta.1` - [.NET](https://github.com/stripe/stripe-dotnet#public-preview-sdks) `>=48.5.0-beta.1` - [Java](https://github.com/stripe/stripe-java#public-preview-sdks) `>=29.5.0-beta.1` - [Go](https://github.com/stripe/stripe-go#public-preview-sdks) `>=82.5.0-beta.1` Use the beta version of the Stripe’s client-side libraries to render private preview components: #### npm Install the library: ```bash npm install --save @stripe/connect-js@preview ``` If you’re using React in your application: ```bash npm install --save @stripe/react-connect-js@preview ``` #### GitHub Download the [@stripe/connect-js](https://github.com/stripe/connect-js) and [@stripe/react-connect-js](https://github.com/stripe/react-connect-js) libraries source code directly from GitHub. ## Set up Connect.js If you don’t already use Stripe embedded components in your application, [initialize Connect.js](https://docs.stripe.com/connect/get-started-connect-embedded-components.md?platform=web#account-sessions) before you integrate the application component. ## Create an Account Session In your [create an Account Session](https://docs.stripe.com/api/account_sessions/create.md) request, specify `capital_financing_application` in the `components` parameter. ```curl curl https://api.stripe.com/v1/account_sessions \ -u "<>:" \ -H "Stripe-Version: 2025-08-27.preview; embedded_connect_beta=v2;" \ -d account="{{CONNECTEDACCOUNT_ID}}" \ -d "components[capital_financing_application][enabled]"=true ``` ```ruby # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys # This example uses the beta SDK. See https://github.com/stripe/stripe-ruby#public-preview-sdks Stripe.api_key = '<>' Stripe.api_version = '2025-08-27.preview; embedded_connect_beta=v2;' account_session = Stripe::AccountSession.create({ account: '{{CONNECTEDACCOUNT_ID}}', components: {capital_financing_application: {enabled: true}}, }) ``` ```ruby # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys client = Stripe::StripeClient.new( "<>", stripe_version: '2025-08-27.preview; embedded_connect_beta=v2;', ) account_session = client.v1.account_sessions.create({ account: '{{CONNECTEDACCOUNT_ID}}', components: {capital_financing_application: {enabled: true}}, }) ``` ```python # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys # This example uses the beta SDK. See https://github.com/stripe/stripe-python#public-preview-sdks import stripe stripe.api_key = "<>" stripe.api_version = "2025-08-27.preview; embedded_connect_beta=v2;" account_session = stripe.AccountSession.create( account="{{CONNECTEDACCOUNT_ID}}", components={"capital_financing_application": {"enabled": True}}, ) ``` ```python # Set your secret key. Remember to switch to your live secret key in production. # See your keys here: https://dashboard.stripe.com/apikeys # This example uses the beta SDK. See https://github.com/stripe/stripe-python#public-preview-sdks client = StripeClient("<>") # For SDK versions 12.4.0 or lower, remove '.v1' from the following line. account_session = client.v1.account_sessions.create( { "account": "{{CONNECTEDACCOUNT_ID}}", "components": {"capital_financing_application": {"enabled": True}}, }, {"stripe_version": "2025-08-27.preview; embedded_connect_beta=v2;"}, ) ``` ```php // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-php#public-preview-sdks $stripe = new \Stripe\StripeClient([ 'api_key' => '<>', 'stripe_version' => '2025-08-27.preview; embedded_connect_beta=v2;', ]); $accountSession = $stripe->accountSessions->create([ 'account' => '{{CONNECTEDACCOUNT_ID}}', 'components' => ['capital_financing_application' => ['enabled' => true]], ]); ``` ```java // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-java#public-preview-sdks Stripe.apiKey = "<>"; // Only beta releases of stripe-java support setting API version. See https://github.com/stripe/stripe-java/blob/beta/README.md#beta-sdks for more information. Stripe.apiVersion = "2025-08-27.preview; embedded_connect_beta=v2;"; AccountSessionCreateParams params = AccountSessionCreateParams.builder() .setAccount("{{CONNECTEDACCOUNT_ID}}") .setComponents( AccountSessionCreateParams.Components.builder() .setCapitalFinancingApplication( AccountSessionCreateParams.Components.CapitalFinancingApplication.builder() .setEnabled(true) .build() ) .build() ) .build(); AccountSession accountSession = AccountSession.create(params); ``` ```java // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-java#public-preview-sdks StripeClient client = new StripeClient("<>"); AccountSessionCreateParams params = AccountSessionCreateParams.builder() .setAccount("{{CONNECTEDACCOUNT_ID}}") .setComponents( AccountSessionCreateParams.Components.builder() .setCapitalFinancingApplication( AccountSessionCreateParams.Components.CapitalFinancingApplication.builder() .setEnabled(true) .build() ) .build() ) .build(); // For SDK versions 29.4.0 or lower, remove '.v1()' from the following line. AccountSession accountSession = client.v1().accountSessions().create(params); ``` ```node // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-node#public-preview-sdks const stripe = require('stripe')( '<>', {apiVersion: '2025-08-27.preview; embedded_connect_beta=v2;'} ); const accountSession = await stripe.accountSessions.create({ account: '{{CONNECTEDACCOUNT_ID}}', components: { capital_financing_application: { enabled: true, }, }, }); ``` ```go // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-go#public-preview-sdks stripe.Key = "<>" // Only beta releases of stripe-go support setting API version. See https://github.com/stripe/stripe-go/blob/beta/README.md#beta-sdks for more information. stripe.APIVersion = "2025-08-27.preview; embedded_connect_beta=v2;" params := &stripe.AccountSessionParams{ Account: stripe.String("{{CONNECTEDACCOUNT_ID}}"), Components: &stripe.AccountSessionComponentsParams{ CapitalFinancingApplication: &stripe.AccountSessionComponentsCapitalFinancingApplicationParams{ Enabled: stripe.Bool(true), }, }, } result, err := accountsession.New(params) ``` ```go // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // This example uses the beta SDK. See https://github.com/stripe/stripe-go#public-preview-sdks // Only beta releases of stripe-go support setting API version. See https://github.com/stripe/stripe-go/blob/beta/README.md#beta-sdks for more information. stripe.APIVersion = "2025-08-27.preview; embedded_connect_beta=v2;" sc := stripe.NewClient("<>") params := &stripe.AccountSessionCreateParams{ Account: stripe.String("{{CONNECTEDACCOUNT_ID}}"), Components: &stripe.AccountSessionCreateComponentsParams{ CapitalFinancingApplication: &stripe.AccountSessionCreateComponentsCapitalFinancingApplicationParams{ Enabled: stripe.Bool(true), }, }, } result, err := sc.V1AccountSessions.Create(context.TODO(), params) ``` ```dotnet // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys StripeConfiguration.ApiKey = "<>"; // Only beta releases of stripe-dotnet support setting API version. See https://github.com/stripe/stripe-dotnet/blob/beta/README.md#beta-sdks for more information. StripeConfiguration.ApiVersion = "2025-08-27.preview; embedded_connect_beta=v2;"; var options = new AccountSessionCreateOptions { Account = "{{CONNECTEDACCOUNT_ID}}", Components = new AccountSessionComponentsOptions(), }; options.AddExtraParam("components[capital_financing_application][enabled]", true); var service = new AccountSessionService(); AccountSession accountSession = service.Create(options); ``` ```dotnet // Set your secret key. Remember to switch to your live secret key in production. // See your keys here: https://dashboard.stripe.com/apikeys // Only beta releases of stripe-dotnet support setting API version. See https://github.com/stripe/stripe-dotnet/blob/beta/README.md#beta-sdks for more information. StripeConfiguration.ApiVersion = "2025-08-27.preview; embedded_connect_beta=v2;"; var options = new AccountSessionCreateOptions { Account = "{{CONNECTEDACCOUNT_ID}}", Components = new AccountSessionComponentsOptions(), }; options.AddExtraParam("components[capital_financing_application][enabled]", true); var client = new StripeClient("<>"); var service = client.V1.AccountSessions; AccountSession accountSession = service.Create(options); ``` ## Render the application component Render the Capital application component in the front end: #### JavaScript ```js // Include this element in your HTML const capitalFinancingApplication = stripeConnectInstance.create('capital-financing-application'); container.appendChild(capitalFinancingApplication); ``` #### React ```jsx // Include this React component import { ConnectCapitalFinancingApplication, ConnectComponentsProvider, } from "@stripe/react-connect-js"; return ( ); ``` #### HTML + JS | Method | Type | Description | Default | | ---------------------------- | -------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------- | | `setOnApplicationSubmitted` | `() => void` | The connected account has successfully submitted their application for financing. | | | `setOnApplicationStepChange` | `({step: string}) => void` | The connected account has navigated through the application. | | | `setPrivacyPolicyUrl` | `string` | Absolute URL of a page containing your privacy policy. | `https://stripe.com/privacy` | | `setHowCapitalWorksUrl` | `string` | Absolute URL of a page with information about the Capital program. | `https://docs.stripe.com/capital/how-capital-for-platforms-works` | #### React | React prop | Type | Description | Default | Required or Optional | | ------------------------- | -------------------------- | --------------------------------------------------------------------------------- | ----------------------------------------------------------------- | -------------------- | | `onApplicationSubmitted` | `() => void` | The connected account has successfully submitted their application for financing. | | optional | | `onApplicationStepChange` | `({step: string}) => void` | The connected account has navigated through the application. | | optional | | `privacyPolicyUrl` | `string` | Absolute URL of a page containing your privacy policy. | `https://stripe.com/privacy` | optional | | `howCapitalWorksUrl` | `string` | Absolute URL of a page with information about the Capital program. | `https://docs.stripe.com/capital/how-capital-for-platforms-works` | optional | ## Set the display state Add the application component on a page your connected accounts use to view payments and payouts reporting information, or a dedicated **Financing** page in your platform’s UI. Make sure to use a different location than the [Connect promotion component](https://docs.stripe.com/connect/supported-embedded-components/capital-financing-promotion.md) (if applicable). To determine if a connected account is eligible for an offer, call the [List financing offers](https://docs.stripe.com/api/capital/financing_offers/list.md) endpoint and pass the connected account ID in the `connected_account` parameter. The application component displays content dynamically based on the connected account’s financing status: - **No active financing**: If an account doesn’t have an eligible financing offer, then the application component doesn’t render (returns null). - **With active offer**: If the connected account is eligible for an offer, the component shows full offer details with a **Start application** button. - **Offer in review**: After an eligible connected account accepts and applies for a financing offer, use this state to display an application status tracker. Listen to the `onApplicationStepChange` event to track their offer’s progress. This event is emitted when the connected account advances to the next step or navigates back to a previous step or page in the Capital application process. The name of the next step is provided to the handler you provide in the step field. These steps can appear in any order and repeat. You can modify, add, and remove the step names at any time. Only use the `onApplicationStepChange` object for analytics purposes, such as tracking the average page completion time or pages with the most drop off. Don’t use the `onApplicationStepChange` object to trigger operational or support workflows, such as sending emails to connected accounts who stopped application progress at a specific page. - **Submitted offer**: If a connected account has already submitted their financing application, the Capital financing application component renders an empty screen. Listen to the `onApplicationSubmitted` event to display a confirmation screen instead. - **Active financing in progress**: The component doesn’t render (returns null). ## Submit the component for review To use any of the Capital components in live mode, Stripe and our financial partners must review and approve all customer-facing content that references Stripe Capital: 1. [Create a test offer in a sandbox](https://docs.stripe.com/capital/testing.md#create-offer), and set the offer status to `delivered`. Use this test offer to preview the application component in your platform’s website or dashboard. 1. Capture a preview of the sandbox offer and how the embedded component displays in your platform’s UI (such as screenshots or a recorded video). 1. [Submit the preview to Stripe](https://form.asana.com/?k=8K51UWmWhttehNFD5qBLdg&d=974470123217835). After approval, Stripe enables you to use the component in live mode. ## Optional: Additional embedded components The application component is one of several [embedded components](https://docs.stripe.com/capital/embedded-component-integration.md#select-components) available for Capital for platforms. For example, you can embed the [Capital financing component](https://docs.stripe.com/connect/supported-embedded-components/capital-financing.md), which allows your connected accounts to manage their payments and view transaction history. ## See also - [Set up Capital embedded components](https://docs.stripe.com/capital/embedded-component-integration.md)