Common questions and solutions gathered from real integration experiences. If you don’t find your answer here, contact your UQPAY account manager.Documentation Index
Fetch the complete documentation index at: https://developers-sandbox.uqpaytech.com/llms.txt
Use this file to discover all available pages before exploring further.
Sandbox testing
Simulation API returns 'Card does not exists'
Simulation API returns 'Card does not exists'
40963608. Cards with other BINs will return this error.Also check:- The card has not been cancelled. Cancelled cards cannot process authorizations.
- You are using the correct sandbox base URL:
https://api-sandbox.uqpaytech.com/api
Cannot create cards in sandbox: 'insufficient_sub_bin'
Cannot create cards in sandbox: 'insufficient_sub_bin'
Sandbox deposits require manual approval
Sandbox deposits require manual approval
How do I get physical card numbers for sandbox testing?
How do I get physical card numbers for sandbox testing?
Authentication and API setup
Access token validity period
Access token validity period
expired_at field in the token response to determine when to refresh. See Request Access Token.Error: 'x-on-behalf-of' validation failed
Error: 'x-on-behalf-of' validation failed
x-on-behalf-of header requires strict validation:- Must be a valid UUID format (e.g.,
18523f72-f4de-4f9c-bb8e-ec7d1c4f32be) - Must correspond to a valid Issuing sub-account ID
- Empty or malformed values return an error
sub_account_not_found, verify the account ID belongs to the Issuing business line (not Banking), and that the sub-account is activated.API Key IP whitelist
API Key IP whitelist
192.168.x.x) are not routable and will always fail.How does x-idempotency-key work?
How does x-idempotency-key work?
x-idempotency-key on a repeat request returns the cached result of the original request — no new operation is created. Important behaviors:- The cached response persists for 24 hours
- If the original request failed (e.g., insufficient balance), retrying with the same key returns the same failure — even if conditions have changed. Use a new key when retrying after fixing the root cause.
- If you receive a 504 timeout, retry with the same key — the server may have already processed the request
'Parse file failed' when uploading KYC documents
'Parse file failed' when uploading KYC documents
- Missing Content-Type: Always include
Content-Type: multipart/form-datafor file uploads - Reused idempotency key: The
x-idempotency-keymust be a valid UUID and unique for each new request
Cardholders
Cardholder name must be in English
Cardholder name must be in English
first_name and last_name must be in English (Latin characters). Chinese or other non-Latin characters are not accepted. Address fields within delivery_address do accept Chinese.Error: 'invalid_phone_number'
Error: 'invalid_phone_number'
country_code format. Pass the country_code matching the phone number’s dialing region, not the cardholder’s nationality. Numbers should be in international format without the leading zero.See Phone Number Validation Rules for details.Can cardholders share the same email or phone number?
Can cardholders share the same email or phone number?
Can cardholders be deleted?
Can cardholders be deleted?
Card creation and configuration
Error: 'risk_control_not_allowed'
Error: 'risk_control_not_allowed'
risk_controls parameter (including allow_3ds_transactions) is only supported on specific BINs. Passing this parameter for unsupported BINs returns an error. The same restriction applies to no_pin_payment_amount.See Supported BINs for Risk Control Configurations for the full list.Error: 'card quota of account exceeds limit'
Error: 'card quota of account exceeds limit'
Error: 'card bin not config'
Error: 'card bin not config'
Card stays in Pending status after creation
Card stays in Pending status after creation
PENDING status and transition to ACTIVE once provisioning completes. To detect activation, either listen for the card.create.succeeded webhook or poll the Retrieve Card endpoint — both are supported.What is the maximum per-transaction spending limit?
What is the maximum per-transaction spending limit?
Sub-account creation limit
Sub-account creation limit
Card status and lifecycle
What are all possible card_status values?
What are all possible card_status values?
| Status | Description | Controlled by |
|---|---|---|
ACTIVE | Card is active and can process transactions | Merchant |
FROZEN | Card is temporarily frozen — can be unfrozen via API | Merchant |
BLOCKED | Card is blocked by risk controls — requires UQPAY to unlock | System |
PRE_CANCEL | Card is scheduled for cancellation (30-day wait) | — |
CANCELLED | Card is permanently cancelled | — |
What is the difference between FROZEN and BLOCKED?
What is the difference between FROZEN and BLOCKED?
[email protected] with the cardholder name, card ID, current status, and reason for unlock.Refunds and reversals can still post to both FROZEN and BLOCKED cards.Can I go directly from FROZEN to CANCELLED?
Can I go directly from FROZEN to CANCELLED?
FROZEN directly to CANCELLED in a single API call without first reverting to ACTIVE.What happens after a card is cancelled?
What happens after a card is cancelled?
PRE_CANCEL status for a 30-day waiting period, then automatically transitions to CANCELLED. During PRE_CANCEL:- The card cannot process new transactions
- Previously authorized transactions may still settle
- For Single cards, UQPAY automatically sweeps remaining balance back to the merchant account after the waiting period
Can I change limits on a FROZEN card?
Can I change limits on a FROZEN card?
ACTIVE) before assigning or modifying its limit.Virtual vs physical card activation
Virtual vs physical card activation
/api/v1/issuing/cards/activate, using the activation code delivered by the card.activation.code webhook after assignment. See Issue Physical Cards.Card funding and limits
Single card vs Share card: limit and funding differences
Single card vs Share card: limit and funding differences
Error: 'The single card not support changing card limits'
Error: 'The single card not support changing card limits'
card_limit after creation. To adjust a Single card’s spendable amount, use the recharge and withdraw APIs instead.Is there an API to transfer funds from Banking to Issuing?
Is there an API to transfer funds from Banking to Issuing?
Error: 'product_not_found' when transferring between accounts
Error: 'product_not_found' when transferring between accounts
Transactions and settlement
What are the possible transaction_status values?
What are the possible transaction_status values?
| Status | Description |
|---|---|
APPROVED | Transaction approved |
DECLINED | Transaction declined |
PENDING is a transient state that exists only briefly during processing — do not act on it. Wait for the issuing.transaction.authorization webhook, which always carries a terminal state. The REFUNDED status was removed as of May 29, 2025.The 'failure_reason' field is empty in transaction responses
The 'failure_reason' field is empty in transaction responses
failure_reason field was renamed to description as of May 29, 2025. Update your integration to read the description field instead.This change affects:- List Cards Transactions API
- Retrieve Cards Transaction API
card.transaction.*webhook events- Exported transaction reports
How do I distinguish ATM withdrawals from regular purchases?
How do I distinguish ATM withdrawals from regular purchases?
AUTHORIZATION as the transaction_type. To differentiate, check merchant_data.category_code:- MCC
6011= ATM cash withdrawal - MCC
6011withbilling_amount == 0= ATM balance inquiry - Other MCC values = regular purchase
Error: 'card credit limit greater than max Limit'
Error: 'card credit limit greater than max Limit'
card_limit exceeds the platform’s maximum allowed single-transaction cap configured for your account. Contact your UQPAY account manager to raise the cap via a VIP whitelist, or keep per-card limits within the configured cap.Error: 'Exceed Pin Free Amount'
Error: 'Exceed Pin Free Amount'
Should I trust a 200 response from recharge/withdraw as confirmation?
Should I trust a 200 response from recharge/withdraw as confirmation?
Webhooks
Not receiving webhook notifications
Not receiving webhook notifications
- Event subscription: Verify you have subscribed to the specific event type. For example, wallet binding OTPs require
card.verification.otp; transaction validation requiresissuing.transaction.validation. - HTTP 200 response: Your endpoint must return HTTP
200within the timeout period. - URL accessibility: Ensure your webhook URL is publicly accessible from UQPAY’s source IPs.
What is the webhook retry schedule?
What is the webhook retry schedule?
What are UQPAY's webhook source IP addresses?
What are UQPAY's webhook source IP addresses?
Can failed webhooks be resent?
Can failed webhooks be resent?
3D Secure and wallet payments
Why are 3DS fees charged when allow_3ds_transactions is set to N?
Why are 3DS fees charged when allow_3ds_transactions is set to N?
allow_3ds_transactions only controls how the cardholder authenticates once 3DS has been triggered — specifically, whether a frictionless (no interaction) flow is permitted, or whether a challenge flow with manual OTP entry is required.Because the trigger happens at the acquirer, a transaction can still enter the 3DS flow even when allow_3ds_transactions is N, which is why 3DS verification fees may still be incurred.To bypass 3DS entirely (and avoid the associated verification fees), set enable_3ds to N on the card. This unregisters the card from 3DS so the acquirer cannot trigger 3DS authentication on it. See 3D Secure for the full two-field model.No OTP webhook received for wallet binding
No OTP webhook received for wallet binding
card.verification.otp event type specifically. Standard ISSUING webhook subscriptions do not include this.Can cardholder email notifications be disabled?
Can cardholder email notifications be disabled?
Secure iFrame and PCI
Retrieve Card Secure requires ACTIVE status
Retrieve Card Secure requires ACTIVE status
/cards/:id/secure endpoint requires the card to be in ACTIVE status. Calling it on a PENDING card returns Card does not exists. Wait for the card to activate first.Physical cards
Error: 'card has been assigned' on duplicate assign
Error: 'card has been assigned' on duplicate assign
Error: 'card number not available for this account'
Error: 'card number not available for this account'

