Acme OCBC Bank Singapore Payments (H2H)
This describes validations / allowed data formats for Acme payments going through OCBC Bank 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
-
BIC11:
- 11-character Bank Identifier Code
General notes
- The beneficiary country (
receiver.address.country) must be an uppercase 2-letter ISO 3166 country code (e.g.SGfor Singapore). - The format for BIC (used in
receiver.bankandreceiver.intermediaryBank) is strictly validated using[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?(as specified in ISO20022 BICFIIdentifier).
Currency
- ACT, MEPS, FAST, GIRO, PAYNOW (FAST), and PAYNOW_GIRO payments must be in
SGD.
Payment date
- For GIRO and PAYNOW_GIRO, the
paymentDatemust be at least one business day after today (Asia/Singapore time).
Amount
- FAST and PAYNOW (FAST) payments must not be more than SGD 200,000 in amount.
FAST / GIRO
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 140 | M |
| receiver.bank | BIC11 | 11 | M |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address | SWIFT | 35 chars x 3 | O |
PAYNOW (FAST)
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 140 | M |
| receiver.proxyType | MOBILE or UEN or NRIC or VPA | M | |
| receiver.proxyValue for MOBILE | + followed by 1 to 15 digits | 16 | M |
| receiver.proxyValue for UEN | 1 to 35 digits and uppercase letters A-Z | 35 | M |
| receiver.proxyValue for NRIC | First letter S, T, F, G, or M, followed by 7 digits, then an uppercase check letter | 9 | M |
| receiver.proxyValue for VPA | 1 to 21 characters from +, #, digits, and uppercase letters A-Z | 21 | M |
| receiver.address | SWIFT | 35 chars x 3 | O |
PAYNOW_GIRO
VPA is not a valid receiver.proxyType for PAYNOW_GIRO.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 140 | M |
| receiver.proxyType | MOBILE or UEN or NRIC | M | |
| receiver.proxyValue for MOBILE | + followed by 1 to 15 digits | 16 | M |
| receiver.proxyValue for UEN | 1 to 35 digits and uppercase letters A-Z | 35 | M |
| receiver.proxyValue for NRIC | First letter S, T, F, G, or M, followed by 7 digits, then an uppercase check letter | 9 | M |
| receiver.address | SWIFT | 35 chars x 3 | O |
ACT
Also known as IFT (Internal Funds Transfer) or Book Transfer.
The receiver.bank is not required because it's a transfer within the same bank (OCBC).
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address | SWIFT | 35 chars x 3 | O |
MEPS
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | O | |
| receiver.name | SWIFT | 140 | M |
| receiver.bank | BIC11 | 11 | M |
| receiver.intermediaryBank | BIC11 | 11 | O |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address | SWIFT | — | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | M |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | uppercase ISO country code | 2 | M |
TT
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT | 16 | M |
| paymentDetails | SWIFT | 140 | M |
| bankChargeBearer | SENDER or RECEIVER or SHARED | O | |
| receiver.name | SWIFT | 140 | M |
| receiver.bank | BIC11 | 11 | M |
| receiver.intermediaryBank | BIC11 | 11 | O |
| receiver.localRoutingIdentifier | Alphanumeric | 35 | O |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address | SWIFT | — | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | M |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | uppercase ISO country code | 2 | M |
MEPS and TT - SWIFT ISO20022 Payment data changes
Important
- The MEPS and TT tables above show the OCBC H2H CBPR+ (ISO 20022) rules.
- The following are breaking changes for MEPS and TT clients migrating to CBPR+.
receiver.address.cityis now required. It was optional before.receiver.addressandreceiver.address.countryare now required forMEPS. They were already required forTT.paymentDetailsis now required forTT. It stays optional forMEPS.receiver.address.postalCodemax length is reduced from 35 (the limit for each address field before) to 16.receiver.address.line1andline2are joined by a space and must total 70 characters or fewer. See Beneficiary address mapping.
receiver.namemax length increases from 35 to 140. This is not a breaking change.
Beneficiary address mapping
receiver.address.line1 and receiver.address.line2 are joined by a space into the single street
name field (StrtNm). Together with the joining space they must total 70 characters or fewer,
so two full-length 35-character lines are one character too long and are rejected.