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.

