Going live checklist
You built and tested on test tokens. Going live is a checklist, not a project — the API, networks, webhooks, and dashboard behave identically; the only difference is the asset.
-
Switch the asset. Replace the test asset id with a live one from
GET /v1/assets— one line.curl https://api.suward.com/v1/assets -
Use a live API key. Create it in the dashboard, set limits, store it like a secret. It is shown only once. → Authentication
-
Set your production webhook URL and verify signatures. Reject anything that fails Ed25519 verification against your
webhookPublicKey, and reject events older than the 300-second replay window. → Webhooks -
Decide who pays the fees. By default both the 0.4% service fee and the network fee are on you; either can be shifted to your customer per payment. Preview exact numbers with
POST /v1/payments/quote. → Fees & who pays what -
Set your screening level explicitly. Every payment is screened; what you choose is depth. A payment that doesn't specify
complianceLevelinherits your project or organization default — check what yours is set to before your first live payment, because Extended carries a $0.45 minimum fee per payment and Basic does not. → Screening levels -
Set an auto-withdrawal rule if you don't want funds accumulating on the balance. Rules sweep only settled (Success) funds. → Auto-withdrawals
-
Take one small live payment yourself and watch it move Pending → Accepted → Success in the dashboard and in your webhooks.
Before you ship: five habits that age well
- Read enumerations from the API. Statuses, sub-statuses, assets, and networks grow over time — fetch them instead of hardcoding exhaustive lists, and route anything unknown to a safe default. → API reference
- Ignore unknown fields in responses and webhooks. New fields are additive and must not break your parser.
- Make webhook handling idempotent and deduplicate on
eventId. Events are delivered at least once and may be redelivered on retry. - Fulfil on Accepted, release money on Success. Never fulfil on your own mempool watching or a single confirmation. → Settlement & finality
- Pass
externalIdon every create call. It makes retries safe and ties every payment and deposit back to your own records.
What does not change between test and live
| Same in both | Different in live |
|---|---|
Base URL https://api.suward.com | The asset id — a live asset instead of TESTCOIN_* / TESTSTABLECOIN_* |
| Endpoints, fields, statuses, and webhook shapes | The API key — a live key from your live project |
| Networks, confirmations, and the settlement model | Fees are charged, and screening runs against real counterparties |
| Dashboard, balances, and withdrawal rules | Simulation endpoints stop working — they are test-asset only |
Something unclear at any step?
payments@suward.com — we treat every integration question as a documentation defect.
Something unclear? payments@suward.com — we treat every integration question as a documentation defect.