The customer buys three products in one checkout. Two come from different sellers. One arrives late. Another gets returned after the first seller has already become payable.
The storefront still calls it Order #1247.
Your seller portal, OMS and finance system may now be talking about six different things.
That is where marketplace architecture usually stops being a catalog problem and becomes a state-reconciliation problem.
The storefront’s order is a customer concept
A unified checkout is useful because the customer should not need to understand your seller architecture.
They bought from your marketplace.
They expect one confirmation, understandable tracking and a coherent return experience.
Behind that experience, however, one order is rarely enough.
Suppose a customer buys:
- a shirt supplied by the marketplace operator;
- shoes from Seller A;
- a bag from Seller B.
At checkout there is one customer transaction.
Operationally there may already be three fulfilment obligations.
Seller A should not see Seller B’s customer or commercial data.
Seller B’s warehouse should not be waiting for Seller A before shipping.
A cancellation against the shoes should not cancel the shirt.
A return of the bag should not automatically reverse Seller A’s payable.
The customer order is therefore the parent business event, not the only operational record.
Model the seller obligation explicitly
A marketplace needs an object beneath the customer order that answers a simple question:
What exactly does this seller owe for this purchase?
Call it a seller order, sub-order, fulfilment order or another term.
The name matters less than the boundary.
At minimum, it should preserve:
- seller identity;
- parent customer order;
- seller-owned lines;
- quantity;
- price and discounts attributable to those lines;
- fulfilment responsibility;
- shipment state;
- return state;
- and stable identifiers that downstream systems can reference.
Tailoredd’s current Emporio model, for example, documents splitting a multi-vendor cart into seller sub-orders with separate fulfilment routing. Its finance boundary then passes seller and order-line events downstream rather than pretending the customer order is the accounting unit. (Tailoredd)
That is one implementation.
The broader principle applies regardless of platform:
Do not make the customer-facing order carry every seller-level operational responsibility.
There isn’t one order status
This is where many marketplace diagrams become misleading.
They draw:
Order → Paid → Shipped → Delivered
That works until Seller A ships today and Seller B ships on Tuesday.
The parent order might reasonably show Partially Shipped.
Seller A’s obligation is Shipped.
Seller B’s is Awaiting Fulfilment.
Finance may have neither seller marked payable yet.
All three statements can be correct simultaneously.
A useful architecture therefore separates at least four state domains:
- Customer state — What can we truthfully tell the shopper?
- Seller state — What does each seller still need to do?
- Fulfilment/OMS state — What has actually been allocated, shipped, delivered, cancelled or returned?
- Financial state — What is earned, refundable, withheld, payable, paid or recoverable?
Trying to compress these into one universal status creates brittle integrations.
Delivered is not the same as payable
This distinction deserves more attention.
A seller may have fulfilled its obligation when the parcel is delivered.
That does not necessarily mean finance should immediately release money.
The marketplace’s commercial model might require a return window to pass.
There may be commissions, shipping charges, tax treatment, promotional funding or other adjustments.
There may be a dispute.
There may already be a return in transit.
Platforms solve this differently.
Mirakl, for example, now offers a dedicated payout capability that reconciles orders, refunds, commissions and seller balances before disbursement. (Mirakl)
VTEX’s split-payout model takes another approach: its payment protocol can pass marketplace and seller recipients, calculated commissions and liability information to a supporting payment provider, including handling complete or partial refunds in split operations. (VTEX Developers)
Those are product-specific implementations.
The architectural lesson is vendor-neutral:
Fulfilment state should produce financial events. It should not be mistaken for financial state.
Returns expose weak marketplace models quickly
Now return only Seller B’s bag.
The customer thinks:
I am returning one item.
The platform may need to coordinate:
- return eligibility;
- seller notification;
- reverse-logistics responsibility;
- physical receipt or inspection;
- customer refund;
- commission reversal;
- seller payable adjustment;
- tax/ERP entries;
- parent-order status;
- customer-service visibility.
And timing matters.
If the seller has not been paid yet, finance may reduce the upcoming payable.
If the seller has already been paid, the marketplace may need to create a negative adjustment against a later settlement or use another contractually defined recovery mechanism.
If a payment dispute occurs later, yet another financial event can arrive after the operational order appeared finished.
The original order record should not be rewritten as if the later event never happened.
Append the event.
Preserve the history.
Recalculate the financial obligation.
Treat money as a ledger, not a status field
A common design mistake is to put something like this on the seller order:
settlement_status = PAID
That is useful as a summary.
It is not enough as the accounting model.
Consider a ₹10,000 seller line with:
- ₹1,500 marketplace commission
- ₹200 seller-funded promotion
- ₹100 adjustment
- then a ₹3,000 partial return two weeks later.
The question is not simply whether the seller is “paid.”
The system needs to explain why the seller is owed a particular amount.
That usually means representing financial events separately:
- sale;
- commission;
- promotion allocation;
- shipping charge;
- refund;
- commission reversal;
- adjustment;
- chargeback;
- payout.
The resulting seller balance can be derived from those events.
This is one reason Tailoredd’s Emporio architecture deliberately stops at a financial-data handoff: its current public model sends order-line and lifecycle events to the merchant’s ERP/accounting layer, where commission and disbursement are governed. Emporio itself is not presented as the banking payout engine. (Tailoredd)
That boundary is not the only valid marketplace design.
It is, however, an example of making ownership explicit.
Reconciliation is not an end-of-month finance task
If four systems participate in the lifecycle, reconciliation should be part of the architecture.
Ask these questions continuously:
- Does every seller sub-order still point to a valid parent order?
- Does every shipped seller line have a corresponding OMS/fulfilment event?
- Does every refund reference the correct original line and seller?
- Does every financial adjustment have a source event?
- Has any return produced a refund but no seller adjustment?
- Has a seller become payable for an order that is still cancelled or disputed operationally?
- Are any events stuck between systems?
These checks are far more useful than waiting for finance to discover a discrepancy after payout.
Design for replay before the first incident
Distributed commerce systems retry.
A marketplace webhook may time out after the receiving system has already committed the event.
The sender retries.
Without a stable event identifier or idempotency strategy, the second delivery can become a second refund, second adjustment or duplicate order.
That is not a marketplace-specific problem, but marketplaces multiply the number of boundaries where it matters.
Every meaningful cross-system event should have enough identity to answer:
Have I processed this exact business event before?
Retries should be safe.
Failures should be visible.
Dead-lettered or quarantined events should be recoverable without manually editing database rows.
The happy path is easy to demo.
Replay behaviour is what determines whether the operation survives a bad Tuesday.
The OMS should own order truth, not every marketplace responsibility
Another common architecture debate is whether the OMS should absorb all of this.
Usually, no.
The OMS is a strong candidate to own customer-order lifecycle, fulfilment state and order-level exceptions.
It does not automatically follow that it should own seller onboarding, catalog moderation, buy-box logic, commissions, KYC or treasury.
Likewise, a marketplace platform should not silently become the warehouse-management system simply because sellers fulfil orders through it.
Tailoredd’s current Commerce Pipe architecture makes this separation explicit for a different marketplace model: supported Amazon, Flipkart and Myntra orders enter Salesforce OMS, Salesforce OCI remains the availability/reservation authority, and the merchant’s WMS or DMS retains physical warehouse execution. (Tailoredd)
Emporio solves a different problem: operating your own multi-vendor marketplace with seller onboarding, offers, buy-box and sub-order workflows. (Tailoredd)
That distinction matters.
Selling on marketplaces and operating a marketplace share integration problems, but they are not the same architecture.
Write down the system-of-record table
Before selecting software, build this table.
| Business fact | Authoritative owner |
|---|---|
| Customer order | Commerce/OMS |
| Seller obligation | Marketplace orchestration |
| Available-to-sell inventory | Inventory service/OMS |
| Physical warehouse state | WMS/DMS |
| Shipment/tracking | Fulfilment carrier/WMS, surfaced through OMS |
| Return eligibility | Commerce/OMS policy |
| Seller commission | Marketplace/ERP according to operating model |
| Seller payable | ERP/financial ledger or payout platform |
| Banking disbursement | Payment/payout/treasury layer |
| Customer refund | Payment + order/finance coordination |
Your implementation may assign the owners differently.
That is fine.
The dangerous answer is:
“Both systems own it.”
If two systems can independently decide the same business fact, reconciliation eventually becomes conflict resolution.
Test the ugly order before the perfect one
A marketplace proof of concept often tests:
- Seller joins.
- Product appears.
- Customer buys.
- Seller ships.
- Customer receives.
- Everything works.
That proves surprisingly little.
Before launch, test this order instead:
- Customer buys products from Seller A and Seller B.
- Seller A ships.
- Seller B cancels one line.
- Seller A’s parcel is delivered.
- Customer returns one Seller A item.
- Refund succeeds.
- ERP is unavailable when the return event arrives.
- The event retries.
- Seller A’s next settlement is calculated.
- Customer service opens the original order.
Now ask each system what happened.
If they all tell a compatible story, the architecture is becoming credible.
If they don’t, another feature on the seller portal will not fix it.
The marketplace is the reconciliation
Catalog onboarding, seller portals and buy boxes are visible marketplace features.
They are not what makes the platform dependable.
The harder job is preserving agreement while the customer order fragments across sellers, warehouses, returns, payments and finance.
That leads to a principle worth carrying into any marketplace evaluation:
A marketplace is not complete when it can split an order. It is complete when it can explain how every split comes back together.
That means every seller obligation can be traced to the customer order.
Every fulfilment change can be traced to the relevant seller line.
Every refund can be traced to the transaction it reverses.
Every payable can be explained from underlying events.
And every disagreement between systems has somewhere visible to go.
If you’re evaluating marketplace architecture, start there.
The storefront is the easy part.
This article presents Tailoredd’s architectural analysis of multi-vendor marketplace operations. Product-specific examples are based on publicly documented capabilities as of October 17, 2026; implementation, financial, tax and regulatory responsibilities vary by merchant, provider and jurisdiction.
