Use cases
Top up user balances with static crypto addresses
Give each user a permanent deposit address per asset: every transfer is credited after its confirmations and reported by a signed deposit.confirmed webhook.
CryptoLike gives each of your users a permanent deposit address per asset. Whenever they send money to it, the transfer is credited to your balance after that asset's confirmations, and a signed deposit.confirmed webhook tells your server whose balance to top up and by how much. No invoice or amount has to be agreed in advance.
Why do balance top-ups need a static address?
A top-up is not an order. The user decides when to send and how much, and may send again next week. An invoice has a fixed amount and a time limit, which suits a purchase but not a balance. A CryptoLike static address stays with one user, accepts every transfer and links it to that user.
Static addresses fit balances in games, marketplaces and online services, prepaid accounts, and regular funding from the same client or partner. A shared address cannot tell users apart, and an address per transfer means a new address every time; a static address avoids both.
How CryptoLike static addresses work
In CryptoLike, a static address belongs to one asset and one of your users, identified by your own customer_id. You create it with one API call and show it in your app. CryptoLike watches the network, counts confirmations and credits every transfer, and each step is announced by a webhook. To give a user several assets, create one address per asset.
{
"coin_id": "6f1c2a3e-8d4b-4c5a-9e7f-0a1b2c3d4e5f",
"customer_id": "user-8812",
"label": "Top-up wallet"
}POST /v1/addresses with this body returns the address. The key needs the create_address permission. Send an Idempotency-Key and a retry returns the same address. Each (asset, user) pair has one active address. A second request answers 409: archive the old address to issue a new one. The archived address still receives and credits transfers.
Show the address together with its network. A TRON address starts with "T", and USDT on TRON and USDT on Ethereum are separate assets, each with its own address. Supported coins names the network of each asset.
Which events tell you about a deposit?
A CryptoLike deposit moves through a small set of events, each carrying the address (with your customer_id) and the deposit. Credit your user on deposit.confirmed, once per deposit. The same event can be delivered more than once with the same event_id, so skip ids you have already processed.
| Event | Meaning | What to do |
|---|---|---|
deposit.pending |
A transfer to the address was detected | Show the user that it is waiting for confirmation |
deposit.confirmed |
Confirmed and credited; fee and net_amount are known |
Top up the user's balance |
deposit.reverted |
The network rolled the transfer back | Reverse the top-up |
deposit.on_hold |
The transfer is held for compliance review | Wait; do not top up yet |
The deposit carries txid and output_index, amount, fee, net_amount, confirmations and required_confirmations. The confirmation threshold is set per asset and shown in GET /v1/currencies and on supported coins. GET /v1/addresses/{id} returns the address with its deposit history. Every deposit also appears in GET /v1/transactions, which exports to CSV or XLSX.
How to connect
A CryptoLike deposit integration needs a server that keeps the API secret, a key with create_address and read, and a webhook endpoint subscribed to deposit.*. The official SDKs for TypeScript, Python, Go and PHP sign the requests and verify the webhooks. They are pre-release and install from the repository.
- Ask CryptoLike support for access to the test environment: in its cabinet create a
ck_test_API key withcreate_addressandread, and use its API URL. - Add a webhook endpoint for the
deposit.*events and store its secret on your server. - Create an address for a test user and send a transfer on a test network.
- Credit the user on
deposit.confirmed, following the guide to verifying crypto payment webhooks. - Switch to a live key.
SDKs: TypeScript SDK, Python SDK, Go SDK, PHP SDK. Routes are in the API reference, signatures in webhooks, and the incoming fee per asset is on the pricing page.
FAQ
Invoice or static address: which one do I need?
An invoice is a one-off payment for a fixed amount with a time limit, for an order or a purchase. A static address is a permanent address for one user, where every transfer is credited: balances, deposits and recurring funding. Both report through the same signed webhooks.
Does the user have to send a fixed amount?
No. There is no amount to agree in advance: each deposit is credited after the asset's confirmations. The platform fee for incoming payments is set per asset and is listed on the pricing page. Each deposit.confirmed event shows it as fee, next to net_amount.
How long does a deposit take to be credited?
It depends on the asset. Each asset has a confirmation threshold, shown in GET /v1/currencies. You receive deposit.pending when the transfer is detected and deposit.confirmed when the threshold is reached and the amount is credited to your CryptoLike balance; a transfer held for review sends deposit.on_hold instead.
Can a user have the same address forever?
Yes. The address stays active until you archive it, and even an archived address keeps crediting transfers. To give the user a new address for the same asset, archive the old one first.
Can I see deposits without writing code?
Yes. The cabinet lists static addresses with their deposit history, and the Telegram bot can show addresses and send a message for each confirmed deposit.
Ways to connect
Guides and articles
- Verify crypto payment webhooks: HMAC-SHA256 in TypeScript, Python, Go, PHPCheck CryptoLike webhook signatures step by step: raw body, timestamp tolerance, constant-time compare, event_id dedup — code in TypeScript, Python, Go and PHP.
- How many confirmations a crypto payment needs, and why it differs by networkWhat a blockchain confirmation is, why a crypto payment waits for several, why the threshold differs for Bitcoin, Litecoin, Ethereum and TRON, and where to see it.
- Crypto invoice or static address: which one your business needsWhen to take crypto with a one-off invoice and when with a permanent deposit address: amounts, deadlines, statuses, fees and webhooks compared, with API examples.
Terms used here
Start with a test payment
Create an account, ask support for the test environment and see a payment go from pending to paid on a test network.