Updated 17.04.2026
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.
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.
The API is actively used by traders, Steam investors, and game stores. Play Wallet merchant turnover for 2023–2026 exceeded 2 million dollars.
Currently, account top-ups are supported for the following regions:
To use the API, you need:
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.
An internal transfer is an instant transaction between Bybit accounts by UID. No transfer fees, no waiting for blockchain confirmations. Funds are credited instantly.
When the balance runs out, you can top up again. We have no minimum or maximum top-up amount. You can test everything for just $1.
Your initial commission will be only 2%. Then, if you generate volume above:
API for topping up various gaming platforms: Steam and others. Developer: playwallet.bot Questions: @yspeh_pulse
To quickly connect to our API, follow these steps:
/startstart working with the bot/set_emailenter your Bybit account email/edit_ipadd the DEV server IP address/edit_ipadd the PROD server IP address/tokensget tokens for DEV and PROD/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 historyIn 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.
Then you can proceed with the PROD version integration.
https://dev.merchant.playwallet.bot/api/merchant/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:
/balanceverify that everything was credited correctly

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.
However, if you entered the wrong UID, we will not be able to help you. In this case, contact Bybit support.
https://merchant.playwallet.bot/api/merchant/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.
/get-balanceGet the merchant balance and the list of available services for payment.
Headers:
pw-api-keyMerchant API keyResponse
{ "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" } ] } }
/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.Request
{ "externalId": "ext-12345", "serviceId": "ff71c998-14be-4e3d-8ad3-0ffc8357265b", "amount": "150.00", "login": "user123" }
Response
{ "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 } }
/pay-order/Pay for a created order.
Headers:
pw-api-keyMerchant API keyRequest body:
Order identifier (id): "72cf5503-ae6a-45af-97b8-aae3a0731687"
Order creation time (createdDateTime): "2024-04-18T17:36:55.453116"
Concatenation: "72cf5503-ae6a-45af-97b8-aae3a07316872024-04-18T17:36:55.453116"
Applying SHA-512 to the concatenation: SHA512("72cf5503-ae6a-45af-97b8-aae3a07316872024-04-18T17:36:55.453116")
Result: hash string representing the token — db8e5992e47c48b46f59ecdd1789cc525f4061a52fbf8200dbdab4bc0929de9cf2f61bd8725314440c498a694176b06a2faec22776be4dc8123fffee14b027a5
Note: the merchant must independently generate the token on their side and pass it in the request body when paying for the order. On the DEV environment, this is not linked to real payments.
Request
{ "id": "72cf5503-ae6a-45af-97b8-aae3a0731687", "externalId": "ext-12345", "token": "db8e5992e47c48b46f59ecdd1789cc525f4061a52fbf8200dbdab4bc0929de9cf2f61bd8725314440c498a694176b06a2faec22776be4dc8123fffee14b027a5" }
Response
{ "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-order/{id}Get order status.
Headers:
pw-api-keyMerchant API keyQuery parameters:
idOrder identifierResponse
{ "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-order-list/Get merchant order history.
Headers:
pw-api-keyMerchant API keyQuery parameters:
offsetList start offset (default 0)limitNumber of orders returned (default 10)Response
{ "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" } ] }
| Status | Description |
|---|---|
| active | Awaiting payment confirmation |
| queued | Queued for processing |
| completed | Completed successfully |
| error | Execution error — order was not paid, no charges from account |
No limitations at this time.
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.
We reserve the right to refuse cooperation without explanation.
In case of violation of our agreement terms, cooperation with you will be immediately terminated.
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.