Stripe Connect Platform Fees - Accounting for Marketplaces
How ERPClaw handles Stripe Connect application fees, transfers, and connected account payouts. Direct charges, destination charges, separate charges and transfers.
If you run a marketplace or platform on Stripe Connect, you have an extra layer of complexity in your accounting: application fees, transfers, reverse transfers, and connected account payouts.
This page documents the three Stripe Connect patterns and how ERPClaw handles each.
The three Connect patterns
Stripe Connect supports three ways to split a payment between your platform and a connected account.
Pattern 1: Direct charges
The customer’s payment is charged on the connected account’s books.
Your platform takes a cut as application_fee_amount. Stripe
deducts its processing fee from the connected account.
Customer pays $100. Your application fee is $10. Stripe fee is $3.20.
Connected account’s books:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $86.80 | |
| Stripe Fees | $3.20 | |
| Application Fee | $10.00 | |
| Revenue | $100.00 |
Your platform’s books (separate ERPClaw account):
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $10.00 | |
| Application Fee Revenue | $10.00 |
Use --pattern direct when configuring Connect.
Pattern 2: Destination charges
The customer’s payment is charged on your platform’s books. You
specify a transfer_data.destination (the connected account) and a
transfer_data.amount (how much to transfer).
Customer pays $100. You transfer $90 to the connected account (retaining $10 as platform revenue). Stripe’s processing fee comes off your platform’s side.
Your platform’s books:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $96.80 | |
| Stripe Fees | $3.20 | |
| Connect Transfer | $90.00 | |
| Revenue | $100.00 | |
| Connect Transfer | $90.00 |
Wait, that’s not right; let me restate:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $96.80 | |
| Stripe Fees | $3.20 | |
| Revenue | $100.00 | |
| Stripe Clearing | $90.00 | |
| Connect Transfer | $90.00 |
The transfer is a separate event that hits clearing and connect transfer.
Connected account’s books:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $90.00 | |
| Revenue | $90.00 |
Use --pattern destination when configuring Connect.
Pattern 3: Separate charges and transfers
You charge on your platform first, then transfer separately at any later time. Maximum control.
Customer pays $100, charged on your platform:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $96.80 | |
| Stripe Fees | $3.20 | |
| Revenue | $100.00 |
Later, you transfer $90 to the connected account:
| Account | Debit | Credit |
|---|---|---|
| Connect Transfer Pending | $90.00 | |
| Stripe Clearing | $90.00 |
When the transfer settles on the connected side, ERPClaw posts on the connected account:
| Account | Debit | Credit |
|---|---|---|
| Stripe Clearing | $90.00 | |
| Revenue | $90.00 |
And on the platform side, the pending transfer becomes an actual transfer:
| Account | Debit | Credit |
|---|---|---|
| Connect Transfer | $90.00 | |
| Connect Transfer Pending | $90.00 |
Use --pattern separate when configuring Connect.
Refunds in each pattern
Direct charge refund
The refund happens on the connected account. Application fee may or
may not be refunded depending on refund_application_fee=true.
If application fee refunded:
Connected account:
| Account | Debit | Credit |
|---|---|---|
| Revenue | $100.00 | |
| Application Fee | $10.00 | |
| Stripe Clearing | $86.80 | |
| Stripe Fees | $3.20 |
Platform:
| Account | Debit | Credit |
|---|---|---|
| Application Fee Revenue | $10.00 | |
| Stripe Clearing | $10.00 |
If application fee NOT refunded (you keep your cut even on refund):
Platform: no journal entry. The $10 stays on your books.
Destination charge refund
Refund happens on platform. Optionally reverse_transfer=true to
also reverse the transfer to the connected account.
If reverse_transfer=true:
Platform:
| Account | Debit | Credit |
|---|---|---|
| Revenue | $100.00 | |
| Stripe Clearing | $96.80 | |
| Stripe Fees | $3.20 |
Then a Connect Transfer reversal moves the $90 back from the connected account to platform clearing.
If reverse_transfer=false: connected account keeps the $90; platform absorbs the loss.
Separate refund
Reverse the charge first, then optionally reverse the transfer. Most flexible but requires more discipline.
Application fee refund only
Stripe lets you refund only the application fee without refunding the charge itself. This is useful when you over-charged a marketplace fee.
Platform:
| Account | Debit | Credit |
|---|---|---|
| Application Fee Revenue | $5.00 | |
| Stripe Clearing | $5.00 |
The $5 is moved from your platform back to the connected account.
Multi-account dashboard
If you connect multiple Stripe accounts (your platform plus several
connected accounts), each gets its own ERPClaw stripe_account row
with its own GL account namespace. Reports can be run per-account or
consolidated.
erpclaw stripe-list-accounts
erpclaw stripe-revenue-summary --account-id <platform-id>
erpclaw stripe-revenue-summary --account-id <connected-id>
When to choose which pattern
Direct charges: when each connected account has its own customer relationship, brand, and tax ID. Marketplace style (Etsy, Airbnb).
Destination charges: when your platform handles the customer relationship, your tax ID is on the receipt, and the connected account is just a payee. SaaS marketplace style (your platform sells, splits revenue with vendor).
Separate charges and transfers: when you need full control over when transfers happen (delayed payouts, escrow, hold-and-release flows).
ERPClaw supports all three, but you choose one per Connect platform during setup. Mixing patterns within one platform is technically possible but produces messy books.
Source
- Stripe Connect docs: stripe.com/docs/connect
- ERPClaw Connect handler: github.com/avansaber/erpclaw-addons