Build a custom Capital programPrivate preview
Integrate with our API to build a custom Capital program.
Stripe Capital enables your platform to retrieve pre-qualified financing offers for your connected accounts, expose a compliant loan application, and provide ongoing reporting for in-progress financing.
This guide outlines how platforms using Connect can integrate with the Capital API.
Capital lifecycle
To launch the program, your platform must support the three phases of the Capital lifecycle:
- Marketing financing offers to eligible users.
- Providing access to the financing reporting page for in-progress financing.
- Continuing to provide access to the financing reporting page after users have fully repaid their financing.
This guide explains how to:
- Retrieve financing offers for eligible users.
- Make the financing application available to users.
- Provide users access to the financing reporting page.
Confirm your branding settingsDashboard
All users who receive Capital offers see your business name, icon, logo, and branding color in the offer emails, application, and financing reporting page.
Navigate to your Connect branding settings, and make sure your platform’s branding settings are correct.
Create an undelivered financing offer in test modeDashboard
We recommend using test mode tooling to build your integration. In test mode, visit the Capital Dashboard.
- Click Create to open the Create financing offer modal, which allows you to create financing offers in test mode. The default options create an undelivered financing offer with a 1,000 USD loan amount.
- Leave the default options, and click Create financing offer.
- From the Dashboard, click the row corresponding to the offer you created.
The loans and financing section of the connected account details page displays details about the user’s financing offer.
Retrieve financing offersServer-side
You can retrieve financing offers for all of your platform’s users with the List financing offers endpoint.
If the offer is successfully created, you receive a response similar to the following:
{ "object": "list", "url": "/v1/capital/financing_offers", "has_more": false, "data": [ { "id": "financingoffer_abc123", "object": "capital.financing_offer", ..., }, {...} ] }
You can look up a financing offer using the Retrieve financing offer endpoint. Retrieve the first financing offer from the list above.
Send offer emailServer-side
Stripe sends the capital.
webhook after a financing offer is created. Update your webhook integration to listen for the capital.
webhook. If you send your own offer emails, the webhook is an important notification to notify the user of their offer.
Warning
Make sure the contents of your offer email comply with banking regulations by reviewing the marketing guidance page. Submit all changes to user-facing materials for review at capital-review@stripe.com.
In the email, link users to a dedicated Capital section in your platform dashboard. Users access the Capital financing application with Account Links. Account Links expire shortly after they’re generated, so provide a way for users to regenerate the application link. Include a link to the financing application in your platform dashboard by generating an Account Link of type capital_
.
If the creation of an account link is successful, you receive a response similar to the following:
{ "object": "account_link", "created": 1611264596, "expires_at": 1611264896, "url": "https://connect.stripe.com/capital/offer/SrjgLUfa0O7K" }
After updating your webhook integration, create another offer in the Dashboard, and verify you receive the capital.
webhook.
Mark the offer as delivered
Update your webhook integration to mark the financing offer as delivered after sending the offer email. Marking an offer as delivered is required and is an affirmation that you have marketed the offer to the user.
Verify the status of the financing offer is delivered using the Dashboard or the financing offer API.
Listen for status changesServer-side
In addition to the capital.
webhook, Stripe sends additional webhooks as the financing offer transitions through different states. The following is a full list of the webhooks you can receive:
Webhook identifier | Trigger |
---|---|
capital. | Financing offer is created |
capital. | User submits their offer application |
capital. | Stripe approves the offer application and funds are paid out to the user |
capital. | User fully repays the financing balance |
capital. | User cancels the financing offer |
capital. | User’s application isn’t approved |
capital. | Financing offer expires and is no longer available |
capital. | Financing offer is replaced with a new financing offer |
From the Dashboard, find the offer you delivered earlier.
- Click the overflow menu ().
- Click the Expire offer option, which lets you simulate expiring the offer.
- Verify you receive the
capital.
webhook.financing_ offer. expired
With the exception of capital.
, you can simulate all webhooks using test mode tooling.
Apply for an offerDashboardServer-side
You can simulate the capital.
webhook by applying for an offer.
- From the Dashboard, create a delivered offer with a maximum loan amount of 20,000 USD.
- Generate an account link of type
capital_
, and navigate to the link. Here, you can preview what the application looks like for your users.financing_ offer - Continue to the end of the application, and click Submit.
- Verify you received the
capital.
webhook.financing_ offer. accepted - View the offer in the Dashboard, and check it has status accepted.
View the application tracker
A financing offer with status accepted is pending application review by the Stripe servicing team. While this review takes place, you can direct the user to the financing reporting page. The financing reporting page contains an application tracker with an approximate timeline of the application review.
Generate an Account Link of type capital_
.
Navigate to the link, and view the application tracker.
Approve the applicationDashboard
In the Dashboard, find the row corresponding to the accepted offer.
- Click the overflow menu ().
- Click the Approve and disburse funds option, which lets you simulate an application approval and funds disbursal.
- Verify you receive the
capital.
webhook, which notifies you that the financing has been paid out.financing_ offer. paid_ out - Generate another Account Link of type
capital_
. The reporting page now provides access to payout and repayment transaction details for the user’s in-progress financing.financing_ reporting - Click Make payment, and create a payment transaction.
Note
It takes up to 15 minutes for the Make payment button to be enabled on the reporting page for test mode financing offers.
After the transaction is processed, view the payment in the transactions table. You can programmatically view the user’s paid-down financing amount for in-progress financing using the financing summary API.
If the retrieval of the financing summary is successful, you receive a response similar to the following:
{ "object": "capital.financing_summary", "details": { "currency": "usd", "advance_amount": 1000000, "fee_amount": 100000, "withhold_rate": 0.2, "remaining_amount": 999950, "paid_amount": 50, "current_repayment_interval": { "due_at": 123456789, "remaining_amount": 50, "paid_amount": 50 }, "repayments_begin_at": 123456789, "advance_paid_out_at": 123456789 } }
Fully repay the financingDashboard
In the Dashboard, find the row corresponding to the paid-out financing.
- Click the overflow menu ().
- Click the Repay offer option, which lets you simulate fully paying down the financing balance.
- Verify you receive the
capital.
webhook, which notifies you that the financing has been fully paid down.financing_ offer. fully_ repaid - Generate another Account Link of type
capital_
.financing_ reporting
After a user pays down their financing, they can access past financing details on the reporting page at any time.
Review your test mode integration
By now, your integration:
- Responds to the
capital.
webhook by sending an offer email and marking the offer as deliveredfinancing_ offer. created - Exposes the financing application link in your platform dashboard
- Exposes the financing reporting link in your platform dashboard
The Capital section of your platform dashboard might appear differently depending on which phase the user’s financing is in. Review the state diagram below for a list of possible financing offer status values.
Prepare to enable automatic offers
When automatic offers are enabled in live mode, Stripe automatically creates financing offers for your users on a daily basis. Before enabling automatic offers, make sure that you:
- Confirm and update email addresses for your users through Comms Center. To be eligible for Capital financing, users must have an email saved with Stripe so that they can receive transactional emails such as payment progress updates.
- Contact us to enable live mode access to the financing offers API.
Enable additional features
Over time, some of your users might become eligible for refills. Refills are additional financing offers sent to users who have made substantial repayment progress towards their in-progress loans. Follow the refills integration guide to update your integration to support refill financing offers.
If you want to include Capital transactions on your platform dashboard, see the reporting and reconciliation guide.