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
Update verified info
Accept payments
Create a charge
Direct charges
Destination charges
Separate charges and transfers
Create a payments page
Add payment methods
Set statement descriptors
Clone customers across accounts
Create a subscription
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
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
Modify tax forms
Deliver tax forms
Correct tax forms
Tax reporting for Payable users
Testing
connect
·
HomePaymentsMultiparty paymentsCreate a charge

Creating direct charges

With Connect, you can make charges directly on the connected account and take fees in the process.

Direct charges are 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 the documentation on choosing an approach.

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:

Terminal
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "payment_method_types[]"=card \ -d amount=1000 \ -d currency="usd" \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \

To learn how to build a payment form, see the documentation on how to Accept a payment.

In Step 3 when initializing Stripe.js library in your client, pass the ID of the connected account to process payments for that account.

// Set the connected Stripe Account to collect payments on behalf of that account var stripe = Stripe('<%= @sample_credentials.test_publishable_key %>', { stripeAccount: "{{CONNECTED_STRIPE_ACCOUNT_ID}}" });

Charges created directly on the connected account are reported only on that account; they aren’t shown in your platform’s Dashboard, exports, or other reporting, although you can always retrieve this information with a call to the API.

Collect application fees

With Connect, your platform can take an application fee on direct charges. To assess an application fee on a charge, pass an optional application_fee_amount value as a positive integer:

Terminal
curl https://api.stripe.com/v1/payment_intents \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d "payment_method_types[]"=card \ -d amount=1000 \ -d currency="usd" \ -d application_fee_amount="123" \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \

Note the following limitations:

  • The value of application_fee_amount should be positive and lower than the amount of the charge. The application fee collected will be capped at the amount of the charge.
  • There are no additional Stripe fees on the application fee itself.
  • 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 once 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. Do not expand the application_fee object in a charge creation request, which creates application fees synchronously as part of the request.<br> 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 a charge of $10 with a $1.23 application fee is made (as in the example above), $1.23 is transferred to your platform account, and $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, you should also read how that is 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:

Terminal
curl api.stripe.com/v1/refunds \ -u
sk_test_4eC39HqLyjWDarjtT1zdp7dc
: \ -d charge="{CHARGE_ID}" \ -d refund_application_fee=true \ -H "Stripe-Account: {{CONNECTED_STRIPE_ACCOUNT_ID}}" \

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.

See also

  • Creating Charges
  • Multiple Currencies
  • Standard Accounts
  • Cloning Saved Payment Methods
  • Statement Descriptors with Connect
Was this page helpful?
Questions? Contact us.
Developer tutorials on YouTube.
You can unsubscribe at any time. Read our privacy policy.
On this page
Get started
Create a charge
Collect application fees
Flow of funds with fees
Issue refunds
See also