How data flows between vendors

This page traces what actually happens to an order as it moves across the vendors involved — the seller, the delivery partner, any supplier or designer, and the platform. The unifying idea: one buyer order is split into per-vendor pieces, money is split at payment time, and every leg records an entry in the commission ledger.

Multi-vendor checkout & order split

A buyer’s cart can contain products from several sellers. At checkout Sellub keeps one aggregate order for the buyer but splits it into one seller order per seller:

        Buyer's cart (aggregate order)
   ┌───────────────┬───────────────┬───────────────┐
   │ Seller A item │ Seller B item │ Seller B item │  + delivery per seller
   └───────┬───────┴───────┬───────┴───────────────┘
           │  split by seller channel
           ▼               ▼
   ┌───────────────┐  ┌───────────────────────────┐
   │ Seller A order│  │ Seller B order (2 items)  │
   └───────────────┘  └───────────────────────────┘
  • Each product lives on the default (marketplace) channel and on its seller’s own channel. The split groups order lines by seller channel, so each seller gets a genuine, separate order.
  • Because of channel scoping, a seller only ever sees their own order — never other sellers’ items, customers or totals.
  • Each seller order carries the platform’s commission for that seller’s goods.

Money split at payment (the no-hold rule)

When the buyer pays (card, mobile money or bank via Paystack), the payment is split at the moment of payment across everyone’s payout accounts — Sellub never sits in the middle holding the principal:

   Buyer pays GH₵ total
        │  Paystack split
        ├─▶ Seller A subaccount   = A's goods × (1 − A's commission%)
        ├─▶ Seller B subaccount   = B's goods × (1 − B's commission%)
        ├─▶ Carrier subaccount    = shipping × (1 − logistics commission%)
        └─▶ Platform              = the commissions it kept
  • Payouts are flat amounts, computed per seller and per carrier and routed to each party’s Paystack subaccount.
  • No-hold rule: if a seller or carrier is owed money but has no active subaccount, checkout fails rather than letting their share fall to the platform. This is why completing your Payment account (subaccount + KYC) is required before you can go live.
  • If a seller delivers their own orders, the delivery share is merged into that seller’s payout.

There is no nightly “payout batch” for online card/MoMo sales — the money is already split to your subaccount when the buyer pays. COD works differently (see below): the platform bills you its commission afterward.

The commission ledger — one spine for everything

Every flow settles into a single commission ledger. Each entry records the flow type, who owes whom, how it’s collected, and its status:

Flow typeProduced byCollection
online_saleA normal card/MoMo saleSkimmed at payment
cod_saleA cash-on-delivery saleBilled to you afterward
wholesale_poA purchase order to a supplierSkimmed at PO payment
logistics_online / logistics_codA delivery legSkim / bill
design_orderA print-on-demand orderBilled to the designer
adjustmentManual corrections/refunds

Full detail — rates, wallet vs. authorization billing, refunds — is in Money & commission.

Delivery

How a carrier gets attached to a seller’s order:

1. Carrier publishes a logistics service (zones + rate card)
2. Seller wires it in  →  a delivery method appears on the seller's channel
3. Buyer picks that carrier at checkout; the rate comes from the carrier's
   zone rate card for the destination
4. On payment, the shipping amount splits to the carrier's subaccount
   (minus the platform's logistics commission)
5. The delivery leg is recorded in the ledger (logistics_online / logistics_cod)
  • Zone rates — carriers price by destination (region/city) via their rate matrix; a method is only offered where the carrier serves.
  • Freight — heavier road/water/air movement uses weight × route pricing instead of flat last-mile rates, selected when a service is tagged as freight-forwarding.
  • Self-delivery — a seller who delivers their own orders keeps the shipping share.

Sourcing — suppliers & purchase orders

How a reseller stocks from a supplier and how a sale flows back:

1. Supplier publishes a wholesale catalog
2. Reseller wires the supply service, then IMPORTS a product
   → a real listing is created in the reseller's shop at
     retail = wholesale × (1 + markup%)
3. Reseller raises a PURCHASE ORDER (PO) to restock
   → PO is placed; on payment the supplier's payout routes to
     their subaccount, platform skims a wholesale commission
   → PO recorded in the ledger as wholesale_po
4. When the reseller sells an imported item, supplier inventory
   is reserved so stock stays in sync
  • The markup you set is your margin; the wholesale commission is what the platform keeps on the PO.
  • Suppliers can be on-platform (payouts routed via Paystack subaccount) or off-platform (recorded for your bookkeeping only, no routing).

Design — print-on-demand

How a designer / print studio connects to a seller and how a custom order fulfils:

1. Designer publishes printable products (templates) as a design service
2. Seller wires the design service → gains resale rights
   → the designer's templates can appear in the seller's storefront
3. Buyer customises a template and orders it
   → the order line carries the buyer's design
4. On payment, a print job is created and dispatched to the
   designer's print provider for production & shipping
5. Ledger records a design_order (retail commission + optional
   flat per-job platform fee to the designer)

A buyer designing on the designer’s own shop needs no wire — the wire is what lets other sellers resell that designer’s products.

Putting it together

A single checkout can touch several vendors at once — for example a cart with one seller’s own product plus a second seller’s supplier-sourced product, delivered by a wired carrier:

Buyer ─▶ Aggregate order
          ├─ Seller A order  ─▶ paid to A's subaccount  ─▶ ledger: online_sale
          │      └─ delivered by Carrier X ─▶ paid to X ─▶ ledger: logistics_online
          └─ Seller B order  ─▶ paid to B's subaccount  ─▶ ledger: online_sale
                 └─ item sourced from Supplier S (earlier PO ─▶ ledger: wholesale_po)

Each vendor sees only their slice; the platform’s cut for each leg lands in the ledger; and every payout is already routed to the right subaccount at payment time.

Next: Money & commission for rates, payouts, COD and refunds.