A QR Payments corridor binds a destination country, merchant QR scheme, and
local settlement currency. The corridor is fixed when the payment intent is
created and cryptographically bound into the checkout session token.
Availability
The current create-intent schema, session token claim, database constraint,
and authoritative QR parser accept only vn_vietqr and th_promptpay.
Philippines/QR Ph does not yet have a public corridor code in v1. Do not send
a guessed value or advertise it as live.
Vietnam — VietQR
- Corridor code:
vn_vietqr
- QR scheme: VietQR
- Expected country:
VN
- Expected ISO 4217 numeric currency:
704
- Local amount format: base-10 int64 string; VND is whole dong
Zennopay re-parses the raw VietQR payload server-side and verifies its CRC,
scheme, country, currency, amount rules, merchant, and destination before
confirm can move money. Both sandbox and live use require the corridor to be
enabled for the account.
Thailand — PromptPay preview
- Corridor code:
th_promptpay
- QR scheme: PromptPay
- Expected country:
TH
- Expected ISO 4217 numeric currency:
764
- Local amount format: base-10 int64 string in satang
The v1 API and QR parser recognize this corridor, but the current service does
not have a merchant-delivery rail enabled for it. Integrations may test contract
and parsing behavior only when explicitly provisioned; do not plan production
traffic until Zennopay confirms execution availability.
Philippines — QR Ph
QR Ph/PHP is not accepted by the current v1 intent schema, token verifier, or
QR parser, and no ph_* corridor is public. A future availability announcement
must include the exact corridor code and an updated API schema before clients
can integrate it.
Selecting a corridor
Your backend selects the corridor before presenting PaymentSheet. The raw QR
is then parsed authoritatively and must match the token-bound scheme, country,
and currency. A mismatch returns validation_failed before any money moves.
See QR Payments for the complete request flow.