Already integrated against
api.zennopay.in? Those hosts continue to be
served — zennopay.com is the new canonical domain, not a replacement that
turns the old one off. See
Legacy hosts.Conventions
- Transport: HTTPS only. TLS 1.2+.
- Request bodies: JSON, UTF-8.
- Responses: JSON. Errors follow a consistent envelope (
error.code,error.message,error.request_id). - Auth: every request must be HMAC-signed. See Authentication.
- Money: all amounts are integer USD cents (
amount_usd_cents). We never return floating-point dollars. - Idempotency: the HMAC nonce + timestamp combination is rejected on replay (within a 10-minute window). For application-level idempotency, use your own request ID and check intent state before retrying.
Endpoints
Create payment intent
POST /v1/payment_intents — returns the session tokenRe-mint session token
POST /v1/payment_intents/{intent_id}/sessionGet payment intent
GET /v1/payment_intents/{intent_id}Mint receipt token
POST /v1/payment_intents/{intent_id}/receipt_tokenWebhooks
Event types + signature verification