Go-live checklist
Go through this in the sandbox before you ask for live keys. Each item is something we see go wrong.
Requests
Section titled “Requests”- Every request is signed by your server, with a new nonce each time, the clock on NTP.
- You hash and send the same bytes; GET and empty-body POSTs hash the empty string.
- Every command carries an
Idempotency-Keystored with your order, and a retry reuses it (idempotency). -
merchant_order_idandmerchant_payout_idare your own unique ids. - Timeouts and
503are retried with the same key;400,404,409and422are not (errors). -
429andpayment_busywaitRetry-After. - Amounts are strings with two decimals:
"2500.00", never a float.
Payments
Section titled “Payments”- You ship only on
succeeded— not onprocessing, not on the payer returning toreturn_url. - Unknown
customer_action.kindand unknownstagevalues do not break you: send the payer tocheckout_url. - Host-to-host: you show the exact amount, hide the account at
expires_at, never cache it. - You tested
.00,.21and.13in the sandbox, and a cancellation.
Webhooks
Section titled “Webhooks”- Your endpoint is public HTTPS on 443 or 8443 and answers
2xxwithin 15 seconds. - You verify every event with a Standard Webhooks library, over the raw body.
- You act once per
webhook-idand ignore an older version (ordering). - A daily job reconciles open orders by reading them.
Payouts and refunds
Section titled “Payouts and refunds”- You check
availablebefore large payouts, and handleinsufficient_available_balance. - A payout’s fee is on top: your player gets
amount. - After a lost answer you find a payout by
merchant_payout_id.
- Secrets are in a secret store, one key per server (key security).
- Sandbox and live keys are in separate environments.
- You know how to replace a key and roll the webhook secret.
Ask your account manager for live access. You get the live API address and sign in to the live console,
where you create live keys (mka_…) and set the live webhook endpoint — nothing carries over from the
sandbox. Make one small real payment end to end before opening to players.