Deposits without 8-day waiting period (Steam Trade Protection)
Interaction scheme:
1. Trade processing
- User tops up balance via SkinsBack.
- Selects CS2 skins for deposit and accepts trade.
- After trade acceptance, SkinsBack sends WebHook request with in_hold status to specified Result URL in project settings.
- Webhook body will contain deposit information object and user data (user_risk field) for fund approval decision.
Additional user data:
- Total sum of user deposits across all projects for entire period.
- Total number of user deposits across all projects for entire period.
- Sum and count of rollback deposits where user received advance payments from projects.
- User registration date in our system
- User inventory value.
- Date of last deposit.
Data example:
{
// ... deposit data
"user_risk": {
"total_deposits_count": 1,
"total_deposits_sum": 7.68,
"total_rollback_deposits_count": 0,
"total_rollback_deposits_sum": 0,
"joined_at": "2024-05-27 13:54:30",
"last_deposit_at": "2025-03-27 17:22:51",
"user_inventory": {
"cs2": {
"last_updated_at": "2025-07-17T20:51:48.689998Z",
"sum": 2.75
},
"dota2": {
"last_updated_at": "2025-07-17T20:50:48.689998Z",
"sum": 2.00
},
"rust": {
"last_updated_at": "2025-07-17T20:55:48.689998Z",
"sum": 1.40
},
}
}
}
Currently this is test data set that we believe will help in decision making. Over 5 years of operation we have history for more than 6 million users. Combining this information with customer history on your platform, you can make decision about early fund crediting.
3. Status transition scheme
- Deposit will remain in pending state for 8-day Steam Trade Protection completion until you send request to offer_approve method. After request submission, deposit page will show final success status, deposit status will change to hold_approved and system will send Webhook to Result URL with updated status.
- If user doesn't cancel trade within 8 days, Result URL will receive webhook with success status, finalizing status and crediting funds to project balance.
- In case of trade cancellation by user, Result URL will receive webhook with hold_returned status and funds won't be credited.
Possible deposit status (status field) transition variants:
- pending → in_hold → success or fail (standard scheme)
- pending → in_hold → hold_approved → success or hold_returned (scheme using offer_approve)
4. Crediting and user refund
When receiving hold_approved and hold_returned statuses, implement appropriate deposit processing logic. This may include:
- unlocking or blocking user balance.
- applying other sanctions according to platform policy.
5. Example scenarios
- If client previously canceled payments after receiving funds - this is red flag, transaction should be held.
- If client has $2000 inventory value and is your regular customer making $50 deposit, transaction can be approved as blocking inventory and ruining reputation on your service would be disadvantageous.
- Your risk department checked client information, possibly requested KYC, and after your staff decided to credit funds to client, you can send request to offer_approve method anytime within 8 days
Thus, many small deposits can be processed automatically. Effectiveness of this approach will be analyzed during operation.
6. Important information
Final decision about deposit crediting is made by your side. After 8 days funds will be credited, or information about trade cancellation due to client's fraudulent actions will be provided.