Documentation Index
Fetch the complete documentation index at: https://docs.zennopay.in/llms.txt
Use this file to discover all available pages before exploring further.
The full request and response schema is still being finalized. Fields below
reflect the auth spec. Additional fields (merchant details, metadata, etc.)
will land in a future revision. 🚧
All requests must be HMAC-signed. See Authentication.
Identifies which signing key was used (e.g. wizz_prod_2026q1).
RFC 3339 UTC timestamp. Requests more than 5 minutes off server time are rejected.
Random 32-byte hex string. Replays within 10 minutes are rejected.
Base64 HMAC-SHA256 of the canonical request string.
Body
The amount the user has authorized, in USD cents. Minimum is corridor-dependent.
One of th_promptpay (Thailand PromptPay) or vn_vietqr (Vietnam VietQR).
Your opaque user identifier. Zennopay never sees the underlying user PII;
this is for your internal correlation.
Response
Zennopay intent ID, format zp_.... Use this for subsequent SDK and webhook
correlation.
Initial state. Always created on a successful POST.
Example
curl -X POST https://api.zennopay.com/v1/payment_intents \
-H "X-Zennopay-Key-Id: wizz_sandbox_2026q2" \
-H "X-Zennopay-Timestamp: 2026-05-21T14:30:00Z" \
-H "X-Zennopay-Nonce: a1b2c3d4e5f6789012345678abcdef00" \
-H "X-Zennopay-Signature: <base64_hmac_sha256>" \
-H "Content-Type: application/json" \
-d '{
"amount_usd_cents": 345,
"corridor": "th_promptpay",
"partner_user_id": "user_abc123"
}'
{
"intent_id": "zp_AbCd1234EfGh5678",
"status": "created",
"amount_usd_cents": 345,
"corridor": "th_promptpay",
"created_at": "2026-05-21T14:30:00Z"
}