On this page
1. The problem with shipping cards
Consider the ordinary version of a two-card trade between strangers. Each side packs a card, buys a label, and hands a small rigid object to a logistics network optimised for throughput rather than care. Then both wait.
5–10 days of exposure
From the moment the first parcel is tendered until the second is delivered, both parties are exposed to the other's non-performance and to the carrier's.
Two chances to lose the card
Two parcels, two sorting networks, two porches. Loss is uncommon per shipment and unavoidable at volume.
Two chances to damage the grade
Handling is where grade goes to die. Every transit is an opportunity for a corner ding worth four figures on a card where PSA 9 to PSA 10 is a 10x step.
Once both cards are already in the same custody network, none of that applies. The trade stops being a logistics problem and becomes a database problem — and database problems have exact solutions.
2. Submission and intake
You build a manifest in the dashboard: game, set code, collector number, language, finish, edition, and the grade if it is slabbed. We issue a prepaid, insured inbound label routed to whichever facility is closer to you. The submission gets a barcode; every line item gets a license plate number that will follow that physical object for the rest of its life.
SUB-4F2A17-0093 // submission barcode
├─ LPN7761A8BE63 // 1999 Base Set Charizard 4/102, 1st Ed, PSA 9, cert 52820658
├─ LPN119AD09D46 // LOB-EN001 Blue-Eyes White Dragon, 1st Ed, PSA 9
└─ LPNDBB2EB801F // RA02-EN019 Blue-Eyes (Quarter Century), raw
destination : MID-01 (Midwest)
declared : $49,300
service : adult signature required, direct hold
Receiving reconciles the physical box against that manifest under camera before anything else happens. Then every item goes across the authentication bench — four calibrated captures, weight, caliper, cert lookup and holder inspection. That sequence is documented in detail on the grading page, because it is really a grading question rather than a logistics one.
Intake is where the audit trail starts. Every step writes a hash-chained event — dock scan, imaging with its capture list and measurements, cert verification with the population figure at the time, bin assignment. By the time an item is tradable it already has a provenance record that no later dispute can quietly rewrite.
3. The custody state machine
An item is always in exactly one custody state, and the legal transitions are enumerated. This is not bureaucracy — it is what makes "you cannot sell a card that is already on a truck to your house" a property of the system rather than a rule someone has to remember.
inbound → received
received → imaging
imaging → authenticating
authenticating → vaulted | quarantine
quarantine → vaulted | returned
vaulted → picking // ← only state that is tradable
picking → qa_reimage | vaulted // cancel returns it to the shelf
qa_reimage → packed | vaulted // QA mismatch stops the parcel
packed → manifested
manifested → in_transit
in_transit → withdrawn
Tradability is defined narrowly: an item is tradable if and only if it is vaulted
and not reserved against something else. A card committed to a resting sell order, an
open swap offer, or a pending ship-out is not available, and every command that would move it
checks first and refuses.
4. Trading: the order book
Each SKU — a printing plus a grade — gets a continuous limit order book with price–time priority. Standard mechanics, no surprises:
- Price–time priority. Better prices fill first; at equal price, the order that arrived first fills first.
- The resting order sets the price. If you lift an offer at $429.45, you pay $429.45 — the maker's price, not yours. Improving on the touch does not cost you the improvement.
- Maker and taker fees differ. Resting liquidity pays 2%; crossing the spread pays 4%. Posting a bid and waiting is materially cheaper than hitting the offer.
- Asks are backed by specific slabs. You do not sell "a PSA 10" — you sell the copy in bin D14-R3-S07, and the engine reserves that exact item against the order.
- Bids are backed by reserved cash. The reservation covers the notional plus the worst-case taker fee, so a resting bid can never fail for insufficient funds later.
- No self-crossing. Your own orders never match each other.
- Market orders do not rest. A market order sweeps until filled or the liquidity runs out; any remainder expires rather than sitting on the book at an unbounded price.
Why grade-specific books and not one book per card. Because fungibility is the whole basis of an order book. Two PSA 10s of the same printing are interchangeable — either satisfies your buy order. A PSA 9 is not a slightly worse version of the same instrument, it is a different instrument, often at a tenth the price. Pooling them would mean every fill is a negotiation, which is precisely what an order book exists to avoid.
5. Trading: direct swaps
Order books are for fungible things. Collections are not fungible, and a lot of real trading is "my Lugia and $180 for your Blue-Eyes." That is a swap: an arbitrary set of items on each side, plus a cash difference — the boot — in either direction.
{ "offered": ["itm_c8a1f9", "itm_71b0de"], // mine, reserved on send
"requested": ["itm_2de503"], // theirs, re-checked on accept
"boot": { "currency": "USD", "amount_cents": 18000 },
"counterparty": "usr_9b71c4",
"expires_in": 86400 }
Sending an offer reserves your side immediately, so you cannot offer the same card to five people and let four of them down. The other side is deliberately not locked — it would be hostile to freeze someone's inventory because a stranger made an offer. Instead every leg is re-validated at the moment of acceptance, and an offer whose legs have moved on simply fails cleanly rather than settling something wrong.
6. What settlement actually does
Here is the entire physical consequence of a settled trade:
Nothing.
Physically nothing. Legally and fiscally, quite a lot. Title changed hands, which means both parties disposed of property. A card-for-card swap is a barter exchange: both sides realise gain or loss measured against the fair market value received, and like-kind deferral under §1031 has not covered collectibles since 2017. The slab staying in its bin is an operational fact with no bearing on any of that. How trades are treated for tax.
The card stays in its slot. The bin address does not change. The license plate does not change.
The cert number does not change. What changes is the owner field on the item
record, and that change is written as a balanced double-entry journal line alongside the cash
movement and the fees, all inside one transaction that either commits whole or does not
happen.
The convention is that a debit increases the balance the account holder controls. Every entry must balance independently per instrument — the asset units net to zero, the dollars net to zero — or the transaction is rejected before it touches anything. Entries are hash-chained, so altering a historical row invalidates every digest after it. You can verify the chain yourself in the terminal.
7. Reservations and counterparty risk
The reason this model removes counterparty risk is not that we are trustworthy. It is that there is no window during which one party has both cards, or the card and the money.
No delivery-versus-payment gap
In a shipped trade, someone goes first. Here, the asset leg and the cash leg are lines in the same journal entry. There is no ordering to exploit, because they are simultaneous by construction.
Reservations, not promises
A resting bid holds real cash — notional plus the worst-case fee — set aside from your buying power. A resting ask holds a specific physical item. Neither is a promise to have the funds or the card later; both are already committed.
Invariants checked every transaction
After every command the engine re-checks that no balance is negative, that reserved cash equals the sum of open obligations exactly, and that every open ask is still backed by an item its seller holds. A violation rolls the whole transaction back.
Failure is atomic
A command that cannot complete leaves no trace — no half-moved item, no orphaned reservation, no partial journal entry. Try to buy something you cannot afford in the terminal and watch the state come back byte-identical.
8. Ship-out
At any point you can ask for the physical card. No exit fee, no minimum term, no penalty for withdrawing everything at once. The pipeline is the reverse of intake, and the important step is the QA re-image: the card leaving is compared against the captures taken the day it arrived. Full packaging specs and service levels are on the vault page.
| Stage | Item state | What happens |
|---|---|---|
| Requested | picking | Pick list released; item becomes untradable immediately |
| Picked | qa_reimage | Scanned out of bin, routed to QA |
| QA passed | packed | Re-image matched against intake captures; packed to slab spec |
| Packed | manifested | Declared value applied, carrier label issued |
| Manifested | in_transit | Tendered to carrier with signature service |
| In transit | withdrawn | Signature captured; custody formally released on the ledger |
Items held at both facilities ship as two parcels. We do not consolidate by moving cards between the West Coast and the Midwest first. An internal transfer is exactly the kind of handling this entire model exists to avoid, and doing it to save you one shipping fee would be a bad trade.
The whole thing runs in your browser
Intake, order book, swaps, ledger and ship-out are all implemented and live in the terminal. Nothing is mocked — the matching engine, the reservations and the hash chain are real.