Test payments
Two ways to test, and they answer different questions. Test tokens run the whole pipeline on real networks; simulation drives statuses with no chain involved at all.
The one difference between test and live
There is no separate sandbox host, no test API surface, no feature flag. The base URL, the endpoints, the fields, the statuses, the webhooks, and the dashboard are the same. What makes a payment a test payment is its asset. Create it with a test asset id and nothing costs money; create it with a live asset id and it is production.
Why this matters for your rollout
Whatever you get working on test assets works in production unchanged. Going live is a one-line asset swap plus a live key. → Going live checklist
Two paths
Whole pipeline
Free, valueless tokens on real networks. Real transfers, real confirmations, real webhook timing — everything except value. Use this to trust your integration.
Statuses only
Each API call advances a payment or deposit by one legal transition — chain them to walk the flow. No wallet, no gas, no waiting. Use this to write and test your handler code.
| Question you're answering | Use |
|---|---|
| "Does my webhook handler branch correctly on every status?" | Simulate |
| "Does an actual transfer reach Accepted, and how long does it take?" | Test tokens |
| "Does my checkout render the address and QR correctly?" | Either — both issue a real address |
| "Does my reconciliation match transfers to orders?" | Test tokens (real txHash, real transfers list) |
| "Does my code survive an underpaid / overpaid / expired payment?" | Simulate |
Test assets
Test assets carry the TESTCOIN_ and TESTSTABLECOIN_ prefixes. The authoritative list — with decimals for smallest-unit math — is served live:
curl https://api.suward.com/v1/assetsA complete test run
- Create a payment with a test asset. → Quickstart
- Mint free test tokens to your own wallet. → Mint test coins
- Pay the deposit address like a customer would, or call simulate to skip the chain.
- Watch
payment.detected→payment.accepted→payment.successarrive at your endpoint, and verify every signature. → Webhooks - Reconcile: the payment's
externalIdagainst your order,GET /v1/payments/{paymentId}/transactionsagainst the chain.
What you cannot test with test assets
- Fees are not charged. To see the economics of a live payment, quote it:
POST /v1/payments/quote. → Fees & who pays what - Withdrawals of test balances. Withdrawal rules operate on settled live funds. → Auto-withdrawals
- Screening against real counterparties. Screening runs on every transaction, but a valueless test token has no meaningful exposure history. → Screening levels
When the flow works end to end → Going live checklist; create your account any time — accepting starts right after sign-up.
Something unclear? payments@suward.com — we treat every integration question as a documentation defect.