FAQ
How long is the access token valid?
TheexpiresIn field in the auth response indicates lifetime in seconds. Request a new token before it expires; there is no refresh token in client_credentials flow.
Can I call payment APIs from the browser?
No. Keepclient_secret and Bearer tokens on your server. Only redirect payers to hosted checkout URLs (/pay/checkout-payment/... or /pay/link/...).
What happens if I reuse transactionReferenceNumber?
You receiveVPAY_001 (payment session already exists). Generate a new unique reference for each new payment attempt.
Do payment links redirect to my website after payment?
Not by default. Payment links do not usecallbackSuccessUrl / callbackFailUrl. Poll GET /pay/api/payment/{checkoutSessionId} or implement your own notification flow.
How do I know if 3DS is required?
The hosted checkout handles 3DS and additional processor authentication internally. Your backend may see interimstate values (32, 64, 128) if you poll during checkout. Wait for a terminal state before fulfilling orders.
Which currency codes are supported?
Pass ISO currency codes incurrencyCode (e.g. CRC, USD). Supported currencies depend on your terminal configuration.

