Sign in
An image of the Stripe logo
Create account
Sign in
Home
Payments
Business operations
Financial services
Developer tools
Security
All products
Home
Payments
Business operations
Home
Payments
Business operations
Financial services
Developer tools
Support
Overview
Overview
Get started
Collect payments then pay out
Enable other businesses to accept payments directly
Pay out money
Explore Connect
Onboard your accounts
Choose your account type
Standard
Express
Custom
Service agreement types
Account capabilities
Additional verifications
Update verified info
Accept payments
Create a charge
Create a payments page
Create payment links with Connect
Connect integration guide
Automatic payment methods
Set statement descriptors
Connect platforms using the Payment Methods API
Create subscriptions
Create invoices
Debit connected accounts
Pay out
Set bank and debit card payouts
Bank accounts
Manage payout schedule
Manual payouts
Payout reversals
Instant Payouts
Cross-border payouts
Crypto payouts
Manage funds
Add money to your platform balance
Account balance
Handle other currencies
Manage accounts
Best practices
Listen for updates
Dashboard account management
Platform controls for Standard accounts
Make API calls for connected accounts
Set MCCs
Testing
Manage tax forms
Overview
Get started with tax reporting
Tax form settings
Calculation methods
File tax forms
File tax forms with states
Update tax forms
Deliver tax forms
Correct tax forms
Split tax forms
Tax year changeover
Testing
No-code options
connect
·
HomePaymentsMultiparty payments

Create invoices with Connect

With Connect, you can create invoices for connected accounts, optionally taking 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.

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.

Terminal
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.

Terminal
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:

Terminal
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:

Terminal
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 Charge on behalf of a connected account.
  • 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:

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.

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?
Questions? Contact us.
View developer tutorials on YouTube.
Check out our product changelog.
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
Stripe Shell
Test mode
▗▄ ▄▟█ █▀▀ ▗▟████▙▖ ██████ ███▗▟█ ███ ███▗▟██▙▖ ▗▟█████▙▖ ███▖ ▀▀ ███ ███▀▀▀ ███ ███▀ ███ ███ ███ ▝▜████▙▖ ███ ███ ███ ███ ███ █████████ ▄▄ ▝███ ███ ▄ ███ ███ ███▄ ███ ███ ▄▄ ▝▜████▛▘ ▝▜███▛ ███ ███ ███▝▜██▛▘ ▝▜█████▛▘ ███ ▀▘
Welcome to the Stripe Shell! This is a graphical user interface of the Stripe CLI. You can use it to discover webhook events and manage your Stripe resources. By pressing ctrl + ` you can toggle it open from any page within the Stripe documentation. - View supported commands: - Listen for webhook events: - Trigger webhook events: - Call Stripe APIs: stripe [api resource] [api operation] (e.g. )
The Stripe Shell is best experienced on desktop.
$