Skip to content
Sign in
An image of the Stripe logo
Create account
Sign in
Home
Payments
Finance automation
Banking as a service
Developer tools
No-code
All products
Home
Payments
Finance automation
Home
Payments
Finance automation
Banking as a service
Developer tools
Overview
Billing
    Overview
    Subscriptions
    Invoicing
      How invoicing works
      No-code quickstart guide
      Payment methods for invoices
      Customers
      Products and prices
      Taxes
      Use the Dashboard
      Integrate with the API
      Customize invoices
      Edit invoices
      Send customer emails
      Hosted Invoice Page
      Invoicing and Connect
      Create Invoice Payment Plans
      Automated collections
      Global invoicing
    Quotes
    Collection methods
    Manage recurring revenue
    Products and prices
    Customer management
    About the Billing APIs
    Test your integration
    Strong Customer Authentication (SCA)
    Invoices API updates
Tax
Reporting
Data
Startup incorporation
Account
HomeFinance automationBillingInvoicing

Create an invoice with Connect

Create invoices for connected accounts and optionally take fees in the process.

Learn more about Connect

Don’t know much about Connect? Check out our Overview article.

You can create invoices for connected accounts, which support several approaches for collecting payments. You can use direct charges to create them directly on the connected account. Alternatively, you can create invoices on the platform with transfers to the connected account by using destination charges. You can also take an application fee on these invoices.

Note

Invoice transactions are based on Invoicing pricing.

Create an invoice using direct charges

To create an invoice that directly charges on a connected account, create an invoice while authenticated as the connected account. For this to work, the customer must be defined on the connected account.

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d customer=
{{CUSTOMER_ID}}
\ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"

As with creating a direct charge on a connected account, you can create a customer on a connected account by using either the platform’s publishable key or the connected account’s publishable key. You can also create a token by using shared customers. When you use direct charges, the connected account is responsible for the cost of the Stripe fees, refunds, and chargebacks.

Create an invoice using destination charges

To create an invoice that charges on the platform and creates automatic transfers to a connected account, create an invoice while providing the connected account ID as the transfer_data[destination] value.

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d customer=
{{CUSTOMER_ID}}
\ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}

For this to work, the customer must be defined on the platform account, and you must create the connected account token by using the platform’s publishable key. If charging a customer, the customer must exist within the platform account. When using automatic transfers, the platform is the business of record.

Collect application fees

On the invoice, you can optionally withhold an application fee. The following example shows an application_fee_amount for an invoice with a direct charge on the connected account:

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d customer=
{{CUSTOMER_ID}}
\ -d application_fee_amount="10" \ -H "Stripe-Account:
{{CONNECTED_ACCOUNT_ID}}
"

This example shows an application_fee_amount for an invoice with a destination charge:

Command Line
curl https://api.stripe.com/v1/invoices \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d customer=
{{CUSTOMER_ID}}
\ -d application_fee_amount="10" \ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}

Make the connected account the settlement merchant

To make the connected account the settlement merchant, charge the customer using the on_behalf_of parameter when you create or update the invoice. You must set on_behalf_of in the API before finalizing an invoice—the Dashboard doesn’t have an interface for invoices you send on behalf of connected accounts.

Setting the on_behalf_of parameter applies the branding and contact information of the connected account to the invoice email, invoice PDF, Hosted invoice page, and invoice receipt. When you use on_behalf_of, emails aren’t sent in test mode—just like standard invoices that you send with the API. However, you can verify that Stripe created the invoice by checking the Invoices page of the Dashboard.

To collect payments on behalf of the connected account, the connected account also needs to have account capabilities enabled for the relevant payment methods. You can automatically transfer payments for invoices created on behalf of the connected account by using destination charges. For more information about the on_behalf_of​ parameter, refer to the relevant Connect documentation:

  • For automatic transfers to the connected account, refer to the on_behalf_of parameter details in the Create a charge guide.
  • For information on how to transfer payments manually, refer to Transfer availability.
  • For a list of account capabilities that are required to collect payments on behalf of the connected account, refer to Payment method capabilities.

The following example shows how to use the on_behalf_of parameter for a new invoice by using separate charges and transfers:

Command Line
curl https://api.stripe.com/v1/invoices \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d on_behalf_of=
{{CONNECTED_ACCOUNT_ID}}
\ -d customer=
{{CUSTOMER_ID}}

As with standard destination charges, ​​you can set an application_fee_amount on invoices. This example shows how to use on_behalf_of with a destination charge and application fee.

Command Line
curl https://api.stripe.com/v1/invoices \ -u "
sk_test_4eC39HqLyjWDarjtT1zdp7dc
:"
\ -d on_behalf_of=
{{CONNECTED_ACCOUNT_ID}}
\ -d application_fee_amount=10 \ -d "transfer_data[destination]"=
{{CONNECTED_ACCOUNT_ID}}
\ -d customer=
{{CUSTOMER_ID}}

Invoices created on behalf of a connected account ​​don’t support:

  • Account tax IDs.
  • Bank transfers payment methods, such as ACH Credit Transfer and paper checks.

See also

  • Create charges
  • Share customers across accounts
  • Multiple currencies
Was this page helpful?
Need help? Contact Support.
Watch our developer tutorials.
Check out our product changelog.
Questions? Contact Sales.
Powered by Markdoc
You can unsubscribe at any time. Read our privacy policy.
On this page
Create an invoice using direct charges
Create an invoice using destination charges
Collect application fees
Make the connected account the settlement merchant
See also
Stripe Shell
Test mode
Welcome to the Stripe Shell! Stripe Shell is a browser-based shell with the Stripe CLI pre-installed. Login to your Stripe account and press Control + Backtick on your keyboard to start managing your Stripe resources in test mode. - View supported Stripe commands: - Find webhook events: - Listen for webhook events: - Call Stripe APIs: stripe [api resource] [operation] (e.g. )
The Stripe Shell is best experienced on desktop.
$