Payout hold
When you sell something on Cambridge TCG, the buyer's payment is held briefly before it is released to you. The duration depends on what kind of sale it was and, for P2P trades, your trust tier at the moment the trade was created.
Where this lives in code.
- Trust tier table:
apps/storefront/src/lib/escrow/types.ts(TRUST_TIERS).- Trade hold-days column:
market_trades.payout_hold_days, stamped at trade-creation.- Auction hold: flat 3 days, applied by the maintenance cron.
- Available_at calculation surfaced on /account/payouts.
What "hold" means
A hold is the gap between two events:
- The buyer pays. (For trades: when escrow reaches
completed. For auctions: whenauction.status = 'paid'.) - The seller's payout becomes eligible to send.
During the hold, the payout is recorded on the platform (visible on /account/payouts as scheduled) but not yet sent. The hold gives the buyer time to raise a dispute before the funds leave the platform.
P2P trades — by seller's trust tier
The hold is determined by the seller's tier at the moment the trade was created, not at completion. This locks the hold to the conditions both parties agreed to up front.
| Tier | Min trust score | Payout hold | Reason |
|---|---|---|---|
| New | 0 | 7 days | First-time sellers; longest dispute window |
| Starter | 20 | 5 days | Some history, still building reputation |
| Trusted | 50 | 3 days | Demonstrated reliability |
| Veteran | 80 | 1 day | Established sellers; near-instant turnaround |
| Elite | 95 | 0 days | Released as soon as escrow completes |
The tier itself is a function of your trust score; see /methodology/trust-score. If you're disputing your hold duration, the appeal lives at the inputs to your trust score — not at the hold itself.
Auctions — flat 3 days
Auctions use a single 3-day hold for every seller, regardless of tier. The reasoning: auctions are higher-variance than P2P trades (rare cards, sniping protections that already extend the close); the auction-seller pool is small enough that per-tier tuning hasn't been load-bearing; and 3 days matches the Trusted tier on P2P, which is roughly the median seller.
Worked examples
Trade — Trusted seller.
Trade created at 14:00 UTC. payout_hold_days = 3. Buyer pays; escrow completes at 09:30 UTC three days later. Available_at = completion + 3 days. The cron sweep releases the payout at that moment.
Trade — Elite seller.
Same trade, Elite seller. payout_hold_days = 0. Available_at = completion itself. Released as soon as escrow completes.
Auction — any seller.
Buyer pays at 11:00 UTC. auction.status = 'paid'. Available_at = paid_at + 3 days. Released then.