Charge Types Fresh
Choose how funds flow between your platform, connected accounts, and customers.
Three charge types
| Charge type | Who processes? | Stripe fees paid by | Refunds / disputes from |
|---|---|---|---|
| Direct | Connected account | Platform or connected account (configurable) | Connected account balance |
| Destination | Platform | Platform | Platform balance |
| Separate charges + transfers | Platform | Platform | Platform balance |
Direct charges
Create a charge directly on a connected account. The payment appears in the connected account's balance, not your platform's balance.
Best for: SaaS platforms (Shopify, Thinkific model). Connected accounts transact with their own customers directly.
Key behaviors:
- Connected account must have
card_paymentscapability active - Charge appears on the connected account's Stripe balance
- Funds settle in the country of the connected account
- Refunds and chargebacks reduce the connected account's balance
- Platform earns via application fees on each charge
Funds flow: Customer → Connected account balance → (application fee) → Platform
You choose who pays Stripe fees: connected account or platform.
Destination charges
Create a charge on the platform and immediately transfer a portion to the connected account.
Best for: Marketplaces where the platform is the merchant of record (rideshare, contractor platforms). The customer sees the platform's name on their statement.
Key behaviors:
- Charge appears on the platform's Stripe balance
- Portion of funds immediately transfers to connected account
- Platform keeps the remainder as its fee
- Refunds and chargebacks reduce the platform's balance
- Stripe fees deducted from platform balance
Cross-region support: Destination charges support cross-region flows only in certain regions. For other regions, platform and connected account must be in the same region unless using on_behalf_of.
bash
# Destination charge with application_fee_amount
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_YOUR_KEY:" \
-d amount=10000 \
-d currency=usd \
-d "transfer_data[destination]=acct_CONNECTED" \
-d application_fee_amount=1000Separate charges and transfers
Create a charge on the platform, then separately transfer funds to one or more connected accounts. The charge and transfers are decoupled.
Best for: Marketplaces where multiple sellers are involved in a single order, or where the connected account isn't known at time of charge.
Key behaviors:
- Create the charge first, transfer later
- Can split funds across multiple connected accounts
- Platform balance debited for Stripe fees, refunds, and chargebacks
- Transfer amounts can exceed the charge amount (platform monitors balance)
Use this when:
- One payment needs to go to multiple sellers
- You process payment before knowing which seller will fulfill
- You need to transfer funds before the payment settles
bash
# Create charge on platform
curl https://api.stripe.com/v1/payment_intents \
-u "sk_test_YOUR_KEY:" \
-d amount=10000 \
-d currency=usd \
-d "automatic_payment_methods[enabled]=true"
# Then transfer to connected account
curl https://api.stripe.com/v1/transfers \
-u "sk_test_YOUR_KEY:" \
-d amount=7000 \
-d currency=usd \
-d destination=acct_CONNECTED \
-d "source_transaction=ch_CHARGE_ID"The on_behalf_of parameter
Add on_behalf_of to any charge to make the connected account the merchant of record. Stripe automatically:
- Settles in the connected account's country (minimizes declines)
- Uses the connected account's fee structure
- Displays the connected account's statement descriptor
- Uses the connected account's address on the customer's statement
Refunds by charge type
| Charge type | Refund debited from |
|---|---|
| Direct | Connected account balance |
| Destination | Platform balance (reverse transfer to recover from connected account) |
| Separate charges + transfers | Platform balance (reverse transfers separately) |
If a balance is insufficient, refund status is set to pending and processes automatically when funds are available.
Disputes and chargebacks
- Direct charges: Stripe debits the disputed amount from the connected account's balance.
- Destination / separate charges: Stripe debits the platform balance. Platform can reverse the transfer to recover from the connected account.
If a connected account has a negative balance, Stripe only debits their external bank account if debit_negative_balances=true.
Stripe fees
- Direct charges: You choose whether Stripe bills connected accounts or your platform.
- Destination / separate charges: Stripe bills your platform.
- When
on_behalf_ofis set, Stripe uses the connected account's country to determine fees.