Updated 17.04.2026
Steam top-up API
Play Wallet provides a fully open API for topping up Steam accounts. Anyone can connect — an individual or a company — and start topping up Steam from as little as $1.
On this page
- Introduction
- Volumes
- Available Steam countries
- What do you need for API integration?
- How does the Steam top-up API work?
- Commission rate
- How to connect to the API?
- Available bot commands
- API connection FAQ
- Test / DEV version
- Top up balance to create a transaction
- Guide to internal Bybit transfer by UID
- Base URL
- Authorization
- GET /get-balance
- POST /create-order
- POST /pay-order
- GET /get-order/{id}
- GET /get-order-list
- Order statuses
- Limitations
- Legal documents
- Refusal or termination of cooperation
- Changes
Introduction
We do not restrict the use of our API in any way. You do not need to sign any contracts or paperwork with us — all interaction is built on trust in the platform.
Volumes
The API is actively used by traders, Steam investors, and game stores. Play Wallet merchant turnover for 2023–2026 exceeded 2 million dollars.
Available Steam countries
Currently, account top-ups are supported for the following regions:
What do you need for API integration?
To use the API, you need:
How does the Steam top-up API work?
In the current version, our API only works with Bybit accounts. This is primarily to ensure the legitimacy of funds arriving at our crypto wallet.
The API is built on automatic internal Bybit transfers via UID.
- You create your account on the Bybit exchange and fund it.
- You send to our Bybit account the amount you want to spend on Steam account top-ups.
- We instantly credit it to your account.
- You can start working by topping up accounts.
API usage diagram
Commission rate
Your initial commission will be only 2%. Then, if you generate volume above:
How to connect to the API?
To quickly connect to our API, follow these steps:
- Open our Telegram bot for API and press "Start":
/startstart working with the bot - Using commands, provide the bot with the following information:
/set_emailenter your Bybit account email/edit_ipadd the DEV server IP address/edit_ipadd the PROD server IP address - Request access tokens:
/tokensget tokens for DEV and PROD - Then you can proceed with integration.
Available bot commands
/helpShow command list/set_languageChange language/balanceShow your balance/commissionCurrent commission rate/top_upAccount top-up instructions/tokensShow access tokens/ip_listList of allowed IPs/edit_ipEdit IP in the list/set_emailSet Bybit email/emailShow Bybit email/orders_exportTransaction history/deposits_exportDeposit historyAPI connection FAQ
- You can use the same server IP address for both the PROD version and the DEV environment.
- You set up user payments on your side; through our API you only credit money to users on Steam.
- You top up your balance in our API, accept payment from the user (by any method you choose), and if there are no issues, credit the money to the user. We deduct the order amount from your balance.
Test / DEV version
In the DEV version, you do not need to top up your balance or pay for orders. The main goal is to ensure all API requests are processed correctly and return responses without errors.
https://dev.merchant.playwallet.bot/api/merchant/Then you can proceed with the PROD version integration.
Top up balance to create a transaction
Once the PROD version is fully ready, you can start creating orders to top up Steam accounts. However, you need to top up your balance first.
Send more than 1 USDT from your Bybit account via internal transfer to our account. This is how you top up your balance each time it runs out.
Our Bybit account UID details:
137 323 163Guide to internal Bybit transfer by UID
- Log in to your Bybit account (the account must be registered with the email you previously provided us).
- Hover over your profile in Bybit and click "Withdraw".
- Select the coin — USDT.
- Specify that it is an Internal transfer.
- Enter the destination account UID — 137323163.
- Enter the withdrawal amount and click "Confirm".
After sending, the funds will arrive in your API balance within a minute, and you can start creating orders.
If you made a mistake when sending the order, for example chose the wrong coin, contact us, and we will return your funds.
API reference
https://merchant.playwallet.bot/api/merchant/Authorization
All API requests must be authorized using an API key passed via the pw-api-key header. The client IP must be in the list of allowed IP addresses for the given merchant.
pw-api-keyMerchant API keyGET/get-balance
Get the merchant balance and the list of available services for payment.
Headers
pw-api-keyMerchant API keycurl "https://merchant.playwallet.bot/api/merchant/get-balance" \ --header "pw-api-key: <API_KEY>"
{ "status": "success", "message": "", "data": { "balance": "0.00", "frozenBalance": "0.00", "feeRatio": "0.0600", "services": [ { "id": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "name": "test", "minAmount": "0.25", "maxAmount": "200.00" } ] } }
POST/create-order/
Create a new order.
Headers
pw-api-keyMerchant API keyRequest body
externalIdUnique order identifier provided by the client. Used to link the order with the client's external system.serviceIdService identifier the client wants to order. Must match one of the services available in the system.amountOrder amount in the currency set for the merchant. Must be a string with two decimal places.loginUser login for whom the order is created. DEV login 123456789.curl "https://merchant.playwallet.bot/api/merchant/create-order/" \ --request POST \ --header "pw-api-key: <API_KEY>" \ --header "Content-Type: application/json" \ --data '{ "externalId": "ext-12345", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "150.00", "login": "user123" }'
{ "status": "success", "message": "", "data": { "id": "72cf5503-ae6a-45af-97b8-aae3a0731687", "status": "queued", "externalId": "7", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "1.00", "amountFee": "0.03", "feeRatio": "0.03", "createdDateTime": "2024-04-18T17:36:55.453116", "expiredDateTime": "2024-04-18T17:46:55.453069", "completedDateTime": null } }
POST/pay-order/
Pay for a created order.
Headers
pw-api-keyMerchant API keyRequest body
"72cf5503-ae6a-45af-97b8-aae3a0731687""2024-04-18T17:36:55.453116""72cf5503-ae6a-45af-97b8-aae3a07316872024-04-18T17:36:55.453116"SHA512("72cf5503-ae6a-45af-97b8-aae3a07316872024-04-18T17:36:55.453116")db8e5992e47c48b46f59ecdd1789cc525f4061a52fbf8200dbdab4bc0929de9cf2f61bd8725314440c498a694176b06a2faec22776be4dc8123fffee14b027a5curl "https://merchant.playwallet.bot/api/merchant/pay-order/" \ --request POST \ --header "pw-api-key: <API_KEY>" \ --header "Content-Type: application/json" \ --data '{ "id": "72cf5503-ae6a-45af-97b8-aae3a0731687", "externalId": "ext-12345", "token": "db8e5992e47c48b46f59ecdd1789cc525f4061a52fbf8200dbdab4bc0929de9cf2f61bd8725314440c498a694176b06a2faec22776be4dc8123fffee14b027a5" }'
{ "status": "success", "message": "", "data": { "id": "b8509f61-17fd-4578-8529-7bfb29f14d39", "status": "queued", "externalId": "ext-12345", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "150.00", "amountFee": "0.00", "feeRatio": "0.00", "createdDateTime": "2024-04-16T03:07:16.739351", "expiredDateTime": "2024-04-16T03:34:14", "completedDateTime": null } }
GET/get-order/{id}
Get order status.
Headers
pw-api-keyMerchant API keyQuery parameters
idOrder identifiercurl "https://merchant.playwallet.bot/api/merchant/get-order/72cf5503-ae6a-45af-97b8-aae3a0731687" \ --header "pw-api-key: <API_KEY>"
{ "status": "success", "message": "", "data": { "id": "72cf5503-ae6a-45af-97b8-aae3a0731687", "status": "completed", "externalId": "7", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "1.00", "amountFee": "0.03", "feeRatio": "0.03", "createdDateTime": "2024-04-18T17:36:55.453116", "expiredDateTime": "2024-04-18T17:46:55.453069", "completedDateTime": "2024-04-18T17:44:31.974430" } }
GET/get-order-list/
Get merchant order history.
Headers
pw-api-keyMerchant API keyQuery parameters
offsetList start offset (default 0)limitNumber of orders returned (default 10)curl "https://merchant.playwallet.bot/api/merchant/get-order-list/?offset=0&limit=10" \ --header "pw-api-key: <API_KEY>"
{ "status": "success", "message": "", "data": [ { "id": "8ca9e0bf-b45b-43c4-acb2-93f467b1760e", "status": "active", "externalId": "6", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "1.00", "amountFee": "0.03", "feeRatio": "0.03", "createdDateTime": "2024-04-18T17:33:13.510839", "expiredDateTime": "2024-04-18T17:43:13.510798", "completedDateTime": null }, { "id": "72cf5503-ae6a-45af-97b8-aae3a0731687", "status": "completed", "externalId": "7", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "1.00", "amountFee": "0.03", "feeRatio": "0.03", "createdDateTime": "2024-04-18T17:36:55.453116", "expiredDateTime": "2024-04-18T17:46:55.453069", "completedDateTime": "2024-04-18T17:44:31.974430" } ] }
Order statuses
| Status | Description |
|---|---|
active | Awaiting payment confirmation |
queued | Queued for processing |
completed | Completed successfully |
error | Execution error — order was not paid, no charges from account |
Limitations
No limitations at this time.
Legal documents
We do not request from you nor provide any legal documents confirming the cooperation.
All interaction is based solely on your trust in our platform.
Refusal or termination of cooperation
We reserve the right to refuse cooperation without explanation.
In case of violation of our agreement terms, cooperation with you will be immediately terminated.
Changes
We reserve the right to change and update API information at our discretion. Although frequent changes are not expected, we recommend regularly checking this page to stay up to date.
We will notify about all significant changes in this section.