Acme DBS Singapore Payments (API)
This describes validations / allowed data formats for Acme payments going through DBS Singapore. These will be validated by Acme and further validated by the bank. These rules may be stricter than what the bank requires.
Common Definitions
-
SWIFT Character Set:
- The 26 uppercase Latin letters
A-Z - The 26 lowercase Latin letters
a-z - The 10 digits
0-9 - Forward slash
/ - Hyphen
- - Question mark
? - Colon
: - Left and right parentheses
() - Full stop
. - Comma
, - Single quote
' - Plus sign
+ - Space
- The 26 uppercase Latin letters
-
DBS G_I3 String Character Set:
- The 26 uppercase Latin letters
A-Z - The 26 lowercase Latin letters
a-z - The 10 digits
0-9 - Space
- Exclamation mark
! - Hash
# - Dollar sign
$ - Percent
% - Ampersand
& - Single quote
' - Left and right parentheses
() - Asterisk
* - Plus sign
+ - Comma
, - Full stop
. - Forward slash
/ - Colon
: - Semicolon
; - Equals sign
= - Question mark
? - At sign
@ - Left and right square brackets
[] - Caret
^ - Underscore
_ - Backtick
` - Left and right curly braces
{} - Pipe
| - Tilde
~ - Hyphen
-
- The 26 uppercase Latin letters
Payment details
paymentDetails is an optional free-text field. Acme does not validate its charset or length. DBS validates it.
- For ACT, MEPS, and TT,
paymentDetailsis sent to the beneficiary bank but it is subject to the beneficiary to display it. It is also included in the email advice when an advice email is provided. - For FAST and PAYNOW,
paymentDetailsis not sent to the beneficiary bank. It is included in the email advice only when an advice email is provided.
Receiver name validation
Important
Migrating ACT, MEPS, or TT from the existing version (V4) to the new ISO 20022 Payment data changes version (V6) is a breaking change for receiver.name.
- On V6,
receiver.nameis enforced asSWIFTup to 140 characters. - Names that were accepted before but contain characters outside the SWIFT set are rejected on V6.
- Sanitize stored payee names before migrating. Characters outside the SWIFT set include
!,#,$,%,&,*,;,=,@,[,],^,_,`,{,},|,~.
Bank charges (MEPS and TT)
bankChargeBearer and chargeAccount apply to MEPS and TT only.
bankChargeBeareracceptsSENDER,RECEIVER, orSHARED. When omitted, DBS applies its default charge bearer.chargeAccountis the account DBS debits for the bank charges. When omitted, DBS debits the originating account.
FAST
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 35 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | G_I3 | 140 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
- The
receiver.namecharset and length shown here are validated by DBS. Acme does not validate them upfront. - The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
PAYNOW
receiver.bankAccountNumberandreceiver.bankmust not be provided
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 35 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | G_I3 | 140 | M |
| receiver.proxyType | MOBILE or UEN or VPA or NRIC | M | |
| receiver.proxyValue | SWIFT | 35 | M |
| receiver.address | SWIFT | 35 chars x 3 | O |
- The
receiver.namecharset and length shown here are validated by DBS. Acme does not validate them upfront. - The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
ACT
receiver.bankmust be provided (Required by DBS)
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
- The
receiver.namecharset and length shown here are validated by DBS. Acme does not validate them upfront. - The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
MEPS
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | O | |
| chargeAccount | Alphanumeric | 35 | O *Example: 0172948596 |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
| receiver.address.line1 | SWIFT | 35 | M |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | O |
| receiver.address.country | SWIFT | 35 | O |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 35 | O |
- The
receiver.namecharset and length shown here are validated by DBS. Acme does not validate them upfront. - The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
TT
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | O | |
| chargeAccount | Alphanumeric | 35 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
| receiver.address.line1 | SWIFT | 35 | M |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | O |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 35 | O |
| receiver.address.country | SWIFT | 35 | O |
- The
receiver.namecharset and length shown here are validated by DBS. Acme does not validate them upfront. - The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
MEPS and TT - SWIFT ISO20022 Payment data changes
Important
- Only applicable to client migrated to DBS V6 Payment API.
- The following are breaking changes for MEPS and TT clients migrating from V4 to V6.
receiver.nameis enforced asSWIFTup to 140 characters. See Receiver name validation before migrating from V4.receiver.address.cityis now required. It was optional in V4.receiver.address.countryis now required and must be an ISO 3166-1 alpha-2 code, for exampleSG. In V4 it was optional free SWIFT text up to 35 characters.receiver.address.postalCodemax length is reduced from 35 to 16.
receiver.address.line1andline2max length increases from 35 to 70. This is not a breaking change.outgoingPurposeCodeapplies toTTonly and is mandatory when the payment currency or beneficiary country falls into the corridors below. Payments that omit a required code will be rejected by the bank. Applicable purpose code list should be obtained from DBS or the destination country's regulator.- Currencies:
MYR,CNH/CNY,INR,KWD - Beneficiary countries: Myanmar (
MM), United Arab Emirates (AE)
- Currencies:
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | O | |
| chargeAccount | Alphanumeric | 35 | O |
| outgoingPurposeCode | Alphanumeric (ISO 20022 ExternalPurpose code or country-specific purpose code) Example: SALA, GDDS | 10 | Conditional (TT only) — M for specific beneficiary country/currency, otherwise O |
| receiver.name | SWIFT | 140 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
| receiver.address.line1 | SWIFT | 70 | M |
| receiver.address.line2 | SWIFT | 70 | O |
| receiver.address.city | SWIFT | 35 | M |
| receiver.address.country | SWIFT | 2 | M |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
- The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.
ACT - SWIFT ISO20022 Payment data changes
Important
- Only applicable to client migrated to DBS V6 Payment API.
receiver.bankmust be provided (Required by DBS).receiver.nameis enforced asSWIFTup to 140 characters. See Receiver name validation before migrating from V4.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | O * Acme auto-generate if not provided |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 140 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Numeric | 34 | M |
- The
paymentDetailscharset and length shown here are validated by DBS. Acme does not validate them upfront.