Creating direct charges
Using direct charges is recommended for Standard accounts. The connected account is responsible for Stripe fees, refunds, and chargebacks. For more information about the different types of Connect charges, see Charge types.
Direct charges are supported only for connected accounts with the card_payments capability.
Get started
If you’re new to Connect, start with a guide to use direct charges to enable other businesses to accept payments directly.
Create a charge
To create a direct charge on the connected account, create a PaymentIntent
object and add the Stripe-Account
header with a value of the connected account ID:
To learn how to build a payment form, see Accept a payment.
In the step to Collect payment details, when you initialize the Stripe.js library in your client, pass the ID of the connected account to process payments for that account.
Charges that you create directly on the connected account are reported only on that account. These charges aren’t shown in your platform’s Dashboard, exports, or other reporting, although you can always retrieve this information using the Stripe API.
Collect application fees
With Connect, your platform can take an application fee on direct charges. To add an application fee on a charge, pass an optional application_fee_amount
value as a positive integer:
Note the following limitations:
- The value of
application_fee_amount
must be positive and less than the amount of the charge. The application fee collected is capped at the amount of the charge. - There are no additional Stripe fees on the application fee itself.
- In line with Brazilian regulatory and compliance requirements, platforms based outside of Brazil, with Brazilian connected accounts cannot collect application fees through Stripe.
- The currency of
application_fee_amount
depends upon a few multiple currency factors.
The resulting charge’s balance transaction includes a detailed fee breakdown of both the Stripe and application fees. To provide a better reporting experience, an application fee object is created after the 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.
Earned application fees are added to your available account balance on the same schedule as funds from regular Stripe charges. Application fees are viewable in the Collected fees section of the Dashboard.
Application fees for direct charges are created asynchronously by default. Don’t expand the application_fee
object in a charge creation request, which creates application fees synchronously as part of the request.
To access the application fee objects for application fees that are created asynchronously, watch the application_fee.created events or query the application fees endpoint.
Flow of funds with fees
When you specify an application fee on a charge, the fee amount is transferred to your platform’s Stripe account. When processing a charge directly on the connected account, the charge amount—less the Stripe fees and application fee—is deposited into the connected account.
For example, if you make a charge of $10 with a $1.23 application fee (like in the previous example), $1.23 is transferred to your platform account. $8.18 ($10 - $0.59 - $1.23) is netted in the connected account (assuming standard U.S. Stripe fees).
If you process payments in multiple currencies, read how currencies are handled in Connect.
Issue refunds
Just as platforms can create charges on connected accounts, they can also create refunds of charges on connected accounts. To refund a charge on a connected account, perform a standard create refund request using your platform’s secret key while authenticated as the connected account.
Application fees are not automatically refunded when issuing a refund. Your platform must explicitly refund the application fee or the connected account—the account on which the charge was created—loses that amount.
You can refund an application fee by passing a refund_application_fee
value of true in the refund request:
By default, the entire charge is refunded, but you can create a partial refund by setting an amount
value as a positive integer.
If the refund results in the entire charge being refunded, the entire application fee is refunded. Otherwise, a proportional amount of the application fee is refunded.
Alternatively, you can provide a refund_application_fee
value of false and refund the application fee separately through the API.