Trade statuses
Two independent axes: legacy numeric status and escrow_status / is_released / release_date.
Trade status is two independent axes. Frontend copy and API numeric names differ slightly; the numbers below are the contract.
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 | Funds frozen, trade session 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
- sending
- is_released + release_date = Steam trade-hold after accept (status 4).
- penalties on buyer-fault rollbacks: rollback_fee (20%), rollback_penalty (10%), total_penalty.
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