Marketplace Development
A marketplace is a platform where sellers and buyers meet, and the platform takes commission or listing fees. Architecturally it's more complex than an online store: must manage multiple parties, balance payment splitting between sellers and platform, ensure trust through reviews and guarantee systems.
Key Entities and Roles
Buyer: product search, add to cart, checkout, reviews, disputes.
Seller/Merchant: store registration, catalog management, order processing, payout receipt.
Operator/Admin: product and seller moderation, commission management, dispute resolution, financial analytics.
Payment Layer Architecture
Key difference of marketplace from regular store — split payment. Buyer pays one amount, automatically split: part to seller, part to platform.
Stripe Connect — standard for Western markets:
Buyer → Stripe → Platform account
↓
Transfer to seller (connected account)
Platform keeps fee automatically
Stripe Connect schemes:
- Direct — seller fully connected to Stripe, sees customer data
- Destination — money goes through platform and transferred to seller
- Separate charges + transfers — maximum flexibility, needed for multi-vendor cart
For CIS markets: YuKassa (Split via API deals + payouts), CloudPayments via agent scheme.
Example creating Transfer in Stripe:
import stripe
stripe.Transfer.create(
amount=8500, # in cents
currency="usd",
destination="acct_1BuAYuBnMOckkSJp", # seller's connected account
transfer_group="ORDER_95",
)
Search and Catalog
For marketplace with thousands of products from different sellers, database full-text search alone is insufficient. Typical stack:
- Elasticsearch or OpenSearch — product indexing with faceted filtering (category, price, seller, rating, attributes)
- Meilisearch — lighter alternative for small/medium marketplace (up to ~1M documents)
Faceted search requires storing indexed attributes as separate fields, not JSON blob.
Reviews and Ratings System
Review must be verified: only buyer who actually received product can leave review. Trigger — order status change to delivered or completed + N days. Seller can reply to review.
Seller rating computed from rolling average, often with weighting by recency (recent reviews more important).
Dispute Resolution System
Dispute — entity arising from buyer/seller conflict:
- Buyer opens dispute
- Seller responds
- Operator makes decision (refund / in seller's favor)
- Payment system executes decision (refund or transfer)
Timeouts: standard — seller responds within 3 days, operator decides within 5 business days.
Technical Stack
| Component | Options |
|---|---|
| Backend API | Laravel, Django, Node.js/Nest.js |
| Frontend | Next.js, Nuxt.js |
| Database | PostgreSQL |
| Search | Elasticsearch, Meilisearch |
| Queues | Redis + Bull/BullMQ, RabbitMQ |
| Payments | Stripe Connect, YuKassa |
| File Storage | S3-compatible (Cloudflare R2, MinIO) |
| Cache | Redis |
Development Timeline
MVP marketplace (seller registration, product catalog, cart, split payment, seller and buyer accounts, basic search, admin panel): 3–5 months depending on team and feature scope. Full-fledged platform with reviews, disputes, analytics, mobile apps — 6–12 months.







