2025-09-11

by marshall

Banking

Enhanced Chinese Character Support for Company Names

[ENHANCED] Added support for Chinese parentheses in company names and account holder names for specific payment conditions

  • Enhanced input validation to support Chinese parentheses () in company_name and account_holder fields when bank_country_code = CN, account_currency_code = CNH, payment_method = LOCAL, entity_type = COMPANY

Affected Endpoints:

  • Create Payout, request only
  • Create Beneficiary, request only

Changes:

  • Added: Support for Chinese parentheses in company_name field
  • Added: Support for Chinese parentheses in account_holder field

Notes:

  • This enhancement improves user experience for Chinese companies using local payment methods
  • Only applies to specific payment conditions

Relaxed Input Validation for Local Payments

[ENHANCED] Removed input validation for certain fields when using local payment methods with non-CNH/SGD currencies

  • Disabled input validation for multiple fields when payment_method = LOCAL and account_currency_code is not CNH or SGD

Affected Endpoints:

  • Create Payout, request only
  • Create Beneficiary, request only

Changes:

  • Updated: bank_details.account_holder field validation
  • Updated: first_name & last_name field validation
  • Updated: company_name field validation
  • Updated: address.street_address field validation
  • Updated: address.city field validation
  • Updated: address.state field validation

Notes:

  • Validation is only relaxed for local payments with currencies other than CNH or SGD
  • This change provides more flexibility for international local payment processing

Enhanced Payout Reference Validation Rules

[ENHANCED] Updated validation rules for payout_reference field based on payment method and currency

  • Adjusted payout_reference field validation to provide different rules for SWIFT payments and LOCAL payments with non-CNH/SGD currencies

Affected Endpoints:

  • Create Payout, request only

Changes:

  • Updated: payout_reference validation rules based on payment method and currency:
    • SWIFT payments: New validation pattern /^[a-zA-Z0-9/-?:().'+, ]+$/ (supports space and additional special characters)
    • LOCAL payments: No validation when payment_method = LOCAL and account_currency_code is not CNH or SGD

Invoice Document Requirement for INR Cross-Currency Payouts

[NEW] Added mandatory invoice document upload requirement for INR cross-currency payouts

  • Cross-currency payouts to INR now require invoice document upload in the documentation field

Affected Endpoints:

  • Create Payout, request only

Changes:

  • Added: Mandatory invoice document requirement

Notes:

  • Applies when beneficiary.bank_details.account_currency_code = "INR" and clearing_system = "IFSC"
  • Invoice document must be uploaded in the documentation field

Removed OTHER_SERVICES from Purpose Code Enumeration

[BREAKING] Removed OTHER_SERVICES option from purpose_code field enumeration

  • The OTHER_SERVICES value has been removed from the purpose_code field options in Create Payout endpoint

Affected Endpoints:

  • Create Payout, request only

Changes:

  • Removed: OTHER_SERVICES from purpose_code enumeration

Notes:

  • This is a breaking change - existing integrations using OTHER_SERVICES will need to update their purpose_code values

Acquiring

New Webhook Event for Payment Intent

[NEW] Added new webhook event to notify when payment requires customer interaction for authentication

Added Webhook:

  • acquiring.payment_intent.requires_action

Notes:

  • This webhook is triggered when payment intent status is REQUIRES_CUSTOMER_ACTION and occurs during customer interaction phase for authentication purposes

2025-09-05

by marshall

Account Center

[BREAKING]Changed document-related fields from object to array in Create SubAccount

  • Updated the data type for multiple file/document fields in Create SubAccount API, allowing multiple documents to be provided instead of a single object.
  • Affected Endpoints:
    • Create SubAccount, request only
  • Changes:
    • identity_verification.identity_docs: changed from object → array
    • ownership_details.shareholder_docs: changed from object → array
    • ownership_details.representatives.identity_docs: changed from object → array
    • company_info.certification_of_incorporation: changed from object → array
    • proof_documents.proof_of_address: changed from object → array
    • proof_documents.source_of_funds: changed from object → array
    • proof_documents.proof_of_position_and_income: changed from object → array


Banking

Cross Currency Payout

  • To supports customers payout funds in any currency, and recipients receiving funds in any currency
  • Supported currencies depend on actual configuration, check here for details

Affected Endpoints:

Create Quote, request only
  • Added the transaction_type field with the following enumeration values:
    • conversion: This value is used by default if this field is left blank. It can only be used for currency conversion.
    • payout: Cross-currency payout. Can only be used for payouts.
Create Payout, request only
  • Added the payout_currency and payout_amount fields, which represent the actual currency and amount received by the recipient.
  • Added quote_id field, which is obtained from the Create Quote API when pre-locking the exchange rate and will be associated with the cross-currency payout.
Retrieve Payout & List Payouts, response only
  • Added quote_id field
  • Added conversion field
  • “conversion": {
      "currency_pair": "",
      "client_rate": ""
    }
Webhook: payout.*
  • Added new fields: conversion, quote_id, payout_amount, and payout_currency

[BREAKING]Added restrictions to basic information input for Recipients

  • Affected Endpoints:
    • Create Beneficiary, request only
    • Create Payout, request only
  • Affected Fields:
    • bank_details.account_holder
    • first_name & last_name
    • company_name
    • address.street_address
    • address.city
    • address.state
  • Added new validation applies to all conditions except:
    • bank_details.account_currency_code = CNH & payment_method = LOCAL & bank_country_code = CN
  • Changes/ New validation:
    • Only English, numbers, special characters, and spaces can be included
    • Special characters including -_().,@#~ ! $ % ^ & * + = { } [ ] \ | : " ' \< > ? /・……
  • Notes:
    • For specific scenarios (such as when entity_type = INDIVIDUAL, bank_details.bank_country_code = SG, and bank_details.account_currency_code = SGD), stricter account_holder name validation rules will be applied. If such validation is triggered, the error message returned by the API will indicate clearly.

[BREAKING]Added restrictions to Payout reference

  • Affected Endpoints:
    • Create Payout, request only
  • Affected Fields:
    • payout_reference
  • Changes/ New validation:
    • Only alphabetic characters, numbers, spaces, commas ,, and periods . are allowed.

Issuing

Added new fields for reports

  • Affected Reports:
    • Card Transaction Report
    • Card Settlement Report
  • Changes:
    • Added new field Ori Transaction Id

Introduced Bulk Virtual Card Creation API

  • Added a new endpoint to support bulk creation of virtual cards.
  • Affected Endpoints/Webhook:
    • Bulk Create Virtual Cards , Endpoint Added
    • issuing.report.succeeded, Webhook Added
    • Assign Card, expanded for bulk-created virtual cards
  • Changes:
    • Merchants can now create multiple virtual cards in a single request, without requiring immediate cardholder binding.
    • The Assign Card API has been enhanced to enable binding for bulk-created virtual cards.
    • A report_id is returned after submission. Merchants can retrieve the card number file using the Download Report API before it expires.
    • The card numbers in the file are encrypted.
      • Before calling the Bulk Create Virtual Cards, you must subscribe to the issuing.report.succeeded webhook.
      • This webhook delivers the decryption key required to access the card numbers.

2025-08-28

by marshall

Banking

Made email and nickname optional

  • The email and nickname fields for all beneficiaries are now optional.
  • Affected Endpoints:
    • Create Beneficiary, request only
    • Create Payout, request only
  • Changes:
    • email: Required → Optional
    • nickname: Required → Optional

Field adjustments for Singapore (SGD) accounts

  • When bank_details.bank_country_code = SG and bank_details.account_currency_code = SGD, several request fields are adjusted.
  • Affected Endpoints:
    • Create Beneficiary, request only
    • Create Payout, request only
  • Changes:
    • company_name: Removed
    • first_name: Removed
    • last_name: Removed
    • email: Changed to optional
    • nickname: Changed to optional
    • address.country: Removed
    • address.street_address: Removed
    • address.city: Removed
    • address.state: Removed
    • address.postal_code: Removed

[BREAKING] New validation rule for bank_details.account_holder

  • A new format validation applies only when all three conditions are met:
    • entity_type = INDIVIDUAL
    • bank_details.bank_country_code = SG
    • bank_details.account_currency_code = SGD
  • Affected Endpoints:
    • Create Beneficiary, request only
    • Create Payout, request only
  • Changes:
    • New validation requirements for bank_details.account_holder:
      • Only English letters (A–Z, a–z) and spaces are allowed
      • Length must be 2–140 characters
      • Must include a space separating first and last name
    • If any condition is not met, the previous validation rules remain unchanged

Card Issuing

Added consumed_amount field

  • Introduced new field consumed_amount in List and Retrieve Card API responses, representing the cumulative amount of the card limit that has already been used.
  • Affected Endpoints:
    • List Cards, response only
    • Retrieve Card, response only
  • Changes:
    • Added consumed_amount field

2025-08-21

by marshall

Account Center

Supportbusiness_code in Account retrieval and listing

  • Enable querying sub-accounts across Acquiring, Banking, and Card Issuing.
  • Affected Endpoints:
    • Retrieve Account, request and response
    • List Connected Accounts, response only
  • Changes:
    • Request (Retrieve Account only): Add optional business_code with enum values BANKING, ISSUING, ACQUIRING. If omitted, default to BANKING.
    • Response: Add business_code to indicate business line for both Retrieve and List.

Addemail_address for representatives in Create SubAccount

  • Affected Endpoints:
    • Create SubAccount, request only
  • Changes:
    • Request: Add optional fieldemail_address to ownership_details.representatives[].

Makewebsite_url and company_description optional in Create SubAccount

  • Relax requiredness for business_details fields.
  • Affected Endpoints:
    • Create SubAccount, request only
  • Changes:
    • Request: Change business_details.website_url and business_details.company_description from required to optional.

Card Issuing

Simulate Authorization now supports card BIN40963608

  • Added support to run authorization simulations in sandbox
  • Affected Endpoints:
    • Simulate Authorization
  • Changes:
    • No request/response schema changes.

2025-08-14

by marshall

Acquiring


New Payment Attempt webhook events

  • Added new Payment Attempt (PA) webhooks to improve the timeliness of payment result notifications.

  • Added Webhoooks:

    • acquiring.payment_attempt.created: triggered when PA status is INITIATED.
    • acquiring.payment_attempt.capture_requested: triggered when PA status is CAPTURE_REQUESTED. Receiving this event indicates the consumer has completed the payment, and the corresponding PI transitions to SUCCESS.
    • acquiring.payment_attempt.cancelled: triggered when PA status is CANCELLED.
    • acquiring.payment_attempt.failed: triggered when PA status is FAILED.
      • For one-to-one mapping (one PI contains only one PA): the corresponding PI can be considered failed as well (actually the PI itself transitions to FAILED after the system auto-close the PI).
      • For one-to-many mapping (one PI may include multiple PAs): the failure of one PA does not mean the PI has failed, and merchants can still initiate other PAs under the same PI.
  • Doc link: https://docs.uqpay.com/reference/paymentattempt-result#/
    Note: To receive these notifications, please subscribe to the corresponding events in your Dashboard.


New Settlements API

  • Introduced a new API to query settlement detail records that have been successfully settled.
  • Added Endpoints:
    • Get list of settlements: GET /api/v2/payment/settlements
  • Feature:
    • Supports optional parameters settlement_batch_id or payment_intent_id to query corresponding settlement records.
    • Supports pagination and time range filters.
    • Returns settlement detail records with settlement_status = success.
    • Refer to the Get list of settlements for full schema and examples.

Banking


[BREAKING]Added format restriction foraccount_number field

  • Affected Endpoints:
    • Create Payout, request only
    • Create Beneficiary, request only
  • Changes:
    • The bank_details.account_number field now only accepts alphanumeric characters (letters A–Z/a–z and digits 0–9).
    • Spaces, hyphens, and other special symbols are not allowed. If provided, the request will be rejected with a format error.
  • Notes:
    • Applies to both INDIVIDUAL and COMPANY entity type beneficiaries.

Card Issuing


Addedupdate_reason field in Card APIs and Webhook

  • Added a new field update_reason in both Card APIs and webhook events to indicate the reason for a card status change.
  • Affected Endpoints:
    • List Cards, response only
    • Retrieve Card, response only
    • Update Card Status, response only
  • Affected Webhooks:
    • card.status.update.*
  • Changes:
    • New field update_reason is added to the API responses and webhook payload.


Card Recharge and Withdraw now support SHARE cards

  • Affected Endpoints:
    • Card Recharge, request only
    • Card Withdraw, request only
  • Changes:
    • SHARE cards now can adjust card_available_balance by
      • Card Recharge: increasing card_available_balance.
      • Card Withdraw: decreases card_available_balance.
  • Notes:
    • For SINGLE cards: behavior remains unchanged.

2025-08-07

by marshall

Card Issuing


Updatedcard_limit field requirements in Create Card

  • Adjusted validation rules for card_limit in Create Card API, introducing BIN-specific requirements.
  • Affected Endpoints:
    • Create Card, request only
  • Changes:
    • For BINs 527735, 555071, and 555243: card_limit is mandatory and must be ≥ 0.01.
    • For other BINs: card_limit is optional; if omitted, defaults to 0; if provided, must be ≥ 0, up to two decimal places, and cannot be negative.

Newtransaction_type values for account-level adjustments

  • Added new types to support account-level adjustments in both API responses and reports.
  • Affected Endpoints / Reports:
    • List Issuing Balances Transactions, response only: transaction_type field
    • Account Transaction Report: Transaction Type field
  • Changes:
    • Added: FUNDS_TRANSFER_IN, FUNDS_TRANSFER_OUT, FEE_REFUND, FEE_DEDUCTION, MARGIN_PAYMENT, MARGIN_REFUND, OTHER.

Newtransaction_type values in Card transactions

  • Added chargeback adjustment types for card-level transactions.
  • Affected Endpoints:
    • Retrieve Cards Transaction, response only
    • List Cards Transactions, response only
  • Changes:
    • Added: CHARGEBACK_DEBIT, CHARGEBACK_CREDIT.

New Webhooks

  • Introduced two webhooks to notify chargeback postings on card transactions.
  • Added Webhooks:
    • issuing.transaction.chargeback.credit: triggered when a chargeback credit is posted to a card transaction.
    • issuing.transaction.chargeback.debit: triggered when a chargeback debit is posted to a card transaction.

Banking

Adddeposit_reference to Deposit APIs and Webhooks

  • Introduced deposit_reference to carry the customize reference.
  • Affected Endpoints:
    • Retrieve Deposit, response only
    • List Deposits, response only
    • Webhooks: deposit.pending, deposit.compliance.rejected, deposit.completed
  • Changes:
    • Add new string field deposit_reference to carry the customize reference.

2025-07-31

by marshall

Card Issuing

New Webhooks:card.update.succeeded & card.update.failed

  • Two new webhooks are introduced to provide the final status of an Update Card operation:
    • card.update.succeeded: Triggered when the card order generated by Update Card reaches status SUCCESS.
    • card.update.failed: Triggered when the card order generated by Update Card reaches status FAILED.
  • Documentation

Added New Response Fields:ending_balance and description

  • Affected Endpoints:
    • List Issuing Balances Transactions, response only
  • Change:
    • ending_balance: The balance after this transaction is completed.
    • description: A short description of the transaction.

Card Settlement Report Field Update

  • Affected Report:
    • Card Settlement Report
  • Change:
    • The Transaction Type field in the Card Settlement Report has been updated. The enum value ATM Withdraw has been renamed to Authorization.

Banking

Added New Response Field:purpose_code for some Payout APIs

  • Affected Endpoints:
    • Retrieve Payout, response only
    • List Payouts, response only

The Check Beneficiary endpoint now supports PayNow recipients

  • Affected Endpoints:
    • Check Beneficiary, request only
  • Change:
    • A new request parameter additional_info.proxy_id can be provided with a PayNow proxy identifier to check if the beneficiary already exists and avoid duplicate creation.

2025-07-24

by marshall

Card Issuing

Card Settlement Report Field Update

  • The Transaction Type field in the Card Settlement Report has been updated.
  • The original type Purchase has been renamed to Authorization.

Account Center

New Optional Field:other_documents under representatives

  • A new optional field other_documents is now supported under ownership_details.representatives to allow uploading POA or other supplemental documents.
  • Affected Endpoints:
    • Create SubAccount (POST /v1/accounts/create_accounts) , request only
    • Retrieve Account (GET /v1/accounts/{id}) , response only
  • Note: The field name differs between request and response:
    • Request uses doc_str
    • Response uses front

Create SubAccount request example:

"other_documents": [
  {
    "type": "PROOF_OF_ADDRESS" | "OTHERS",
    "doc_str": "base64 string or file ID"
  }
]

Retrieve Account response example:

"other_documents": [
  {
    "type": "PROOF_OF_ADDRESS" | "OTHERS",
    "front": "base64 string or file ID"
  }
]

2025-07-19

by marshall

Account Center

Added Create SubAccount Endpoint

  • Documentation: Create SubAccount
  • Endpoint: POST /api/v1/accounts/create_accounts
  • Description:
    Enables creation of sub-accounts under the following business lines:
    • ACQUIRING
    • BANKING
    • ISSUING
  • Both COMPANY and INDIVIDUAL entity types are supported.
  • Sub-accounts created via this endpoint can still be queried via List Connected Accounts and Retrieve Account, with the response structure remaining unchanged.

Added Get Additional Documents Endpoint

  • Documentation: Get Additional Documents

  • Endpoint: GET /api/v1/accounts/get_additional

  • Description:
    Used to retrieve the list of supporting documents required when creating COMPANY type sub-accounts using the Create SubAccount endpoint. The document types returned are based on the sub-account’s country and business code, and include:

    • Required documents (required_docs)
    • Optional documents (option_docs)

    The documents should be submitted via the additional_documents field in the Create SubAccount request.
    We recommend retrieving this list prior to initiating sub-account creation to ensure a smooth onboarding process.


Additional Notes

  • Legacy Endpoint Compatibility:
    The legacy Create Account (POST /api/v1/accounts) endpoint remains available. If you’ve already integrated it, you may continue using it with no changes required.

  • Query Endpoint Compatibility:
    Both List Connected Accounts and Retrieve Account support sub-accounts created by either Create Account or the new Create SubAccount endpoint. The response structure remains consistent, and no additional adaptation is needed.

  • Recommendation:
    The legacy Create Account endpoint only supports sub-account creation under the BANKING business line. For new integrations or functional upgrades, we recommend using the Create SubAccount endpoint to benefit from broader business line coverage and improved structure.

2025-07-10

by marshall

Acquiring

Added acquiring.payment_intent.failed Webhook

  • Trigger Condition: Triggered when a Payment Intent is automatically closed by the system upon reaching its expiry time.
  • Note:
    • This event will not be triggered if the order is closed(cancelled) manually.
    • Please subscribe the event at Dashboard if you'd like to receive it.

Card Issuing

Updated Transaction Status Field

  • Change: Added a new transaction status value PENDING to the transaction_status field.
  • Affected Endpoints:
    • List Cards Transactions, response only
    • Retrieve Cards Transaction, response only