Trade statuses
Legacy numeric status plus is_released / release_date for Steam Trade Protection.
Trade status uses a numeric status axis. Frontend copy and API numeric names differ slightly; the numbers below are the contract. Steam Trade Protection overlays status 4 with is_released and release_date.
A) Legacy numeric status
Still returned on the wire. Documented as current values, with the old meaning of 0 called out.
| status | API name | Frontend copy | Meaning | State |
|---|---|---|---|---|
0 | Processing | Processing trade | Processing: funds frozen, trade being created. OLD docs said “waiting for user to buy more items” — that meaning is DEPRECATED. | current |
1 | Creating | Creating exchange | Pushing the Steam offer. Also treat 2/4 without trade_id as creating. | current |
2 | Seller confirm | Confirm trade / Waiting for seller | Waiting for seller Steam Guard. | current |
3 | unused Deprecated | — | Do not emit, do not document as valid. | deprecated/unused |
4 | Buyer accept | Accept / Waiting for buyer | Trade sent, buyer can accept. If release_date is set and is_released=false → TRADE HOLD (new). | current + hold overlay |
5 | Completed | Confirmed | Item delivered. | current |
6 | Declined/refunded | Cancelled / Unconfirmed | Failed; see reason. | current |
B) New fields New
- escrow_status is site-only (website history pages). The public API does not return it on check-many-steam, check-many-project-id, or my-history.
- is_released + release_date = Steam trade-hold after accept (status 4).
- penalties on buyer-fault rollbacks: rollback_fee (20%), rollback_penalty (10%), total_penalty.
- Trade-locked purchase: data.stage = 11 on the steamTrade Socket.IO event means reserved until the Steam trade lock ends. The unlock time is in the buy response (unlock_at). Any other stage means delivery has started. The final update has done: true — delivered, or a failure reason and a full refund.
State diagram
0 Processing→1 Creating→2 Seller confirm→4 Buyer accept→5 Completed
From 4, if release_date is set and is_released=false, overlay hold until release, then 5. Any failure → 6 Declined. Status 3 is unused.
Auto-cancel timings
From GET /v1/buy-one-p2p :
- Invalid seller → status 6 immediately
- No trade created → 6 minutes
- Confirm window → 11–15 minutes
- Lost seller connection while waiting for mobile confirm → 6 hours