Stripe Connect and the Charges API
Legacy API
The content of this section refers to a Legacy feature. Use the Payment Intents API instead.
The Charges API doesn’t support the following features, many of which are required for credit card compliance:
- Merchants in India
- Bank requests for card authentication
- Strong Customer Authentication
Learn how Connect lets you make charges and issue transfers for connected accounts. How you configure these options determines your Stripe fees.
Connect supports three approaches to creating payments for a connected account. For more information about the different types of Connect charges, see the documentation on choosing an approach. Stripe fees are determined by how you configure these options.
This page explains only how to make calls to the Charges API for connected accounts. Check the linked pages for more information about calls to other APIs for related operations.
Direct charges
To create a direct charge on the connected account, create a Charge object and add the Stripe-Account
header with a value of the connected account ID:
This example uses a test token—tok_visa—but you could tokenize a test card using Stripe.js and Elements instead.
See Accept a payment for more details.
Collect application fees on direct charges
With Connect, your platform can take an application fee on direct charges. To assess an application fee on a charge, pass an optional application_
value as a positive integer:
See Direct charges for information on transfer availability, refunds, and so on.
Destination charges
To create a destination charge, pass the connected account’s ID in the transfer_
attribute:
This example uses a test token—tok_visa—but you could tokenize a test card using Stripe.js and Elements instead.
See Accept a payment for more details.
Collect fees on destination charges with application_fee_amount
When creating destination charges with an application_
, the full charge amount is immediately transferred from the platform to the transfer_
account after the charge is captured. The application_
(capped at the full amount of the charge) is then transferred back to the platform.
To provide a better reporting experience, an application fee object is created after the application fee is collected. Use the amount
property on the application fee object for reporting. You can then access these objects with the Application Fees endpoint.
Collect fees on destination charges with transfer_data[amount]
You can also take a fee by using transfer_data[amount].
The transfer_
is a positive integer reflecting the amount of the charge that’s transferred to the transfer_
. You subtract your platform’s fees from the charge amount, then pass the result of this calculation as the transfer_
:
See Destination charges for information on transfer availability, refunds, and so on.
Separate charges and transfers
Caution
You can only use separate charges and transfers if both your platform and the connected account are in the same region. For example, if your platform account is in Europe, the connected needs to be in Europe too.
To create a charge and set up the associated transfer, create a transfer_
and assign the charge to the transfer_
.
This example uses a test token—tok_visa—but you could tokenize a test card using Stripe.js and Elements instead.
See Accept a payment for more information.
Using on_behalf_of with separate charges and transfers
With separate charges and transfers, by default:
- Charges are settled in the platform’s country
- The fee structure for the platform’s country is used
- The platform’s information is displayed on the customer’s credit card statement
To use the connected account’s country and to display their information instead, use the on_
argument.
Caution
You can only use on_
with separate charges and transfers for connected accounts with the card_payments capability.
See Creating separate charges and transfers for information on transfer availability, refunds, and so on.