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.
2026-05-08
Issuing
[NEW]enable_3ds field for per-card 3DS registration control- Affected endpoints: Create Card, Update Card, Retrieve Card, List Cards
- Affected webhooks:
card.create.succeeded,card.update.succeeded - New
risk_controls.enable_3dsfield controls whether a card is registered for 3DS at all. Combine with the existingallow_3ds_transactionsfor full 3DS behavior — see the updated 3D Secure guide. - Visa BINs only. Modifiable when the card is in
PENDINGorACTIVEstatus. - Returned in card responses only when explicitly set on the card. When absent, the card follows the account-level 3DS configuration.
- Backward-compatible — existing integrations that do not pass
enable_3dscontinue to work unchanged.
2026-05-07 (Upcoming Change)
Issuing
[BREAKING] Secure Iframe rendering behavior changesThe Secure Iframe integration ships a set of layout and control changes that may visibly affect existing integrations even without any client-side code update. We recommend verifying the rendering in sandbox before the production rollout.- Effective: 2026-05-07, ~20:00 Beijing time (UTC+8)
- Changes that may visibly affect existing integrations:
- Page max-width:
512px→1280px. Cards in parent containers wider than 512px will render wider than before. - Iframe content height: previously content-driven (auto) → fixed at
300px. Content exceeding 300px may be clipped or scrolled. - Iframe container minimum height: previously unrestricted →
min-height: 400px. Containers with shorter content will be expanded to 400px. - Bottom “Show / Hide data” toggle button has been removed. Sensitive data visibility (card number, expiry, CVV) is now toggled via the eye icon next to the
CVVlabel, which is persistently visible. Clicking on the masked values (****,**/**,***) also toggles visibility.
- Page max-width:
- To preserve the previous fixed dimensions, pass
width/heightthrough thestylesparameter on.uq-card-container— see the Secure Iframe Guide for usage.
[NEW]
show_data URL parameter for the Secure IframePass show_data=true on the Secure Iframe URL to reveal card number, expiry, and CVV on load without a user action. Default: false. Recommended for trusted environments only.[NEW]
cardholder_name URL parameter for the Secure IframePass cardholder_name=true on the Secure Iframe URL to render the cardholder name field. Default: false (hidden). Backward-compatible.[ENHANCED] New
styles selectors and properties for the Secure IframeThe Secure Iframe styles parameter now supports:- New selectors:
.uq-card-cardholder(cardholder name styling) and.uq-page-background(iframe page background; defaulttransparent). .uq-card-containeracceptswidth,height,min-height,max-width,min-width— useful for restoring the previous fixed dimensions..uq-card-rowacceptsdisplay,justify-content,align-items,flex-direction,gap— useful for label/value alignment.
2026-04-24
Issuing
[NEW] One-step card issuance — create a cardholder and card in a single call- Affected endpoint: Create Card (request and response)
cardholder_idis now optional. When omitted, provide a completecardholder_required_fieldsblock and the system creates the cardholder and issues the card in the same request.- Backward-compatible — existing integrations that pass
cardholder_idcontinue to work unchanged. - See One-Step Card Issuance for the full integration flow.
[ENHANCED]
card.verification.otp webhook now supports Apple Pay binding- Affected webhook:
card.verification.otp - The verification OTP event is now published for both Google Pay and Apple Pay wallet bindings. Previously, it was only published for Google Pay bindings.
- No action required for existing integrations — merchants already subscribed to
card.verification.otpwill automatically receive OTPs for Apple Pay bindings.
[NEW] Kosovo added to supported countries for cardholder phone validation
- Affected endpoint: Create Cardholder
- Cardholders with Kosovo (ISO 3166-1 alpha-2
XK, alpha-3XKX) phone numbers can now be created successfully. - Phone prefix:
+383. Valid phone number length (excluding country code): 8–9 digits. - See Phone Number Validation Rules for the full country list.
2026-04-16
Issuing
[NEW]issuing.transfer.status_changed webhook- New webhook event published when an issuing transfer status changes (e.g., from
pendingtosucceededorfailed). - Subscribe to
issuing.transfer.status_changedin your webhook configuration to receive this notification.
[ENHANCED]
available_balance and currency fields in card.status.update webhooks- Affected webhooks:
card.status.update.succeeded,card.status.update.failed - Added
available_balance— the card’s current available balance at the time of the status change. - Added
currency— the card’s currency in ISO 4217 format.
2026-04-02
Acquiring
[ENHANCED] Create Payout: Newpayout_account_id field for internal account transfersPayout creation now supports an optional payout_account_id parameter, enabling merchants to route payout funds to a UQPAY internal account instead of the pre-configured external bank account.- Affected endpoint: Create Payout (request)
- Changes:
- New optional field
payout_account_idadded to the request body. - When omitted, existing behavior is preserved — funds are sent to the configured external bank account.
- When provided, the payout is processed as a UQPAY internal transfer to the specified account.
- Both long and short UQPAY account IDs are accepted.
- New optional field
- Notes:
- The
payout_account_idshould match the calling account: pass the sub-account ID when calling from a sub-account, or the master account ID when calling from the master account. - This is a non-breaking, backward-compatible change — no action required for existing integrations.
- The
Issuing
[ENHANCED] Cardholder KYC System Reform: Multi-Level KYC SupportCardholder creation, update, and card issuance now support tiered KYC levels based on card BIN requirements. Two new webhook events are introduced for KYC lifecycle tracking.Create & Update Cardholder: Multi-Level KYC
- Affected endpoints: Create Cardholder (request and response), Update Cardholder (request and response)
- Changes:
- Three KYC levels now supported:
SIMPLIFIED— basic fields only, behavior identical to previous version,cardholder_statusset toSUCCESSimmediatelySTANDARD— requiresnationality,identity,residential_address, triggers review processENHANCED— additionally requireskyc_verification, supportingTHIRD_PARTYandSUMSUB_REDIRECTmethods
- New request fields:
gender,nationality,identity(object),residential_address(object),kyc_verification(object) - New response fields:
cardholder_status,idv_verification_url,idv_url_expires_at
- Three KYC levels now supported:
- Notes:
- When no new fields are provided, behavior remains fully backward compatible.
- Updating KYC-related fields is not allowed while
cardholder_statusisPENDING. residential_addressreplaces the previousdelivery_addressfield.
Retrieve Cardholder Response: New Fields
- Affected endpoints: Retrieve Cardholder (response), List Cardholders (request and response)
- Changes:
- New response fields:
gender,nationality,residential_address,cardholder_status,review_status,idv_status,idv_verification_url,idv_url_expires_at - List Cardholders accepts a new query parameter
cardholder_statusfor filtering by status.
- New response fields:
Create Card: Supplementary Cardholder KYC
- Affected endpoint: Create Card (request and response)
- Changes:
- New optional request object
cardholder_required_fields— allows merchants to supplement missing cardholder KYC fields at card creation time (includesgender,nationality,phone_number,date_of_birth,residential_address,identity,kyc_verification). - New response fields:
cardholder_status,message
- New optional request object
- Notes:
- If the cardholder does not meet the product’s requirements and
cardholder_required_fieldsis not provided, the errorkyc_insufficientis returned withmissing_fields. - When card creation triggers a KYC review, the card enters
PENDINGstatus and is automatically activated upon approval.
- If the cardholder does not meet the product’s requirements and
List Products Response: New
required_fields- Affected endpoint: List Products (response)
- Changes:
- Each product object now includes a
required_fieldsarray indicating cardholder fields required by the card BIN. - Each entry contains:
name,type(stringorobject),required(boolean),description, andfields(sub-fields when type isobject).
- Each product object now includes a
[NEW] Cardholder KYC Webhook Events
- New webhook events:
cardholder.kyc.status_changed— cardholder KYC status changescardholder.updated— cardholder information updated
2026-03-26 (Upcoming Change)
Acquiring
[BREAKING] API response structure updated: risk and authentication fields added for card transactions- Affected endpoints (response only): Create PaymentIntent, Retrieve PaymentIntent, Update PaymentIntent, Confirm PaymentIntent, Capture PaymentIntent, Cancel PaymentIntent, List PaymentIntents, Retrieve PaymentAttempt, List PaymentAttempts
- Changes:
- PaymentIntent endpoints:
latest_payment_attempt.payment_methodtype changed fromstringtoobject - PaymentAttempt endpoints:
payment_methodtype changed fromstringtoobject - PaymentIntent — new fields added to
latest_payment_attempt:auth_code,arn,rrn,advice_code - PaymentAttempt — new top-level fields:
auth_code,arn,rrn,advice_code - PaymentIntent — new object added:
latest_payment_attempt.authentication_data- Fields:
cvv_result,avs_result authentication_data.three_dsfields:ds_transaction_id,three_ds_version,eci,cavv,three_ds_authentication_status,three_ds_cancellation_reason
- Fields:
- PaymentAttempt — new object added:
authentication_data(same structure as above)
- PaymentIntent endpoints:
- Notes: Effective 2026-03-26
[NEW] PaymentAttempt webhooks: new risk and authentication fields for card transactions
- Affected webhooks:
acquiring.payment_attempt.created,acquiring.payment_attempt.capture_requested,acquiring.payment_attempt.cancelled,acquiring.payment_attempt.failed - Scope: Card payment transactions only (
payment_method.type = "card"or"card_present") - Changes:
- New fields added to the notification body:
auth_code,arn,rrn,advice_code - New object added:
authentication_data- Fields:
cvv_result,avs_result authentication_data.three_dsfields:ds_transaction_id,three_ds_version,eci,cavv,three_ds_authentication_status,three_ds_cancellation_reason
- Fields:
- New fields added to the notification body:
- Notes: Effective 2026-03-26
2026-03-20
Card Issuing
Addusage_type, auto_cancel_trigger, and expiry_at to Create CardIntroduces support for one-time-use cards by adding three optional fields to the Create Card request body.- Affected endpoint: Create Card (request)
- Changes:
- Added optional field
usage_type(enum:NORMAL,ONE_TIME; default:NORMAL). When omitted, the card behaves as a standard reusable card. - Added optional field
auto_cancel_trigger(enum:ON_AUTH,ON_CAPTURE). Required whenusage_typeisONE_TIME. Defines the transaction event that triggers automatic card cancellation:ON_AUTHcancels the card immediately after the first authorization is approved;ON_CAPTUREcancels the card after the first transaction’s capture (settlement) succeeds. - Added optional field
expiry_at(date-time string with timezone offset, e.g.2026-03-19T18:46:43+08:00). If the card has not been cancelled by a first-transaction event before this datetime, it is automatically cancelled and any unused balance is released.
- Added optional field
Banking
AddX-Request-Id header to Create Virtual AccountIntroduces an optional X-Request-Id request header to Create Virtual Account, allowing callers to pass a custom identifier that is echoed back in the associated webhook event.- Affected endpoints: Create Virtual Account, webhook:
virtual.account.* - Changes:
- Added optional request header
X-Request-Id(string, max 64 characters). - If provided, the value is returned in the associated webhook event as
request_id.
- Added optional request header
Account Center
Add four required fields toindividual_info in Create SubAccountFour new required fields are added to the individual_info object for individual account creation. Requests missing any of these fields will return a validation error after the effective date.- Affected endpoint: Create SubAccount (request)
- Changes:
- Added required field
individual_info.employment_status— employment status of the individual. - Added required field
individual_info.industry— industry the individual works in. - Added required field
individual_info.job_title— job title of the individual. - Added required field
individual_info.company_name— name of the company the individual works for.
- Added required field
- Effective date: 2026-03-19
2026-02-27
Acquiring
billing.phone_number is now optionalThe billing.phone_number field has been changed from required to optional.- Affected endpoints: Create PaymentIntent (request), Confirm PaymentIntent (request)
- The
billing.phone_numberfield is no longer required.
[NEW] Google Pay and Apple Pay payment methods
- Affected endpoints: Create PaymentIntent (request), Confirm PaymentIntent (request)
- Added
googlepayandapplepayas new available payment method options.
Banking
[BREAKING]x-idempotency-key is now required for Create Transfer- Affected endpoint: Create Transfer (request)
- Added new required request header parameter:
x-idempotency-key - This is a backward-incompatible change. All API consumers must include this header in their Create Transfer requests.
- Effective date: March 19
Account Center
proof_documents.proof_of_address is now optional in Create SubAccount- Affected endpoint: Create SubAccount (request)
- The
proof_documents.proof_of_addressfield is no longer required when creating a sub-account.
2026-01-29
Issuing
[ENHANCED] Additional filter parameters for List Issuing Balances Transactions- Affected endpoint: List Issuing Balances Transactions (request)
- Added four new optional filter parameters:
transaction_type— filter by transaction type (e.g., authorization, reversal, refund, fee, settlement)transaction_status— filter by status:COMPLETED,PENDING, orFAILEDcurrency— filter by 3-letter ISO 4217 currency code (e.g.,USD,EUR,GBP)transaction_id— filter by exact transaction ID
- All parameters are optional and can be used independently or in combination.
2026-01-08
Acquiring
[NEW] Bank Account Management APIsFour new endpoints for managing acquiring settlement bank accounts:- Create Bank Account
- Retrieve Bank Account
- Update Bank Account
- List Bank Accounts
- Each account can only have one settlement bank account per currency.
- Created bank accounts cannot be deleted.
Issuing
[NEW] Authorization Decision FunctionPartners can now implement real-time authorization decision logic for card transactions by providing a webhook server to receive authorization requests from UQPAY.2025-12-26
Account Center
[BREAKING] Enum validation enforced forbusiness_details.industry in Create SubAccount- Affected endpoint: Create SubAccount (request)
- The
business_details.industryfield now must contain a valid code from the industry code list. - Previously, the field only checked for non-empty values.
- Transition period: 2025-12-25 to 2026-01-01 accepts both old and new values. Enforcement begins 2026-01-01.
[BREAKING]
business_code response type changed from string to array- Affected endpoints: Retrieve Account (response), List Connected Accounts (response)
business_codechanged fromstringtoarray[string].- Example:
"business_code": "BANKING"→"business_code": ["BANKING"] - Possible values:
BANKING,ACQUIRING,ISSUING - Existing integrations expecting a single string value must be updated.
[DEPRECATED]
business_type field deprecated in Create SubAccount- Affected endpoint: Create SubAccount (request)
- The
business_typefield is deprecated and will be removed.
2025-12-04
Acquiring
[ENHANCED] Relaxedbrowser_info.mobile validation in 3DS scenarios- Affected endpoints: Create PaymentIntent (request), Confirm PaymentIntent (request)
browser_info.mobileis now only required when the client is mobile. It is no longer required for PC web clients in 3DS scenarios.
2025-11-27
Acquiring
[ENHANCED] Static QR code fields added to Payment Intent and Payment Attempt webhooks- Affected webhooks:
acquiring.payment_intent.*,acquiring.payment_attempt.* - Added
static_qrcode,static_qrcode_extension, andstatic_qrcode_number_platefields to webhook notification bodies. - These fields are only returned in static QR code payment scenarios.
2025-11-13
Issuing
[ENHANCED]update_reason field length restriction in Update Card Status- Affected endpoint: Update Card Status (request)
- Maximum length: 50 Chinese characters or 100 characters.
[NEW]
card.verification.otp webhook- Triggered when a card binding to Google Pay requires OTP verification.
- Subscribe to the
card.verification.otpevent type in your webhook configuration to receive this notification.
Banking
[ENHANCED] INVOICE type filtering in List Balances Transactions- Affected endpoint: List Balances Transactions (request)
- Added support for
INVOICEtype in thetransaction_typefilter parameter.
2025-10-30
Issuing
[ENHANCED]delivery_address field in Retrieve Cardholder and List Cardholders- Affected endpoints: Retrieve Cardholder (response), List Cardholders (response)
- Added
delivery_addressfield to cardholder response objects. Field structure:
2025-10-23
Acquiring
ip_address field moved to top level in PaymentIntent- Affected endpoints: Create PaymentIntent (request), Confirm PaymentIntent (request)
browser_info.ip_addressmoved to top level (same level aspayment_method).ip_addressis mandatory whenpayment_method.card.three_ds_action = enforce_3ds.
2025-10-16
Acquiring
[ENHANCED] Billing addressstate field conditionally required for US and CA- Affected endpoints: Create PaymentIntent (request), Confirm PaymentIntent (request)
payment_method.card.billing.address.stateis now conditionally required whenbilling.address.country_codeis"US"or"CA".
[NEW] TRUEMONEY, TNG, GCASH, DANA, KAKAOPAY, TOSSPAY, and NAVERPAY payment methods
- Affected endpoints: Create PaymentIntent, Confirm PaymentIntent
- Added support for seven new payment methods, expanding coverage in Southeast Asian markets.
[NEW] Manual payment capture endpoint
- New endpoint:
POST /v2/payment_intents/{id}/capture - Supports
auto_capture = falsepayment flows with a configurable 1–24 hour capture window. - UQPAY auto-captures funds after the window period if not manually captured.
- Merchants can cancel orders within the capture window period.
Banking
[ENHANCED]beneficiary_entity_type field in beneficiary webhooks- Affected webhooks:
beneficiary.* - Added
beneficiary_entity_typefield to webhook payloads. Values:"INDIVIDUAL"or"COMPANY".
Issuing
[ENHANCED] Phone number validation rules updated- Affected endpoint: Create Cardholder (request)
- Updated length validation for the following countries (excluding country/region/area codes):
- Nigeria (NG): 8 or 10 digits
- Bangladesh (BD): 8 or 10 digits
- Libya (LY): 8 or 9 digits
- Senegal (SN): 7 or 9 digits
- Mayotte (YT): 8 or 9 digits
- Ecuador (EC): 7 or 9 digits
- Republic of Congo area code changed from 2420 to 242.
2025-09-26
Account Center
[ENHANCED] Enhanced SubAccount creation for TPSP master accounts- Affected endpoint: Create SubAccount (request)
- Added
ownership_details.representatives.face_docsfor company entity types. - Added
identity_verification.face_docsfor individual entity types. - Added
tos_acceptance.tos_agreementfor both entity types (optional; set to1to auto-sign TPSP Terms of Service). face_docsare mandatory when creating sub-accounts under TPSP master accounts.- For company entities: at least one representative with specific job titles must provide face verification documents.
2025-09-18
Acquiring
[NEW] Account balance and payout endpointsFive new endpoints released:- Retrieve Balance
- List Balances
- Create Payout
- Retrieve Payout
- List Payouts — real-time payout status updates available via webhooks.
2025-09-11
Banking
[ENHANCED] Chinese parentheses support in company name and account holder fields- Affected endpoints: Create Payout (request), Create Beneficiary (request)
- Added support for Chinese parentheses
()incompany_nameandaccount_holderfields. - Applies only when
bank_country_code = CN,account_currency_code = CNH,payment_method = LOCAL,entity_type = COMPANY.
[ENHANCED] Relaxed input validation for local payments
- Affected endpoints: Create Payout (request), Create Beneficiary (request)
- Removed input validation for
bank_details.account_holder,first_name,last_name,company_name,address.street_address,address.city, andaddress.statewhenpayment_method = LOCALandaccount_currency_codeis not CNH or SGD.
[ENHANCED] Updated
payout_reference validation rules- Affected endpoint: Create Payout (request)
- SWIFT payments: new pattern
/^[a-zA-Z0-9/-?:().'+, ]+$/(supports space and additional special characters). - LOCAL payments with non-CNH/non-SGD currency: no validation applied.
[NEW] Invoice document required for INR cross-currency payouts
- Affected endpoint: Create Payout (request)
- Invoice document upload is now mandatory when
beneficiary.bank_details.account_currency_code = "INR"andclearing_system = "IFSC". - Document must be uploaded in the
documentationfield.
[BREAKING]
OTHER_SERVICES removed from purpose_code enumeration- Affected endpoint: Create Payout (request)
- Removed
OTHER_SERVICESfrom thepurpose_codefield. Existing integrations using this value must update.
Acquiring
[NEW]acquiring.payment_intent.requires_action webhook- Triggered when payment intent status is
REQUIRES_CUSTOMER_ACTIONduring the customer authentication phase.
2025-09-05
Account Center
[BREAKING] Document fields changed from object to array in Create SubAccount- Affected endpoint: Create SubAccount (request)
- The following fields now accept an array instead of a single object:
identity_verification.identity_docsownership_details.shareholder_docsownership_details.representatives.identity_docscompany_info.certification_of_incorporationproof_documents.proof_of_addressproof_documents.source_of_fundsproof_documents.proof_of_position_and_income
Banking
[NEW] Cross-currency payout support- Create Quote: added
transaction_typefield —conversion(default) for currency conversion;payoutfor cross-currency payouts. - Create Payout: added
payout_currency,payout_amount, andquote_idfields. - Retrieve Payout / List Payouts: added
quote_idandconversionfields (currency_pair,client_rate). - Webhooks
payout.*: addedconversion,quote_id,payout_amount, andpayout_currencyfields.
[BREAKING] Input validation added for recipient basic information fields
- Affected endpoints: Create Beneficiary (request), Create Payout (request)
- Affected fields:
bank_details.account_holder,first_name,last_name,company_name,address.street_address,address.city,address.state - New validation applies to all conditions except when
bank_details.account_currency_code = CNH,payment_method = LOCAL, andbank_country_code = CN. - Only English characters, numbers, special characters, and spaces are allowed.
- For Singapore SGD individual accounts (
entity_type = INDIVIDUAL,bank_country_code = SG,account_currency_code = SGD), stricteraccount_holdervalidation applies.
[BREAKING] Input validation added for
payout_reference- Affected endpoint: Create Payout (request)
- Only alphabetic characters, numbers, spaces, commas (
,), and periods (.) are allowed.
Issuing
[NEW] Bulk Create Virtual Cards endpoint- New endpoint added: Bulk Create Virtual Cards
- New webhook:
issuing.report.succeeded— delivers the decryption key for the card numbers file. - Assign Card API expanded to support binding of bulk-created virtual cards.
- A
report_idis returned after submission; retrieve the card number file using the Download Report API before expiry. - You must subscribe to
issuing.report.succeededbefore calling Bulk Create Virtual Cards.
[ENHANCED]
Ori Transaction Id field added to card reports- Affected reports: Card Transaction Report, Card Settlement Report
- Added new field
Ori Transaction Id.
2025-08-28
Banking
email and nickname fields changed to optional- Affected endpoints: Create Beneficiary (request), Create Payout (request)
email: required → optionalnickname: required → optional
Field adjustments for Singapore (SGD) accountsWhen
bank_details.bank_country_code = SG and bank_details.account_currency_code = SGD:- Affected endpoints: Create Beneficiary (request), Create Payout (request)
- Removed:
company_name,first_name,last_name,address.country,address.street_address,address.city,address.state,address.postal_code - Changed to optional:
email,nickname
[BREAKING] New
bank_details.account_holder validation for SGD individual accounts- Affected endpoints: Create Beneficiary (request), Create Payout (request)
- Applies when
entity_type = INDIVIDUAL,bank_country_code = SG, andaccount_currency_code = SGD. - New validation: only English letters (A–Z, a–z) and spaces; 2–140 characters; must include a space separating first and last name.
Issuing
[NEW]consumed_amount field in List Cards and Retrieve Card- Affected endpoints: List Cards (response), Retrieve Card (response)
- Added
consumed_amountfield, representing the cumulative card limit that has already been used.
2025-08-21
Account Center
[ENHANCED]business_code filter and field added to account endpoints- Affected endpoints: Retrieve Account (request and response), List Connected Accounts (response)
- Added optional
business_codefilter parameter to Retrieve Account — values:BANKING,ISSUING,ACQUIRING(default:BANKING). - Added
business_codefield to Retrieve Account and List Connected Accounts responses.
[ENHANCED]
email_address field added to representatives in Create SubAccount- Affected endpoint: Create SubAccount (request)
- Added optional field
email_addresstoownership_details.representatives[].
website_url and company_description changed to optional in Create SubAccount- Affected endpoint: Create SubAccount (request)
business_details.website_url: required → optionalbusiness_details.company_description: required → optional
Issuing
Simulate Authorization now supports card BIN40963608- Affected endpoint: Simulate Authorization
- Added sandbox authorization simulation support for BIN
40963608. No schema changes.
2025-08-14
Acquiring
[NEW] Payment Attempt webhook eventsFour new webhooks added for Payment Attempt (PA) status transitions:acquiring.payment_attempt.created— triggered when PA status isINITIATEDacquiring.payment_attempt.capture_requested— triggered when PA status isCAPTURE_REQUESTED(consumer completed payment; the corresponding PI transitions toSUCCESS)acquiring.payment_attempt.cancelled— triggered when PA status isCANCELLEDacquiring.payment_attempt.failed— triggered when PA status isFAILED
[NEW] Settlements API
- New endpoint:
GET /api/v2/payment/settlements - Supports optional
settlement_batch_idorpayment_intent_idparameters, pagination, and time range filters. - Returns records with
settlement_status = success.
Banking
[BREAKING]bank_details.account_number restricted to alphanumeric characters- Affected endpoints: Create Payout (request), Create Beneficiary (request)
- Accepts only letters A–Z/a–z and digits 0–9. Spaces, hyphens, and other special symbols are rejected.
Issuing
[NEW]update_reason field in Card APIs and webhooks- Affected endpoints: List Cards (response), Retrieve Card (response), Update Card Status (response)
- Affected webhooks:
card.status.update.* - Added
update_reasonfield indicating the reason for a card status change.
[ENHANCED] Card Recharge and Withdraw now support SHARE cards
- Affected endpoints: Card Recharge (request), Card Withdraw (request)
- SHARE cards can now adjust
card_available_balancevia Recharge (increase) and Withdraw (decrease). - SINGLE card behavior remains unchanged.
2025-08-07
Issuing
Updatedcard_limit validation in Create Card- Affected endpoint: Create Card (request)
- BINs 527735, 555071, 555243:
card_limitis mandatory and must be ≥ 0.01. - Other BINs:
card_limitis optional; defaults to 0 if omitted; must be ≥ 0 and up to two decimal places if provided.
[NEW] Account-level transaction types added
- Affected endpoints/reports: List Issuing Balances Transactions (response), Account Transaction Report
- Added:
FUNDS_TRANSFER_IN,FUNDS_TRANSFER_OUT,FEE_REFUND,FEE_DEDUCTION,MARGIN_PAYMENT,MARGIN_REFUND,OTHER
[NEW] Card-level chargeback transaction types added
- Affected endpoints: Retrieve Cards Transaction (response), List Cards Transactions (response)
- Added:
CHARGEBACK_DEBIT,CHARGEBACK_CREDIT
[NEW] Chargeback webhooks
issuing.transaction.chargeback.credit— triggered when a chargeback credit is posted to a card transactionissuing.transaction.chargeback.debit— triggered when a chargeback debit is posted to a card transaction
Banking
[NEW]deposit_reference field in Deposit APIs and webhooks- Affected endpoints: Retrieve Deposit (response), List Deposits (response)
- Affected webhooks:
deposit.pending,deposit.compliance.rejected,deposit.completed - Added
deposit_referencefield to carry a custom reference.
2025-07-31
Issuing
[NEW]card.update.succeeded and card.update.failed webhookscard.update.succeeded— triggered when a card order from Update Card reachesSUCCESScard.update.failed— triggered when a card order from Update Card reachesFAILED
[ENHANCED]
ending_balance and description fields in List Issuing Balances Transactions- Affected endpoint: List Issuing Balances Transactions (response)
ending_balance— balance after the transaction is completeddescription— short description of the transaction
Card Settlement Report:
ATM Withdraw renamed to Authorization- Affected report: Card Settlement Report
- The
Transaction Typeenum valueATM Withdrawhas been renamed toAuthorization.
Banking
[NEW]purpose_code in Retrieve Payout and List Payouts- Affected endpoints: Retrieve Payout (response), List Payouts (response)
- Added
purpose_codefield.
Check Beneficiary now supports PayNow recipients
- Affected endpoint: Check Beneficiary (request)
- Added
additional_info.proxy_idparameter accepting a PayNow proxy identifier.
2025-07-24
Issuing
Card Settlement Report:Purchase renamed to Authorization- Affected report: Card Settlement Report
- The
Transaction TypevaluePurchasehas been renamed toAuthorization.
Account Center
[NEW]other_documents field under ownership_details.representatives- Affected endpoints: Create SubAccount —
POST /v1/accounts/create_accounts(request); Retrieve Account —GET /v1/accounts/{id}(response) - A new optional field
other_documentsallows uploading proof of address or supplemental documents for representatives. - Note: field name differs between request (
doc_str) and response (front).
type values: "PROOF_OF_ADDRESS", "OTHERS".2025-07-19
Account Center
[NEW] Create SubAccount endpoint- New endpoint:
POST /api/v1/accounts/create_accounts - Supports sub-account creation under ACQUIRING, BANKING, and ISSUING business lines.
- Supports both
COMPANYandINDIVIDUALentity types. - Sub-accounts created here can still be queried via List Connected Accounts and Retrieve Account.
[NEW] Get Additional Documents endpoint
- New endpoint:
GET /api/v1/accounts/get_additional - Returns required and optional document types for COMPANY sub-account creation, based on country and business code.
- Retrieve this list before initiating sub-account creation.
Note on legacy endpoint: The legacy
Create Account (POST /api/v1/accounts) remains available. It only supports the BANKING business line. For new integrations, use Create SubAccount.2025-07-10
Acquiring
[NEW]acquiring.payment_intent.failed webhook- Triggered when a Payment Intent is automatically closed upon expiry.
- Not triggered for manually cancelled orders.
- Subscribe to this event in your Dashboard to receive it.
Issuing
[ENHANCED]PENDING status added to transaction_status- Affected endpoints: List Cards Transactions (response), Retrieve Cards Transaction (response)
- Added
PENDINGas a new valid value fortransaction_status.
2025-07-04
Banking
[NEW] PayNow support in Payout and Beneficiary APIs- Affected endpoints: Create Payout, Retrieve Payout, Create Beneficiary, List Beneficiaries, Retrieve Beneficiary, Update Beneficiary, Check Beneficiary
- Added
PayNowas a new enum value forbank_details.clearing_system. - Added
additional_info.proxy_idfield supporting UEN, phone number, or VPA.
Acquiring / Account
[BREAKING] UUID format validation enforced forx-idempotency-key- Affected endpoints: All POST endpoints (request headers)
x-idempotency-keymust now be a valid UUID format.
2025-06-26
Acquiring
[NEW]failure_code field in PaymentAttempt- Added
failure_codeto the PaymentAttempt response, indicating the reason for payment attempt failure.
Banking
[NEW] Optionaldocumentation field in Create Payout- Affected endpoint:
POST /api/v1/payouts(request) - Added optional
documentationfield to allow uploading supporting documents with a payout request.
Issuing
[NEW]risk_controls module in card.create.succeeded webhook- Added
risk_controlsmodule to thecard.create.succeededwebhook payload. Returned values (e.g.,3ds,mcc) vary by card product.
2025-06-19
Issuing
[NEW]wallet_type field in card transaction APIs and reports- Affected endpoints: List Cards Transactions (response), Retrieve Cards Transaction (response)
- Affected webhooks:
issuing.transaction.* - Affected reports: Card Transactions Report, Card Settlement Report
- Added
wallet_typefield identifying the digital wallet used (e.g.,ApplePay,GooglePay).
2025-06-18
Acquiring
[BREAKING] Webhook event type renamed fromacquiring.payment.* to acquiring.payment_intent.*[NEW]
acquiring.payout.created webhook — triggered when a merchant initiates a payout request.[NEW] acquiring.refund.created webhook — triggered when a merchant initiates a refund request.2025-06-12
Banking
[NEW]other_documentation field for representatives in Create Account- Affected endpoint:
POST /api/v1/accounts(request) - Added optional
other_documentationfield underrepresentatives[]to support proof of address and other supplemental documents during account creation.
Issuing
[NEW]card_available_balance field in card-related webhooks- Affected webhooks:
card.create.*,card.recharge.*,card.withdraw.* - Added
card_available_balanceindicating the card’s available balance at the time of the event.
2025-06-05
Banking
[ENHANCED]additional_info.organization_code field in Create Beneficiary- Affected endpoint:
POST /api/v1/beneficiaries(request) - Added optional
additional_info.organization_codefield (Unified Social Credit Identifier) for company-type beneficiaries.
[NEW]
failure_reason field in Retrieve Payout and List Payouts- Affected endpoints:
GET /api/v1/payouts/{id}(response),GET /api/v1/payouts(response) - Added
failure_reasonfield to payout response objects.
Issuing
[NEW]card_currency field in List Card Products- Affected endpoint:
GET /api/v1/issuing/products(response) - Added
card_currencyfield — an array of strings specifying currencies available for each card product. Example:["SGD", "USD"].
[ENHANCED]
card_form and max_card_quota fields in List Card Products- Affected endpoint:
GET /api/v1/issuing/products(response) card_form— supported card form(s):["VIR", "PHY"]or["VIR"].max_card_quota— maximum number of cards that can be issued under the current account for the product.
[BREAKING]
failure_reason renamed to description in card transaction APIs and webhooks- Affected endpoints:
GET /api/v1/issuing/transactions(response),GET /api/v1/issuing/transactions/{id}(response) - Affected webhooks:
issuing.transaction.* - If
transaction_status = DECLINED: field contains the failure reason. - If
transaction_status = APPROVED: field contains supplementary remarks (e.g.,3DS Feefor 3DS transactions). - All transaction report files previously using
failure_reasoncolumn header are now updated todescription.
[BREAKING] Simplified
transaction_status in issuing.transaction.refund webhook- Removed
REFUNDEDfrom valid values fortransaction_status. - Previous
REFUNDEDtransactions now map totransaction_type: REFUND+transaction_status: APPROVED.
[BREAKING] Card status values updated
- Affected endpoints:
GET /api/v1/issuing/cards/{id}(response),GET /api/v1/issuing/cards(response),POST /api/v1/issuing/cards/{id}/status(request),card.status.update.*webhooks INACTIVErenamed toFROZEN— card is temporarily disabled but can be reactivated.- New
BLOCKEDstatus added — card is administratively blocked by UQPAY; unblocking requires a formal email request.
2025-05-29
Banking
[BREAKING]SUBMISSION_FAILED removed from payout status values- Affected endpoints:
POST /api/v1/payouts(response),GET /api/v1/payouts(request and response),GET /api/v1/payouts/{id}(response) - Removed
SUBMISSION_FAILEDfrom thepayout_statusfield.
Issuing
[ENHANCED]cardholder_id parameter in List Cards- Affected endpoint:
GET /api/v1/issuing/cards(request) - Added optional
cardholder_idquery parameter to filter cards by cardholder.
[NEW]
no_pin_payment_amount field in Retrieve Card- Affected endpoint:
GET /api/v1/issuing/cards/{id}(response) - Added
no_pin_payment_amountfield indicating the allowed amount for transactions without PIN verification. Format:<amount><currency>(e.g.,2000USD).
[ENHANCED]
no_pin_payment_amount in List Card Products- Affected endpoint:
GET /api/v1/issuing/products(response) - Added
no_pin_payment_amountarray specifying configured NO-PIN payment amount limits per product.
2025-05-28
Acquiring
[BREAKING] Revised status field enum values for Payment objects- Affected endpoints: Payment Intents, Payment Attempts, and Payment Refunds endpoints
- Revised enumerated values and definitions for
intent_status,attempt_status, andrefund_status. Refer to the API reference pages for the latest enumerations.
Supported
payment_method values restricted- Affected endpoints: Payment Intents endpoints
- Supported values:
card,card_present,alipaycn,alipayhk,unionpay,wechat. All other types are not yet supported.
2025-05-23
Issuing
[ENHANCED]cardholder_id filter in List Cards- Added optional
cardholder_idquery parameter toGET /api/v1/issuing/cards.
[NEW]
no_pin_payment_amount in Retrieve Card- Added
no_pin_payment_amountfield toGET /api/v1/issuing/cards/{id}response. Format:<amount><currency>(e.g.,2000USD).
[ENHANCED]
no_pin_payment_amount limits in List Card Products- Added
no_pin_payment_amountarray toGET /api/v1/issuing/productsresponse, indicating maximum allowable NO-PIN payment amounts per currency.
2025-05-21
Acquiring
Initial official release of the Acquiring API. This version provides endpoints for Payment Intents, Attempts, Refunds, and webhook notifications.2025-05-16
Banking
[NEW]nationality and id_number fields in Beneficiary APIs- Affected endpoints: Create Beneficiary, Update Beneficiary, Retrieve Beneficiary, List Beneficiaries
- Added
nationality— two-letter country code for the beneficiary’s nationality. - Added
id_number— conditionally required forINDIVIDUALtype beneficiaries who are Mainland China residents using CNH currency and LOCAL payment method.
Issuing
[NEW] MCC management in risk control settings- Affected endpoints:
POST /api/v1/issuing/cards(Create Card),POST /api/v1/issuing/cards/{id}(Update Card) - Added optional
allowed_mccandblocked_mccfields to therisk_controlsobject. - Only one of the two can be set per card. MCCs must be provided as an array of strings (e.g.,
["5999", "6011"]).
2025-05-15
Issuing
[NEW]number_of_cards field in Cardholder APIs- Affected endpoints: List Cardholders (response), Retrieve Cardholder (response)
- Added
number_of_cardsfield.
2025-05-14
Issuing
[BREAKING]x-on-behalf-of header must be a valid UUID- Affected endpoints: all endpoints supporting the
x-on-behalf-ofheader - If provided, the value must be a valid UUID format corresponding to an existing sub-account. Invalid values are rejected.
2025-04-25
Issuing
[BREAKING] Requiredpin field added to Activate Card- Affected endpoint:
POST /api/v1/issuing/cards/activate(request) - Added required field
pin. - Added optional field
no_pin_payment_amout. - This is a breaking change — existing integrations must be updated to include
pin.
2025-04-18
Issuing
[NEW] 3DS control support in Create Card and Update Card- Affected endpoints:
POST /api/v1/issuing/cards,POST /api/v1/issuing/cards/{id} - Added optional
risk_controlsfield. Backward-compatible — existing cards are unaffected unless explicitly configured.
2025-04-17
Banking
[NEW] Exchange rates endpoint- New endpoint:
GET /api/v1/exchange/rates - Returns current exchange rates. Reference only — use the Create Quote API for rate-locking.
2025-04-15
Banking
[NEW] Transaction-type RFI support- Added new webhook event type:
rfi.transaction.action_requiredfor deposit and payout RFI scenarios. - Affected endpoints:
GET /api/v1/rfis/{id}(Retrieve RFI),POST /api/v1/rfis/answer(Answer RFI) - Added
rfi_typeandtransaction_typefields to both endpoints. - The original onboarding RFI flow (
event_type = rfi.action_required) remains unchanged.
Issuing
[NEW]email field in Update Cardholder- Affected endpoint:
POST /api/v1/issuing/cardholders/{id}(request) - Added optional
emailfield. Backward-compatible.
2024-07-20
Banking
Initial changelog entry- Added changelog.
- New deposit webhooks:
deposit.pending,deposit.compliance.rejected,deposit.completed - New deposit endpoints:
GET /api/v1/deposit— list depositsGET /api/v1/deposit/{id}— retrieve a deposit by IDPOST /api/v1/simulation/desposit— simulate deposits into global account (sandbox only)
- Documentation corrections to descriptions and parameter restrictions.

