Play Wallet

Balance top-upSteamAPI

Commission as low as 0.5%

Updated 17.04.2026

Steam top-up API

Introduction

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.

Open APIavailable to everyone
Individualor company
From $1minimum amount
No contractsno paperwork

Volumes

The API is actively used by traders, Steam investors, and game stores. Play Wallet merchant turnover for 2023–2026 exceeded 2 million dollars.

2M$+
merchant turnover for 2023–2026
500 000+
transactions processed
3 years
of stable API operation
FunPay, GGsel
and other marketplaces use our API

Available Steam countries

Currently, account top-ups are supported for the following regions:

ruRussiaazAzerbaijanamArmeniabyBelaruskzKazakhstankgKyrgyzstanmdMoldovatjTajikistantmTurkmenistanuzUzbekistangeGeorgiauaUkraine

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.

1BybitYour Bybit accountFund the exchange
Step 1. You transfer USDT to us via UID
2BybitOur Bybit accountAutomatic 1:1 crediting
Step 2. We credit funds to your balance 1:1
4SteamSteam accountsAutomatic top-up
N% commission
Step 3. Creating Steam top-up requests
3API balanceAutomatic crediting
Commission is automatically deducted from each orderTop-up $100 + commission $2 = $102 from balance

The API is built on automatic internal Bybit transfers via UID.

  1. You create your account on the Bybit exchange and fund it.
  2. You send to our Bybit account the amount you want to spend on Steam account top-ups.
  3. We instantly credit it to your account.
  4. You can start working by topping up accounts.
What is an internal Bybit transfer?

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.

Commission rate

Your initial commission will be only 2%. Then, if you generate volume above:

Start2%initial commission
from $5,000/mo1%with turnover above $5,000 per month
from $50,000/mo0,5%with turnover above $50,000 per month

How to connect to the API?

Play WalletPlay Wallet (API)@pwMerchantBot

API for topping up various gaming platforms: Steam and others. Developer: playwallet.bot Questions: @yspeh_pulse

START BOT

To quickly connect to our API, follow these steps:

  1. Open our Telegram bot for API and press "Start":
    /startstart working with the bot
  2. 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
  3. Request access tokens:
    /tokensget tokens for DEV and PROD
  4. Then you can proceed with integration.

Available bot commands

General commands
/helpShow command list
/set_languageChange language
Balance and commission
/balanceShow your balance
/commissionCurrent commission rate
/top_upAccount top-up instructions
Access settings
/tokensShow access tokens
/ip_listList of allowed IPs
/edit_ipEdit IP in the list
/set_emailSet Bybit email
/emailShow Bybit email
Data export
/orders_exportTransaction history
/deposits_exportDeposit history

API 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.

Then you can proceed with the PROD version integration.

DEV URLhttps://dev.merchant.playwallet.bot/api/merchant/

Top up balance to create a transaction

BYBIT
137 323 163
After topping up, use the /balance command in the bot to verify that everything was credited correctly.

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:

UID137323163
/balanceverify that everything was credited correctly

Guide to internal Bybit transfer by UID

Step 1 — open Bybit and click WithdrawStep 2 — select internal transfer and enter UID
  1. Log in to your Bybit account (the account must be registered with the email you previously provided us).
  2. Hover over your profile in Bybit and click "Withdraw".
  3. Select the coin — USDT.
  4. Specify that it is an Internal transfer.
  5. Enter the destination account UID — 137323163.
  6. 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.

However, if you entered the wrong UID, we will not be able to help you. In this case, contact Bybit support.

Code

Base URLhttps://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.

GET/get-balance

Get the merchant balance and the list of available services for payment.

Headers:

pw-api-keyMerchant API key

Response

{
    "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 key

Request 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
    }
}
POST/pay-order/

Pay for a created order.

Headers:

pw-api-keyMerchant API key

Request 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/get-order/{id}

Get order status.

Headers:

pw-api-keyMerchant API key

Query parameters:

idOrder identifier

Response

{
    "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 key

Query 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"
        }
    ]
}

Order statuses

StatusDescription
activeAwaiting payment confirmation
queuedQueued for processing
completedCompleted successfully
errorExecution error — order was not paid, no charges from account

Limitations

No limitations at this time.

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.

Have questions? Contact us support
Play Wallet – Online Store for Digital Goods and Services