Get started
Test mode
Test mode is the same gateway on test networks: real blocks, real confirmations, real webhooks, worthless coins. Build and test the whole flow before you touch live money.
Test keys
A key starting with axp_test_ works only in test mode: it creates test invoices, sees only test invoices and only test networks. Test and live have separate address pools, and every webhook says which mode it belongs to (mode: "test"). Nothing you do in test mode can affect live payments.
Create a test key in the dashboard: Developers → New key. Test mode is open right after you confirm your email, without a card or a business form.
Test networks
| Network ID | Chain | Test token | Confirmations |
|---|---|---|---|
tron-nile | TRON Nile testnet | USDT TXYZopYRdj2D9XRtbG411XZZ3kM5VkAeBf, 6 decimals | 19 blocks, about 1 minute |
bsc-testnet | BNB Smart Chain testnet | USDT 0xc2E6cD2e478ceFd3aD0d9ccfF21e7BC497d9B4C1, 6 decimals | 15 blocks, about 10 seconds |
base-sepolia | Base Sepolia | USDC 0x036CbD53842c5426634e7929541eC2318f3dCF7e, 6 decimals | 10 blocks, about 20 seconds |
arbitrum-sepolia | Arbitrum Sepolia | USDC 0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d, 6 decimals | 40 blocks, about 10 seconds |
polygon-amoy | Polygon Amoy | USDC 0x41E94Eb019C0762f9Bfcf9Fb1E58725BfB0e7582, 6 decimals | 15 blocks, about 30 seconds |
ton-testnet | TON testnet | TON (no official test USDT) | 2 masterchain blocks, a few seconds |
Live USDT on BSC has 18 decimals, the test token has 6. Always read decimals from the invoice or from GET /v1/assets, never hard-code it.
Simulated payments
You do not need test coins to see the whole flow. A test invoice page has the buttons Simulate: payment, underpayment, late payment, overpayment. A simulated transfer goes through the same pipeline as a real one: found, confirmations, status change and webhooks (invoice.payment_detected, then invoice.paid and the rest) — in about six seconds. Its hash starts with sim_ and has no explorer link.
Simulation exists only for test invoices; a live invoice answers SIMULATION_TEST_ONLY. The same buttons are available through the API: POST /v1/checkout/{id}/simulate with {"kind":"paid"} (paid | partial | late | over).
Getting test coins
- TRON Nile: the official Nile faucet at nileex.io gives test TRX and test USDT. Any TRON wallet works: TronLink has a Nile network switch.
- BSC testnet: get tBNB for gas from the BNB Chain faucet. There is no official test USDT on BSC: ask us in the pilot chat and we send you some.
- Base Sepolia, Arbitrum Sepolia, Polygon Amoy: test USDC from the Circle faucet; ETH or POL for gas from any public faucet of that testnet.
- TON testnet: test TON from the Telegram bot @testgiver_ton_bot; Tonkeeper has a testnet switch in its developer settings. Put the invoice comment (
AX-…) into the transfer.
End-to-end test
- Create an invoice with your test key.
- Open
hosted_url, pick USDT on Nile, accept the terms. - Send the exact amount from your test wallet to the address on the page.
- Watch the page go "found" then "paid" (about a minute on Nile), and check that your webhook endpoint got
invoice.payment_detectedandinvoice.paidwith a valid signature. - Repeat with an underpayment, an overpayment and an expired invoice to see
partially_paid,paid_overpaidandexpired.
# 1. create
curl https://pay.axiomis.app/api/v1/invoices -H "Authorization: Bearer $AXIOMISPAY_TEST_KEY" \
-H "Content-Type: application/json" \
-d '{"amount_usd_cents":100,"external_order_id":"test-1","customer_ref":"me"}'
# 4. check
curl https://pay.axiomis.app/api/v1/invoices/inv_… -H "Authorization: Bearer $AXIOMISPAY_TEST_KEY"Webhooks on localhost
We deliver webhooks only to public HTTPS URLs. For local development use a tunnel such as cloudflared tunnel or ngrok, or test your handler offline with signWebhook() from the SDK.