v1.2.0 – Mandatory Changes by 30th Jan 2026
by Kevin Geraldy🚨 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:
- Validation Updates: Stricter character and length limits for Customer Profiles.
- 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. Business CP Configuration
Endpoints:
-
POST /v1/kyc/customer_profiles -
PUT /v1/kyc/customer_profiles/:unique_id -
PATCH /v1/sandbox/kyc/customer_profiles/:unique_idIncludes updates to general business details and standard address fields.Parameter Old Validation New Validation customerNameMax 191 (Any chars) SWIFT Chars (Max 50) /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/address.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/address.cityMax 100 (Specific chars)
(Optional field)SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
(Mandatory field)address.stateMax 35 (SWIFT chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/placeOfBizMax 255 (Any chars) SWIFT Chars (Max 255) /^(?=.{1,255}$)[a-zA-Z0-9\-?:().,' +]+$/
2. Personal CP+ Configuration
Endpoints:
-
POST /v1/kyc/customer_profiles -
PUT /v1/kyc/customer_profiles/:unique_id -
PATCH /v1/sandbox/kyc/customer_profiles/:unique_idIncludes updates to personal identity fields and standard address fields.Parameter Old Validation New Validation customerFirstNameMax 191 (Any chars) SWIFT Chars (Max 50) /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/customerLastNameMax 191 (Any chars) SWIFT Chars (Max 50) /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/address.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/address.cityMax 100 (Specific chars)
(Optional field)SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
(Mandatory field)address.stateMax 35 (SWIFT chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
3. Business CP+ Configuration
Endpoints:
-
POST /v1/kyc/customer_profiles -
PUT /v1/kyc/customer_profiles/:unique_id -
PATCH /v1/sandbox/kyc/customer_profiles/:unique_idIncludes updates to operating addresses, beneficial owners, and trader details.Parameter Old Validation New Validation customerNameMax 191 (Any chars) SWIFT Chars (Max 50) /^(?=.{1,50}$)[a-zA-Z0-9 ]+$/address.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/address.cityMax 100 (Specific chars) SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/address.stateMax 35 (SWIFT chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/operatingAddress.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/operatingAddress.cityMax 100 (Specific chars)
(Optional field)SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/
(Mandatory field)operatingAddress.stateMax 35 (SWIFT chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/beneficialOwners[].address.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/beneficialOwners[].address.cityMax 180 (Any chars) SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/beneficialOwners[].address.stateMax 180 (Any chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/trader.address.streetMax 180 (Any chars) SWIFT Chars (Max 180) /^(?=.{1,180}$)[a-zA-Z0-9\-?:().,' +]+$/trader.address.cityMax 180 (Any chars) SWIFT Chars (Max 20) /^(?=.{1,20}$)[a-zA-Z0-9\-?:().,' +]+$/trader.address.stateMax 180 (Any chars) SWIFT Chars (Max 15) /^(?=.{1,15}$)[a-zA-Z0-9\-?:().,' +]+$/
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 Parameter Description Accepted 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 OptionalXSGDXUSDUSDSGD
