> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.getsinbad.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.getsinbad.com/_mcp/server.

# Go-live checklist

> What to complete on staging, and what to confirm with Sinbad, before you send real customers to production.

Build and rehearse on staging first. Work through the staging checklists below, then complete the production checklist.

## Environments

Sinbad onboarding gives you everything that differs between environments:

* The production API base URL and environment identifier.
* The approved chain, and the token and escrow contract addresses.
* The confirmation policy, and your credentials.

Keep credentials on your server. Before the customer signs, compare the chain and contract addresses that a breakdown or trade returns with your approved configuration. `transaction.requiredConfirmations` reports the required confirmation depth. [`GET /health`](https://docs.getsinbad.com/api-reference/public/health) reports only that the process is alive and does not check its dependencies.

Use exact decimal strings for pricing and integer strings for atomic token amounts. USDT has six decimals. Staging uses Polygon Amoy (chain `80002`). Production values come from your environment handoff. See [Wallets and gas](/wallets-and-gas) for transaction preparation and recovery.

## Staging checklist: setup

Before you test customer flows, confirm the following.

* You have your partner secret, integration ID and partner ID, and the secret stays on your servers.
* Your partner configuration is reviewed: default currency, blocked currencies and blocked countries. Blocked countries are not enforced in the current phase. See [Limits and limitations](/limits-and-limitations).
* Your fee schedule is drafted and published from your manager wallet, and [`GET /v1/partner/fees`](https://docs.getsinbad.com/api-reference/partner-fees/get-partner-fees) shows your tiers under `active`. See [Partner fees](/partner-fees).
* Webhook delivery works on staging, and you have registered and verified your endpoint.

## Staging checklist: customers and sessions

* [ ] `partnerUserId` comes from your own verified login, and the first session sends the full first-registration details.
* [ ] A duplicate wallet, email address or phone number (`409`) is handled.
* [ ] The session token is cached, and a new one is created shortly before it expires and on a `401`.
* [ ] Saved payment accounts are built from the catalog's required fields, with no empty strings.

See [Create a session](/sessions).

## Staging checklist: trades

Run each flow end to end on staging.

* [ ] **BUY:** offer, breakdown, escrow transaction, payment instructions, proof upload, `markPaid`, the merchant's release and a trade in `RELEASED`. Include one `cancelPrePaid`.
* [ ] **SELL:** offer, breakdown, token approval, escrow transaction, the merchant's payment, `release` and a trade in `RELEASED`. Include an approval reset case if you can produce one.
* [ ] **Dispute:** open one with a reason, and close it with `mutualResolveDispute`.

See the [Buy walkthrough](/buy-walkthrough), [Sell walkthrough](/sell-walkthrough) and [Disputes](/disputes).

## Staging checklist: signing and gas

* [ ] Sign EIP-1559 transactions with the nonce from the wallet's `pending` count.
* [ ] Resend the same signed bytes after a simulated timeout, and confirm it is safe.
* [ ] Handle an unknown broadcast outcome without sending a second transaction.
* [ ] Reproduce `INSUFFICIENT_BALANCE` with `details.kind: "NATIVE_GAS"`, top up the wallet and submit again.

See [Wallets and gas](/wallets-and-gas) and [Sign and track transactions](/transactions).

## Staging checklist: webhooks and errors

* [ ] Register your endpoint and verify it with the test challenge.
* [ ] Test signature verification, including the timestamp check and a rotated secret.
* [ ] Deduplicate events on the event `id`, order trade updates by `sequence`, and process chat messages once by `messageId`.
* [ ] Run a reconciliation job that lists trades with your partner secret.
* [ ] Handle `429` with `Retry-After`, `409` with `ACTIVE_TRADE_EXISTS`, `TOO_EARLY` and `INVALID_STATE`.
* [ ] Quote the `requestId` when you contact Sinbad.

See [Webhooks](/webhooks), [Errors and recovery](/errors) and [Limits and limitations](/limits-and-limitations).

## Production checklist

Complete these before real customers use production.

* [ ] Gas top-ups and balance monitoring are in place for every customer wallet, with alerts and a safe minimum for each transaction type.
* [ ] You have decided and tested where customer wallets get USDT and gas tokens.
* [ ] Sinbad has confirmed the production base URL, network, USDT address, escrow address, confirmations, credentials and integration. See [Environments](#environments).
* [ ] The production fee schedule is published and verified with [`GET /v1/partner/fees`](https://docs.getsinbad.com/api-reference/partner-fees/get-partner-fees).
* [ ] The production webhook endpoint is registered and verified, and you have written down a secret rotation procedure.
* [ ] Sinbad has confirmed the operational rules for your environment: the dispute window, payment time limits, the dispute resolution process, cancellation on SELL, trade amount limits and any extra rate limits.
* [ ] You and Sinbad have agreed an on-call contact and a process for reporting a `requestId`.