v1.2.0 – Mandatory Changes by 30th Jan 2026


🚨 IMPORTANT: Action required by 30 Jan 2026

Starting 30 Jan 2026, we are enforcing stricter API validations to ensure SWIFT/ISO 20022 compliance. Please update your integration to the new field requirements before the deadline to avoid failures.

Overview

We are updating our API to align with downstream banking networks and introduce new withdrawal capabilities. These changes are divided into two parts:

  1. Validation Updates: Stricter character and length limits for Customer Profiles.
  2. New Features: Enhanced logic for Blockchain Withdrawals.

Part 1: Validation & Compliance Updates

  • Goal: Reduce downstream rejections and meet ISO 20022 standards.
  • Change: Stricter Regex patterns (SWIFT characters) and reduced field lengths.

1. Personal CP Configuration

Endpoints:

  • POST /v1/kyc/customer_profiles

  • PUT /v1/kyc/customer_profiles/:unique_id

  • PATCH /v1/sandbox/kyc/customer_profiles/:unique_id Includes updates to general personal details and standard address fields.

    Parameter

    Old Validation

    New Validation

    customerName

    Max 191 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 50)
    /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/
    (Mandatory field)

    address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.city

    Max 100 (Specific chars)
    (Optional field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.state

    Max 35 (SWIFT chars)
    (Optional field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Optional field)



2. Business CP Configuration

Endpoints:

  • POST /v1/kyc/customer_profiles

  • PUT /v1/kyc/customer_profiles/:unique_id

  • PATCH /v1/sandbox/kyc/customer_profiles/:unique_id Includes updates to general business details and standard address fields.

    Parameter

    Old Validation

    New Validation

    customerName

    Max 191 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 50)
    /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/
    (Mandatory field)

    address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.city

    Max 100 (Specific chars)
    (Optional field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.state

    Max 35 (SWIFT chars)
    (Optional field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Optional field)

    placeOfBiz

    Max 255 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 255)
    /^(?=.{1,255}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

3. Personal CP+ Configuration

Endpoints:

  • POST /v1/kyc/customer_profiles

  • PUT /v1/kyc/customer_profiles/:unique_id

  • PATCH /v1/sandbox/kyc/customer_profiles/:unique_id Includes updates to personal identity fields and standard address fields.

    Parameter

    Old Validation

    New Validation

    customerFirstName

    Max 191 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 50)
    /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/
    (Mandatory field)

    customerLastName

    Max 191 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 50)
    /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/
    (Mandatory field)

    address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.city

    Max 100 (Specific chars)
    (Optional field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.state

    Max 35 (SWIFT chars)
    (Optional field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Optional field)

4. Business CP+ Configuration

Endpoints:

  • POST /v1/kyc/customer_profiles

  • PUT /v1/kyc/customer_profiles/:unique_id

  • PATCH /v1/sandbox/kyc/customer_profiles/:unique_id Includes updates to operating addresses, beneficial owners, and trader details.

    Parameter

    Old Validation

    New Validation

    customerName

    Max 191 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 50)
    /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/
    (Mandatory field)

    address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.city

    Max 100 (Specific chars)
    (Mandatory field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    address.state

    Max 35 (SWIFT chars) (Mandatory field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    operatingAddress.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    operatingAddress.city

    Max 100 (Specific chars)
    (Optional field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    operatingAddress.state

    Max 35 (SWIFT chars)
    (Mandatory field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    beneficialOwners[].address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    beneficialOwners[].address.city

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    beneficialOwners[].address.state

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    trader.address.street

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 180)
    /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    trader.address.city

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 20)
    /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)

    trader.address.state

    Max 180 (Any chars)
    (Mandatory field)

    SWIFT Chars (Max 15)
    /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
    (Mandatory field)


Part 2: New Features (Blockchain Withdrawals)

  • Goal: Allow users to keep funds in fiat (SGD/USD) without auto-conversion.

1. Blockchain Withdrawal Improvements

Endpoint:

  • POST /v1/blockchain_transfer/withdrawals/

    We've introduced a new field when creating a blockchain withdrawal request. Depositing SGD/USD into the Dashboard VAs will now go towards your SGD/USD balances instead of being auto-converted to XSGD/XUSD. You can now select which balances to deduct for each blockchain withdrawal.
    Note: Once you've made the necessary changes, please let our internal team know for us to roll out the new dashboard updates.

    New ParameterDescriptionAccepted Values
    wallet_sourceThe source of funds the deduction will be made from. If no value is specified for this field, XSGD and XUSD withdrawals will, by default, be deducted from the XSGD and XUSD balances respectively.

    This field is Optional
    XSGD
    XUSD
    USD
    SGD