What is platform fee rate, and how do you measure it?
Definition
Platform fee rate is the share of gross sales that never reaches the seller: platform commission, payment processing, and payout or FX fees combined. The number you care about is the effective rate computed from actual fee lines — not the rate card. Commission tiers, small-business programs, per-transaction minimums, and cross-border surcharges all pull the realized rate away from the advertised one.
What data do you need?
- Order or transaction records with gross amount and currency
- Fee lines split by type: platform commission, processing, payout, FX
- Refunds and chargebacks, and whether fees were returned on them
- Tier or program flags (small-business rate, subscription year two, plan level)
- Settlement or payout statements to reconcile against
SQL pattern
WITH monthly AS (
SELECT
platform,
date_trunc('month', ordered_at) AS month,
SUM(gross_amount) AS gross_sales,
SUM(refund_amount) AS refunds,
SUM(commission_fee) AS commission,
SUM(processing_fee) AS processing,
SUM(payout_fee + fx_fee) AS payout_and_fx,
-- Small orders where a fixed per-transaction fee dominates are
-- where the effective rate diverges most from the rate card.
COUNT(*) FILTER (WHERE gross_amount < 10) AS small_orders
FROM creator_orders
WHERE status IN ('paid', 'partially_refunded', 'refunded')
GROUP BY 1, 2
), rates AS (
SELECT
platform,
month,
gross_sales,
refunds,
small_orders,
commission + processing + payout_and_fx AS total_fees,
100.0 * (commission + processing + payout_and_fx)
/ NULLIF(gross_sales, 0) AS effective_rate_pct,
100.0 * commission / NULLIF(gross_sales, 0) AS commission_pct,
100.0 * processing / NULLIF(gross_sales, 0) AS processing_pct
FROM monthly
)
SELECT
month,
platform,
ROUND(gross_sales, 2) AS gross_sales,
ROUND(total_fees, 2) AS total_fees,
ROUND(effective_rate_pct, 2) AS effective_fee_rate_pct,
ROUND(commission_pct, 2) AS commission_pct,
ROUND(processing_pct, 2) AS processing_pct,
-- Rate drift in percentage points, not fee growth: this is what
-- catches a 30% -> 15% tier flip or a lapsed discount program.
ROUND(effective_rate_pct - LAG(effective_rate_pct) OVER w, 2)
AS rate_change_pp,
ROUND(gross_sales - refunds - total_fees, 2) AS net_to_seller,
small_orders
FROM rates
WINDOW w AS (PARTITION BY platform ORDER BY month)
ORDER BY platform, month;Common pitfalls
Where does this metric apply?
This metric commonly uses data from Gumroad, Patreon, Kajabi, Apple App Store Connect, Google Play Console, Toast, Lightspeed, plus any warehouse models built at the same grain.