Skip to main content

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.

When a Global Acquiring API call fails, the gateway returns a non-2xx HTTP status with a JSON error body. Use this page to identify what went wrong and how to recover.

Error response formats

The Global Acquiring API uses two response envelopes. Which one you receive depends on which handler processed the request.
Almost every error the Global Acquiring API returns uses this envelope. The type field determines the HTTP status (see Error types).
{
  "type": "payment_error",
  "code": "retrieve_payment_intent_failed",
  "message": "Retrieve payment intent failed"
}
FieldMeaning
typeHigh-level category. Maps to HTTP status (see Error types).
codeMachine-readable string identifier. Use for programmatic handling.
messageHuman-readable description. Safe to log, not safe to surface verbatim to end-users.

Error types

Envelope A groups codes into types, each of which maps to a fixed HTTP status.
typeHTTPWhen it appears
invalid_request_error400Request failed validation.
idempotency_error400Idempotency key format invalid or mismatched.
account_error400Account or bank-account resource rule violated.
customer_error400Customer resource rule violated.
payment_error400PaymentIntent, PaymentAttempt, or payment-link rule violated.
refund_error400Refund resource rule violated.
payout_error400Payout resource rule violated.
product_error400Merchant product configuration prevents the operation.
not_found400Requested resource id was not found on the connected account.
unauthorized_error401API key or client secret missing, malformed, or expired.
api_error400 / 429 / 500Catch-all for gateway-internal or risk-control errors; HTTP 500 when code is api_error, 429 when velocity_limit_exceeded.
Envelope B does not carry a type field; branch on whether code is numeric (Envelope B) or a string (Envelope A) to distinguish cases.

Common errors

These can appear on any authenticated endpoint.

Envelope A (typed errors)

codetypeMessageWhat to do
invalid_parameterinvalid_request_error(varies — parameter is invalid for JSON/query bind failure, or Invalid request parameters: <field> for validator failures)Check the request body against the endpoint’s API reference — one or more fields failed JSON binding or schema validation. When the message names a field, correct that field and retry.
missing_parameterinvalid_request_errorMandatory parameter is missingSupply the required path parameter or body field noted in the message. Most commonly this means a missing {id} segment or an empty required field in the request body.
unauthorized_errorunauthorized_error(varies — e.g. auth token is not empty, invalid auth token format, auth token is expired)Obtain a fresh token from Request an access token and send it in the x-auth-token header. Tokens expire — refresh before retrying.
account_not_foundaccount_errorAccount not found or deactivatedVerify the merchant account resolved from your access token is active. If the account was recently created or suspended, contact UQPAY support before retrying.
invalid idempotency key formatidempotency_errorIdempotency key is invalidSend a non-empty Idempotency-Key header that matches the format documented for the endpoint (typically a UUID). Regenerate the key and retry.
api_errorapi_errorAn internal error occurred, please try again.Retry the request with the same Idempotency-Key after a short backoff. If the error persists, contact UQPAY support with the request_id from the response headers.

Envelope B (legacy idempotency-pending)

codeMessageWhat to do
200Request is processing, please try again later.Retry shortly with the same Idempotency-Key — the original request is still being processed and the final response will be returned once it completes.

Resource errors

Payment errors

Create a PaymentIntent · Retrieve a PaymentIntent · Update a PaymentIntent · Confirm a PaymentIntent · Capture a PaymentIntent · Cancel a PaymentIntent · List all PaymentIntents · Retrieve a PaymentAttempt · List all PaymentAttempts
Envelope A types: payment_error, invalid_request_error, product_error, not_found. Envelope A
codeMessageTypical endpointsWhat to do
create_payment_intent_failedCreate payment intent failedCreate a PaymentIntentGateway-internal failure while persisting the PaymentIntent. Retry with the same Idempotency-Key; if it keeps failing, contact UQPAY support with the request_id.
create_payment_attempt_failedCreate payment attempt failedCreate a PaymentIntent · Confirm a PaymentIntentGateway-internal failure while creating the attempt record. Retry with the same Idempotency-Key; contact support if the error repeats.
confirm_payment_intent_failedConfirm payment intent failedCreate a PaymentIntent · Confirm a PaymentIntentConfirmation to the channel failed. Use Retrieve a PaymentIntent to check the current status before retrying — the attempt may already be in flight.
retrieve_payment_intent_failedRetrieve payment intent failedRetrieve a PaymentIntent · Update a PaymentIntent · Confirm a PaymentIntent · Capture a PaymentIntent · Cancel a PaymentIntent · Create a refundVerify the PaymentIntent id in the URL exists and belongs to the authenticated account. Do not strip the pi_ prefix.
retrieve_payment_attempt_failedRetrieve payment attempt failedRetrieve a PaymentAttempt · Capture a PaymentIntent · Cancel a PaymentIntent · Create a refundVerify the payment_attempt id exists on the referenced PaymentIntent. Use Retrieve a PaymentIntent to list valid attempt ids.
update_payment_intent_failedUpdate payment intent failedUpdate a PaymentIntentCheck the PaymentIntent status via Retrieve a PaymentIntent — only intents in requires_payment_method or requires_confirmation accept updates.
capture_payment_intent_failedCapture payment intent failedCapture a PaymentIntentGateway-internal failure while forwarding the capture to the channel. Use Retrieve a PaymentIntent to confirm whether the capture succeeded before retrying.
capture_amount_invalidAmount requested is inconsistent with order amount, Please enter the correct amount.Capture a PaymentIntentSet amount_to_capture to a value between zero and the PaymentIntent’s authorized amount. For full capture, omit the field entirely.
cancel_payment_intent_failedCancel payment intent failedCancel a PaymentIntentVerify the PaymentIntent is still cancellable (status requires_capture or earlier) via Retrieve a PaymentIntent. Completed or already-cancelled intents cannot be cancelled.
invalid_order_statusInvalid order statusUpdate a PaymentIntent · Capture a PaymentIntent · Cancel a PaymentIntent · Create a refundThe PaymentIntent’s current status does not permit this operation. Use Retrieve a PaymentIntent to check status, then call the appropriate endpoint for that state.
expired_orderExpired payment intentUpdate a PaymentIntentThe PaymentIntent has passed its expiry window. Create a new PaymentIntent instead of updating this one.
order_cancelledOrder cancelledCancel a PaymentIntentThe PaymentIntent is already in canceled status. No further action is required.
operation_pendingOperation pending! Do not repeat submissions!Cancel a PaymentIntentA prior cancel is still processing. Wait briefly and call Retrieve a PaymentIntent to confirm the final status before retrying.
repeat_payment_requestOperation failed. Payment request has been completed for the order. No need to repeat operation.Capture a PaymentIntentThe PaymentIntent has already been captured. Call Retrieve a PaymentIntent to read the resulting state — no retry needed.
invalid_payment_methodinvalid pay methodCreate a PaymentIntent · Confirm a PaymentIntentUse a payment_method value that is enabled for your account and supported for the order currency and customer country. Check your merchant dashboard for the enabled payment methods.
invalid_return_urlInvalid return urlCreate a PaymentIntentSupply an absolute HTTPS URL for return_url. It must be reachable and must not contain unencoded spaces or fragments that break URL parsing.
invalid_descriptionInvalid descriptionCreate a PaymentIntentShorten description to within the documented length (256 characters) and remove any disallowed characters.
invalid_order_amountInvalid order amountCreate a PaymentIntentSend amount as a positive integer in the smallest currency unit (for example cents for USD). Check minimum and maximum limits for the selected payment_method.
invalid_order_currencyInvalid order currencyCreate a PaymentIntent · Confirm a PaymentIntentUse an ISO 4217 currency code that your account supports for the selected payment_method. Some methods (for example PayNow) only accept specific currencies.
invalid_payment_ordersInvalid payment ordersCreate a PaymentIntentThe sub-order breakdown in payment_orders does not sum to the top-level amount, or contains invalid entries. Verify each sub-order’s amount and currency.
not_found_idNot Found IDRetrieve a PaymentIntentThe PaymentIntent id does not exist on this account. Double-check the id value and confirm you are calling with the correct API key.
product_not_foundProduct not found or inactiveCreate a PaymentIntent · Confirm a PaymentIntent · Cancel a PaymentIntentThe account’s product configuration for this payment_method is missing or inactive. Contact UQPAY support to enable the product.
3ds_required3DS RequiredCreate a PaymentIntent · Confirm a PaymentIntentThe card issuer requires 3-D Secure for this transaction. Re-submit with 3ds.required = true and handle the returned challenge URL in the cardholder’s browser.
require_payment_pii(varies — invalid payment method body, invalid payer info, invalid payer identifier, …)Create a PaymentIntent · Confirm a PaymentIntentThe selected payment_method requires additional payer details (name, email, document id, or billing address). Populate the method-specific PII fields called out in the message.
retrieve_refund_failedRetrieve refund failedCancel a PaymentIntent · Create a refund · Retrieve a refundVerify the refund id belongs to this account. On cancel/refund flows, this surfaces when a previously requested refund cannot be re-read — retry after a brief delay.
payment_link_not_foundPayment link not foundCreate a PaymentIntentThe payment_link id in the request is unknown. Confirm the link exists for this account and has not been deleted.
payment_link_expiredThis link can no longer accept payments. Contact the seller for more information.Create a PaymentIntentThe payment link has passed its expires_at timestamp. Ask the merchant to issue a new link.
payment_link_inactiveThis link can no longer accept payments. Contact the seller for more information.Create a PaymentIntentThe payment link has been deactivated. Ask the merchant to reactivate it or issue a new one.
payment_link_access_number_not_enoughThis link can no longer accept payments. Contact the seller for more information.Create a PaymentIntentThe payment link has reached its configured usage cap. Ask the merchant to raise the access limit or issue a new link.
payment_link_parameters_errorPayment link parameters errorCreate a PaymentIntentRequest parameters (amount, currency, or customer info) do not match what the payment link allows. Align the request with the link’s configuration.

Refund errors

Create a refund · Retrieve a refund · List all refunds
Envelope A types: refund_error, payment_error, invalid_request_error, api_error. Envelope A
codeMessageTypical endpointsWhat to do
create_refund_failedCreate refund failedCreate a refundGateway-internal failure while creating the refund. Retry with the same Idempotency-Key; if the error repeats, contact UQPAY support with the request_id.
refund_processingRefund is processing, please try again afterCreate a refundA refund on this PaymentIntent is already in flight. Wait for its outcome (via Retrieve a refund or the refund webhook) before submitting another.
refund_stat_failedFind refund order failedCreate a refundVerify the payment_intent referenced by the refund exists and is in a refundable status.
refund_amount_exceededRefund amount exceeded original transaction amountCreate a refundReduce amount so that the sum of all refunds on this PaymentIntent does not exceed the captured amount.
refund_amount_invalidRefund amount invalidCreate a refundSend amount as a positive integer in the smallest currency unit. It must be greater than zero and no larger than the remaining refundable amount.
retrieve_refund_failedRetrieve refund failedRetrieve a refund · Create a refund · Cancel a PaymentIntentVerify the refund id belongs to this account. Retry after a short delay if the refund was just created and may not yet be visible.
api_errorPlease use the payment cancel endpointCreate a refundThe PaymentIntent is still in a state where refund is not applicable — call Cancel a PaymentIntent instead.
invalid_parameter(varies — invalid start_time, invalid end_time, the end_time cannot be earlier than the start_time, the start_time and end_time cannot differ by more than 90 days)List all refundsSupply RFC 3339 timestamps for start_time and end_time, ensure end_time is after start_time, and keep the window within 90 days.

Customer errors

Create a customer · Get a customer · Update a customer · List customers
type: customer_error Envelope A
codeMessageTypical endpointsWhat to do
create_customer_failedCreate customer failedCreate a customerGateway-internal failure while persisting the customer. Retry with the same Idempotency-Key; if it keeps failing, contact UQPAY support with the request_id.
update_customer_failedUpdate customer failedUpdate a customerVerify the customer id exists on this account and that the updated fields pass schema validation. Retry with the same Idempotency-Key.
retrieve_customer_failedRetrieve customer failedGet a customerVerify the customer id exists and belongs to the authenticated account.

Payout errors

Create Payout · Retrieve Payout · List all Payouts · Retrieve Balance · List Balances · Create Bank Account · Retrieve Bank Account · Update Bank Account · List all Bank Accounts
Envelope A types: payout_error, account_error, product_error, api_error. Envelope A
codeMessageTypical endpointsWhat to do
create_payout_failedCreate payout failedCreate PayoutGateway-internal failure while creating the payout. Retry with the same Idempotency-Key; if it repeats, contact UQPAY support with the request_id.
payout_not_foundpayout not foundRetrieve PayoutVerify the payout id exists and belongs to the authenticated account.
payout_settlement_account_not_foundNo account settlement for this currencyCreate PayoutYour account does not have a settlement account configured for this currency. Contact UQPAY support to enable payout in the requested currency.
invalid_currencyInvalid currencyRetrieve Balance · Create Bank Account · Create PayoutUse an ISO 4217 currency code that matches your account’s enabled currencies. Check your merchant dashboard for the list of supported currencies.
insufficient_balanceMerchant’s available balance is insufficientCreate PayoutReduce the payout amount or top up the balance before retrying. Use List Balances to read the current available balance for the requested currency.
merchant_account_invalidMerchant Account InvalidCreate PayoutThe merchant account is not configured for payouts. Contact UQPAY support to enable the payout product.
disabled_transfer_typeThis type of payout is disabled by the merchant (e.g., auto-withdrawal turned off)Create PayoutThe account has disabled this transfer_type (for example auto-withdrawal). Enable the setting in the merchant dashboard or pick a different transfer_type.
velocity_limit_exceededTransaction frequency/amount exceeds risk control thresholds (HTTP 429)Create PayoutSlow down payout creation and retry after the rate-limit window. If limits are consistently hit, contact UQPAY to discuss raising them.
product_not_foundProduct not found or inactiveCreate PayoutThe payout product is not active for your account. Contact UQPAY support to enable it.
bank_account_not_foundBank account not foundRetrieve Bank Account · Update Bank AccountVerify the bank-account id exists and belongs to the authenticated account.
bank_account_already_existsBank account already exists for this currencyCreate Bank AccountUpdate the existing bank account for this currency via Update Bank Account instead of creating a new one. Only one bank account per currency is allowed.
create_bank_account_failedCreate bank account failedCreate Bank AccountGateway-internal failure while persisting the bank account. Retry with the same Idempotency-Key; contact support if the error repeats.
update_bank_account_failedUpdate bank account failedUpdate Bank AccountVerify the bank-account id and the updated fields pass schema validation. Retry with the same Idempotency-Key.
internal_errorInternal Error: Please contact support for assistanceRetrieve Payout · List Balances · Create Bank Account · List all Bank AccountsRetry with the same Idempotency-Key after a short backoff. If the error persists, contact UQPAY support with the request_id from the response headers.
invalid_parameterInvalid request parameters: <field>Retrieve Payout · Update Bank Account · Create PayoutCorrect the field named in the message and retry. The validator calls out the specific field that failed schema validation.