What we do, and where the line is
You keep the customer, the pricing and the sales channels. We keep the shelf, the label and the paper trail. You tell us stock is coming, we receive and count it; you send us orders, we pick, pack, ship and prove what happened to every unit. Nothing on this page requires an integration — everything here can be done by hand in the portal, and the API does the same things when you are ready.
1 · Getting stock to us
Add the SKU to Your catalog first, then announce the shipment under Inbound shipments with the ref you used on the paperwork — that ref is what we both call the shipment out loud, so put it on the box.
An announced shipment lets receiving stage for it instead of discovering it on the dock. When it lands we count it against the packing list. Anything that disagrees — short count, damage, wrong item — is photographed before anything moves and appears under Receiving discrepancies. You see it the day it happens, not a month later in a stock count.
A new SKU arrives unclassified and stops at receiving until we classify its handling. That is deliberate: battery, hazmat, storage class and sanitization decide how a unit ships and where it is stored, so we set them, not you. Tell us if a product ships with a battery — the API will refuse a battery declaration rather than accept one silently.
2 · Knowing what you can sell
The Inventory table has one row per SKU. The number that matters is Available: on the shelf, not already committed to an order, not held back for another channel. Publish that number to your storefront or a marketplace listing — do not add up statuses yourself.
Committed is spoken for by an order in flight. Held is here but not sellable — QC, quarantine, refurb, RMA triage. Inbound is announced and not yet received: a promise, not stock.
If you list stock somewhere we cannot see, subscribe to the
inventory.changed webhook and re-publish when it fires, rather
than polling. If you need units reserved for a specific listing so
two channels cannot sell the same box, ask us — that is a hold we place, not
a number you track.
3 · Sending us orders
Three ways, all equivalent: the New order form, a CSV paste
or upload (validate first — it tells you what is wrong before anything is
created), or POST /v1/orders. All three are idempotent on your
external_ref, so a retry never creates a second parcel.
An order without enough stock is refused unless you send
allow_backorder, which queues it and releases it automatically
when stock lands.
4 · What happens in the warehouse
Reserve assigns the oldest units first (FIFO) and builds a pick list. Each unit is scanned by serial or asset tag — scanning something that is not on the order is a hard block. The parcel is weighed and measured at pack, which is what your postage is rated on, and sealed with a photo. We buy the label, hand it to the carrier, and the scan-out is what moves the order to shipped.
Every one of those steps writes a custody event against the unit. Delivery closes the chain automatically from carrier webhooks.
5 · Following an order
Click any row under Orders for its lines, every parcel and the carrier scans. A multi-box order shows each tracking number separately.
While an order is still pending or reserved you can cancel it yourself and the reserved units go straight back into stock. Once it is picked or packed there is a physical parcel with a label on it, so changes go through a support ticket instead.
If the carrier rejects the address the order goes to exception and the order panel lets you correct it — you are usually the only one who has the right address. We verify the replacement with the carrier before putting it back in the queue, because an address that fails verification would simply land back here. If a label had already been bought, the correction is billed.
6 · Proving what happened
Every serialized unit carries a hash-chained custody record: each event is hashed over the one before it, so history cannot be rewritten after the fact without breaking the chain. Trace a unit looks one up by serial and will produce a signed attestation PDF.
This is the part that is hard to get from a warehouse that is only a shelf, and it is why intake photos, discrepancy evidence and seal photos all exist whether or not anyone ever asks for them.
7 · Returns
Your customers can start a return themselves at
custody.cisomarketplace.services/returns using a serial and their
email; your postage policy decides whether they get a prepaid label. When it
arrives we inspect and hand you the call under RMAs: restock,
return to the manufacturer, or dispose. Storage-bearing devices are sanitized
to NIST 800-88 before restock or disposal — that is not optional and we do it
regardless of the disposition you pick.
8 · What it costs
Month-to-date charges lists every billable line as it accrues, and each one traces to a logged warehouse event — receiving, storage, pick, pack, customs entry, address correction. There is nothing on the invoice that is not already visible here before the invoice exists.
Postage comes out of your wallet rather than the invoice, so a label is bought against a balance you control. Top it up before a big day; a label cannot be bought against an empty wallet.
When something is wrong
Open a ticket from Support tickets — it is attached to your tenant, so we can see the same orders and units you are looking at. Active recalls and anything needing your decision are surfaced on the dashboard rather than emailed and forgotten.