Go live
A checklist to run through before your first real payment, and where to get help.
Before you switch to live keys
- Your business is verified. Until then Zeny does not let it send money (
403 merchant_not_liveon payouts). - Your live key (
sk_live_…) is stored as a secret on your server, not in your repository, your app or your front end. See Authentication. - Every POST that moves money sends an
Idempotency-Key, and you retry with the same key after a timeout or a 5xx. See Idempotency. - Your webhook endpoint is on https, verifies the signature on the raw body, answers
2xxquickly and ignores an event it has already handled. See Webhooks. - You mark an order paid only on a
payment.paidevent, or after you read the payment yourself and itsstatusispaid. Never because the payer returned to your site, and never on a payment that is stillpending. - Your code accepts values it does not know yet: a new status, event type, payment method or error code must not crash it. See the conventions in the introduction.
- You show the payer the attempt's
chargeand handle everynextAction.typeyou offer. - You log the
requestIdof every error (also in theX-Request-IDheader). Support needs it. - Your payment
referenceand payoutreferenceare your own unique ids, so a duplicate is caught as409 duplicate_reference. - You handle
429 rate_limitedby waiting forRetry-After. See Rate limits.
After you go live
- Watch the deliveries of your webhook endpoint in the dashboard for failures.
- Reconcile:
netandsettlementon each paid payment tell you what you receive and when. Compare them with your balance. - Handle disputes: while one is open the disputed amount is held from your balance.
Getting help
Write to support@usezeny.com. Include the requestId of the failed request, the payment or payout id, and the time it happened. Please never send a secret key or a webhook secret: Zeny will never ask for one.