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.

  1. Switch the asset. Replace the test asset id with a live one from GET /v1/assets — one line.

    terminal
    curl https://api.suward.com/v1/assets
  2. Use a live API key. Create it in the dashboard, set limits, store it like a secret. It is shown only once. → Authentication

  3. 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

  4. 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

  5. Set your screening level explicitly. Every payment is screened; what you choose is depth. A payment that doesn't specify complianceLevel inherits 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

  6. Set an auto-withdrawal rule if you don't want funds accumulating on the balance. Rules sweep only settled (Success) funds. → Auto-withdrawals

  7. 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 externalId on 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 bothDifferent in live
Base URL https://api.suward.comThe asset id — a live asset instead of TESTCOIN_* / TESTSTABLECOIN_*
Endpoints, fields, statuses, and webhook shapesThe API key — a live key from your live project
Networks, confirmations, and the settlement modelFees are charged, and screening runs against real counterparties
Dashboard, balances, and withdrawal rulesSimulation 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.