Money Flow
Where every rupiah goes. SEKEN earns from three sources per transaction. Sellers pay zero commission. Buyers pay item price plus fees that fund protection, shipping, and payment processing.
The full flow (sankey)
Checkout breakdown, IDR 120,000 item example
| Component | Amount | Goes to |
|---|---|---|
| Item price | IDR 120,000 | Escrow → seller on completion |
| Forward shipping | IDR 22,000 | Biteship 20k + SEKEN markup 2k |
| Buyer Protection Fee | IDR 6,500 | SEKEN revenue (flat fee) |
| Asuransi | IDR 1,000 | Biteship insurance |
| Biaya pembayaran | IDR 2,500 | Xendit 1.5k + SEKEN markup 1k |
| Total checkout | IDR 152,000 | , |
SEKEN revenue per transaction
Net ~IDR 10,065 per completed transaction, from three markup streams (gross ~IDR 11,000 before Xendit/Biteship processing costs):
| Stream | Amount | Source |
|---|---|---|
| Buyer Protection Fee | IDR 6,500 | Flat fee on every order |
| Shipping markup | IDR 2,000 | Added to Biteship rate |
| Payment fee markup | IDR 2,500 | Added to Xendit fee |
| Net SEKEN revenue | ~IDR 10,065 | per transaction (gross ~IDR 11,000) |
The buyer-facing Buyer Protection Fee is a flat IDR 10,000 (proteksi 6,500 + pembayaran 2,500 + asuransi 1,000), live in production, not a temporary state.
Three principles
1. Sellers pay zero commission, forever
Permanent business decision, type-enforced at the database layer via BUG-1 and BUG-2 regression tests. Reintroducing total_commission is a TypeScript compile error. This is non-negotiable.
2. Every party pays for what they used
- Buyers pay for the item, shipping, and protection
- Sellers receive 100% of listing price
- Biteship gets paid for shipping
- Xendit gets paid for processing
- SEKEN earns service fees
3. Protection fee is service revenue, not insurance
The IDR 6,500 BPF is the price of dispute resolution and platform safety. It's earned whether or not a dispute occurs, like a credit card processing fee, not an insurance premium.
Escrow logic
Item price held in fin_seller_balances from payment confirmation until completion:
Disbursement to seller
When order reaches COMPLETED:
fin_disbursementrow created with statuspending- Maker-checker review on amounts ≥ IDR 500,000
- Finance admin approves via cuan portal
- Funds transferred to seller's bank via Xendit
- Status updated to
disbursed - Seller receives notification
Maker-checker rule: Disbursements ≥ IDR 500,000 require approval from a different finance admin than the one who initiated. Prevents single-actor fraud.
Boost pricing
Separate revenue stream from per-transaction fees. Sellers pay per-day for visibility.
| Product | Price/day | Price/week (7d) |
|---|---|---|
| Homepage Spotlight | IDR 25,000 | IDR 175,000 |
| Search Boost | IDR 15,000 | IDR 105,000 |
| Email Recommendation | IDR 50,000 | IDR 350,000 |
Pricing to refine: These are launch prices. Will be A/B tested and adjusted based on uptake and ROI for sellers.
Cost structure
What SEKEN doesn't keep:
| Pass-through | Goes to |
|---|---|
| Item price | Seller |
| Biteship base shipping rate | Biteship |
| Asuransi | Biteship insurance product |
| Xendit base payment fee | Xendit |
Cuan portal, financial command center
All money flow is visible in cuan.pasarseken.id:
- Today's GMV, MTD Revenue, Active Sellers, Orders Today
- Platform Revenue Breakdown (Commission, Boost, Premium)
- Total Platform Revenue
- Disbursement Queue with maker-checker
- Fraud Alerts
- Net Revenue Reconciliation
- Xero Sync (🟡 placeholder)
- Audit Log
See Cuan Portal for full module map.
Future financial separation
Currently cuan is bundled in the main pasarseken repo. Future state separates the finance module entirely:
See Cuan Portal for migration plan.
Where to look in the codebase
| What you want | Where it lives |
|---|---|
| Fee calculation | domain/finance/CalculateOrderFees.ts |
| Escrow management | domain/finance/EscrowManager.ts |
| Disbursement creation | domain/finance/CreateDisbursement.ts |
| Maker-checker | domain/finance/MakerCheckerPolicy.ts |
| Boost pricing | domain/promotions/BoostPricing.ts |
| Cuan dashboard | src/app/pages/cuan/FinancesDashboard.tsx |
Next: Database Schema →