Skip to main content
POST
Re-mint session token
When a session token expires mid-flow, don’t create a new intent — re-mint a token for the same one. Zennopay preserves the intent’s scan / quote / confirm state across the re-mint, so the user’s flow continues uninterrupted. This is exactly what your refreshSession hook calls your backend to do; your backend then makes this HMAC-signed call. See the refresh route in Build your session endpoint.

Headers

Server-to-server only; HMAC-signed. See Authentication.
string
required
Identifies which signing key was used.
string
required
ISO-8601 / RFC 3339 UTC timestamp. ±5 minute skew.
string
required
Random 32-byte hex string (64 chars). Replays within 10 minutes are rejected.
string
required
Base64 HMAC-SHA256 of the canonical request string over the JSON body below.

Path parameters

string
required
The intent to re-mint a session token for, e.g. zp_AbCd1234EfGh5678. The partner identified by the HMAC key must own it, and it must not be in a terminal state (captured, failed, expired, cancelled).

Body

The re-mint carries the same per-payment identity and compliance attestations as the original create call — Zennopay mints the fresh token from them.
string
required
Your opaque user identifier for the paying user. Must match the user the intent was created for.
object
required
Your per-payment KYC attestation, from your real verification system: { verified, method, verified_at, id_type, id_country }.
object
required
Your per-payment sanctions attestation: { clean, screened_at }.

Response

string
A fresh Zennopay-minted session token for the same intent. Return it to your app; the SDK swaps it in and retries the call that 401’d.
integer
Unix epoch seconds at which the new token stops verifying.

Example

Example uses the sandbox host. Swap to https://api.zennopay.com in production. The legacy api.zennopay.in hosts are still served for existing integrations. See Environments.
Response