Vouchereto API · v1
Go-live checklist
When every box below is ticked in the sandbox, tell us. We run the acceptance tests with you (status uat) and then switch your account to live.
Integration
- All calls are made from your server; no key in a browser, app or repository.
- Signatures pass for GET (with query string) and POST.
- Every POST has an idempotency key derived from your own operation id, and retries reuse it.
- Timeouts,
5xxand429are retried with backoff; other4xxare not. request_idis logged for every error.- Customer messages exist for every voucher error (suggested texts).
Redemptions
- Reserve → capture works, and cancel on your own failure path.
- A reservation you abandon expires and you handle
redemption.expired. - Crediting is idempotent on the redemption id (webhook and API response can both arrive).
X-Customer-Ipis sent with each reservation.- Tested with sandbox vouchers in every state: active, reserved, redeemed, expired, risk_hold, void, plus an unknown code.
Hosted pages (if used)
- You credit on
checkout.completedor after reading the session, never on the return URL alone. - Expired and failed sessions are handled.
return_urlandcancel_urlare https pages of your production domain.
Webhooks
- Signature verified on the raw body with constant-time comparison and a 5-minute tolerance.
- Duplicates ignored by event id; 2xx returned within 10 seconds.
Switching to live
- We move your account to
live. Create avch_live_key and live webhook endpoints in the portal (live mode). - Deploy the live key and the live
whsec_secrets. Keep test keys in your staging environment. - Make one small real redemption end to end and check it in the portal.
Questions before launch: contact the developer team.