Adding a Multi-Vendor Marketplace to an Existing Platform
Bringing third-party sellers, catalogs and stock into a live financial-services platform — without surrendering the system of record to a commerce engine.
- Entry point: Buyers & sellers
- Core system: PlatformSellers · carts · orders · payments
- Process: Stock-sync queueAfter payment
- Safeguard: Sync workerPer-seller batches · back-off
- State / data: Commerce engineInternal GraphQL · channel per seller
Seller lifecycle
- Entry point: Application
- Safeguard: Admin approvalProvisions channel + stock
- Core system: Active
- Process: Suspended / reactivated
The platform owns sellers, carts and payments; the commerce engine owns catalog and stock.
Challenge
The platform already owned customer accounts, carts, card payments and gift cards. It needed multi-seller catalogs and inventory — but replacing its core with an off-the-shelf commerce product would have meant migrating everything that already worked. And stock had to stay correct even when one side of the integration was briefly unreachable.
Approach
- Keep one system of record. The existing application remains the "marketplace brain" for sellers, carts, orders and payments. A headless commerce engine is used purely as an internal catalog and stock service, reachable only server-to-server.
- Isolate sellers structurally. Each seller gets its own channel and stock location.
- Make checkout predictable. Price and availability are snapshotted into the cart, so totals don't shift mid-checkout.
- Decouple stock from payment. Stock is deducted after payment through queued jobs, so the commerce engine never needs to know about payments.
Implementation
- A GraphQL client for the commerce engine's catalog and stock operations.
- A seller lifecycle: application → admin approval (provisioning a channel and stock location) → suspension with recorded reason → reactivation, plus listing and profile review.
- A stock-sync worker that groups adjustments per seller, retries with exponential back-off and surfaces failures in an admin queue with manual retry.
- Mixed carts that split marketplace and gift card items over the existing card payment.
- Seller payouts, statements, charges, pickup locations and return workflows across buyer, seller and admin views.
Outcome
Sellers are onboarded, moderated and paid inside the platform customers already use. Inventory reconciles across transient failures instead of silently drifting.
Technical perspective
Splitting ownership is the hard part: orders and payments live in one system, stock in another. That makes the integration eventually consistent by nature, so retries, idempotency and failures an operator can see and act on are design requirements, not afterthoughts.
Facing something similar?
Tell us about your systems and what needs to change. We’ll tell you honestly whether we can help.
More work
Building and Launching Invoiceur
Nerdla product
- Description
- On-device model
- Deterministic layer
- Review screen
- Draft invoice
- Private storage
A native, offline-first invoicing app on the App Store for Mac, iPhone and iPad, with AI-assisted drafting that keeps every amount deterministic.
Read the case study
Connecting Legacy Accounting to Modern Commerce
A regional distributor of truck and industrial parts
- QuickBooks Desktop
- Web Connector
- Integration service
- AI categorizer
- Catalog + vectors
- Storefront
Thousands of accounting-only items became a categorized, typo-tolerant storefront, and web orders now reach QuickBooks Desktop without re-keying.
Read the case study
Engineering Reliable Payment & Fulfillment Workflows
A regional consumer financial-services platform
- Cardholder
- 3D Secure 2
- Server-to-server response
- Verification
- Atomic state change
- Fulfillment guard
Replayed, forged and concurrent completions cannot produce a payment or a fulfillment, and gift card issuance can be frozen without stopping checkout.
Read the case study