Assigned once, used forever
One customer, one address. Today, tomorrow, the next payment — the address never changes.
Bind a permanent deposit address to each customer — any amount, unlimited top-ups, credited with automatic callbacks. Works across TRON, Ethereum, BSC, Solana and TON, with no merchant KYC and a flat 0.5% fee.
One customer, one address. Today, tomorrow, the next payment — the address never changes.
0.5% per payment with a per-payment fee cap — the more you receive, the lower your effective rate.
See fees by currency →One API, every major chain.
One line to fetch a customer’s permanent address; credited with an automatic callback.
$address = $anonyPay->customers->address($customerId);
{
"status": "credited",
"amount": "250.00",
"currency": "USDT"
}createAddress is idempotent on userOrder: the same userOrder always returns the same address — use a customer ID for a permanent, top-up-friendly address, or an order ID for per-order addresses. Your choice. Per-address callback URL can override the merchant default.
Callbacks fire on chain confirmation, retrying with backoff from 2 seconds to 60 minutes; you can also re-push manually from the dashboard anytime.
normal pays out directly, financialConfirmation requires finance approval, dailyLimit caps per-currency daily volume, off disables API withdrawals entirely.
One account can own multiple merchants; owners add admins who can view orders and re-push callbacks — funds and settings stay owner-only.
Move funds between merchants under the same account instantly, with zero fees — handy for multi-business treasury.
Google 2FA guards fund operations with a second confirmation on withdrawals; the API side enforces IP allowlists, RSA signatures and anti-replay; finance actions can require Telegram audit confirmation.
Stablecoins plus native coins with chain-specific availability; TRON-USDC is closed and TON currently has no USDC
Sign up with email; the system generates your RSA-2048 key pair and API secret automatically — no sales call needed.
Docs for this step →Bind Google 2FA in the dashboard, then upload your public key (public_u), set the callback URL and server IP allowlist.
Docs for this step →Verify signing and encryption end-to-end with the selfcheck endpoint, then call createAddress to bind a permanent address per customer.
Docs for this step →Once the transfer confirms on-chain, AnonyPay calls your server; reply SUCCESS to close the loop — withdrawals notify their final state the same way.
Docs for this step →Four lines of defense, from transport to payout
Protocol v2 uses SHA256withRSA signatures and RSA-OAEP encryption end to end; every request carries a timestamp (±300s window) and one-time nonce — replays are rejected. Responses and callbacks are signed too, so you can verify us back.
The merchant API enforces a server IP allowlist; dashboard login requires an email verification code, and sessions expire after 2 hours.
Changing callback URLs, switching withdrawal modes, releasing withdrawals and internal transfers all require a TOTP code, with replay protection.
With financial confirmation on, every withdrawal needs approval from your designated Telegram finance contact; daily-limit mode caps per-currency withdrawal volume automatically.
Signing, encryption, nonces and time windows are all wrapped — you just send business parameters.
const { AnonyV2Client } = require('./anony_v2');
const c = new AnonyV2Client(appId, serverPubB64, merchantPrivB64);
const token = await c.getToken(secret); // 自动 md5 鉴权 + 验签解密取出 token
const req = c.buildRequest({ userOrder: 'A1001', addressType: 'trx' }, token);
const r = await fetch(c.baseUrl + 'createAddress', { method: 'POST', body: req.body, headers: req.headers });
const body = await r.json();
if (body.code === 10000) {
const data = c.verifyResponse(body.data, r.headers.get('anony-timestamp'),
r.headers.get('anony-nonce'), r.headers.get('anony-sign'));
}Major chains — TRON, Ethereum, BSC, Solana, TON — with USDT on the live chains and USDC on Ethereum, BSC and Solana. TON has no USDC, and TRON-USDC deposits are closed. See the matrix above.
We retry automatically with backoff from 2 seconds to 60 minutes; after retries are exhausted you can re-push with one click from the order detail page.
Your choice: normal, financial confirmation, daily limit or off — switch modes anytime in the dashboard (Google 2FA required).
No sales process — registration assigns your merchant ID and keys automatically