Skip to content

Charge Types Fresh

Choose how funds flow between your platform, connected accounts, and customers.

Three charge types

Charge typeWho processes?Stripe fees paid byRefunds / disputes from
DirectConnected accountPlatform or connected account (configurable)Connected account balance
DestinationPlatformPlatformPlatform balance
Separate charges + transfersPlatformPlatformPlatform 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_payments capability 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=1000

Separate 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 typeRefund debited from
DirectConnected account balance
DestinationPlatform balance (reverse transfer to recover from connected account)
Separate charges + transfersPlatform 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_of is set, Stripe uses the connected account's country to determine fees.

Stripe API Reference - Self-contained docs reference, refreshed 2026-05-18