Skip to content

Marketplace Fresh

Build a marketplace to connect sellers with customers and facilitate the exchange of goods or services.

What a marketplace integration looks like

  • Your platform is the merchant of record — customers see your brand, not the seller's
  • You collect payment from buyers
  • You pay out to sellers after taking a fee
  • You pay Stripe fees and manage disputes

Charge types for marketplaces

Charge typeWhen to use
Destination chargesSingle seller per transaction. Platform charges the customer and transfers to seller.
Separate charges + transfersMultiple sellers per transaction, or seller unknown at time of charge.

Destination charges (single seller)

bash
curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_YOUR_KEY:" \
  -d amount=10000 \
  -d currency=usd \
  -d "transfer_data[destination]=acct_SELLER" \
  -d "transfer_data[amount]=8500" \
  -d "automatic_payment_methods[enabled]=true"

The platform keeps $15 (1500 cents), the seller receives $85 (8500 cents).

Alternatively use application_fee_amount to have Stripe deduct the fee after the full amount is transferred:

bash
curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_YOUR_KEY:" \
  -d amount=10000 \
  -d currency=usd \
  -d "transfer_data[destination]=acct_SELLER" \
  -d application_fee_amount=1500

Separate charges + transfers (multi-seller)

Create a charge on the platform, then create separate transfers to each seller:

bash
# Step 1: Create charge on platform
curl https://api.stripe.com/v1/payment_intents \
  -u "sk_test_YOUR_KEY:" \
  -d amount=20000 \
  -d currency=usd \
  -d "automatic_payment_methods[enabled]=true"

# Step 2: Transfer to seller A
curl https://api.stripe.com/v1/transfers \
  -u "sk_test_YOUR_KEY:" \
  -d amount=9000 \
  -d currency=usd \
  -d destination=acct_SELLER_A \
  -d "source_transaction=ch_CHARGE_ID"

# Step 3: Transfer to seller B
curl https://api.stripe.com/v1/transfers \
  -u "sk_test_YOUR_KEY:" \
  -d amount=8000 \
  -d currency=usd \
  -d destination=acct_SELLER_B \
  -d "source_transaction=ch_CHARGE_ID"

Platform keeps 3000 cents ($30) from the $200 transaction.

Monetization

Common revenue strategies:

  • Commission per transaction — keep a percentage of each sale via application_fee_amount or partial transfer
  • Listing fees — charge sellers a subscription via Stripe Billing
  • Premium features — Instant Payouts for accelerated access to funds (you earn the fee)
  • Issuing — give sellers branded cards to pay with

Use the platform pricing tool in Dashboard → Connect → Platform pricing to automate application fee logic.

Merchant risk

Your platform covers negative balances of your connected accounts. Implement risk controls:

  • Use Radar for Platforms to screen for high-risk sellers and buyers
  • Set reserve requirements on connected accounts
  • Monitor balance.available and connected account balances

Seller onboarding

Use Stripe-hosted onboarding or embedded components:

bash
# Create connected account for seller
curl https://api.stripe.com/v1/accounts \
  -u "sk_test_YOUR_KEY:" \
  -d "controller[fees][payer]=application" \
  -d "controller[losses][payments]=application" \
  -d "controller[stripe_dashboard][type]=express"

# Create onboarding link
curl https://api.stripe.com/v1/account_links \
  -u "sk_test_YOUR_KEY:" \
  -d "account={{SELLER_ACCOUNT_ID}}" \
  --data-urlencode "refresh_url=https://example.com/refresh" \
  --data-urlencode "return_url=https://example.com/return" \
  -d type=account_onboarding \
  -d "collection_options[fields]=eventually_due"

Seller dashboard

Give sellers visibility into their sales and payouts via:

  • Express Dashboard — Stripe-hosted mini-dashboard for payouts and dispute management
  • Embedded components — Mount account management UI inside your application

Key webhook events for marketplaces

EventAction
payment_intent.succeededFulfill the order, trigger seller payout
account.updatedCheck if seller has unmet requirements
payout.failedNotify seller to update bank details
charge.dispute.createdStart dispute response process
transfer.reversedTrack reversal for refund accounting

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