Bank payment rules
Acme Citibank Singapore Payments
This describes validations / allowed data formats for Acme payments going through Citibank 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
-
Citi restrictions:
- For SWIFT character set: do not start a field with any of the following characters:
/,-,:
- For SWIFT character set: do not start a field with any of the following characters:
FAST
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 35 | M |
| paymentDetails | SWIFT | 140 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | O |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | ISO 3166-1 alpha-2 | 2 | O |
PAYNOW
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 35 | M |
| paymentDetails | SWIFT | 140 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| receiver.proxyType | MOBILE or UEN or VPA | M | |
| receiver.proxyValue for MOBILE | + followed by 7 to 15 digits | 16 | M |
| receiver.proxyValue for UEN | 9 to 13 alphanumeric characters | 13 | M |
| receiver.proxyValue for VPA | Mobile followed by # and 4 alphanumeric characters or UEN followed by UEN followed by # and 4 alphanumeric characters | 21 | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | O |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | ISO 3166-1 alpha-2 | 2 | O |
GIRO
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 15 | M |
| paymentDetails | SWIFT | 105 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
ACT
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 15 | M |
| paymentDetails | SWIFT | 140 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| receiver.name | SWIFT | 35 | M |
| receiver.bankAccountNumber | Alphanumeric | 34 | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | O |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | ISO 3166-1 alpha-2 | 2 | O |
MEPS
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 15 | M |
| paymentDetails | SWIFT | 140 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | M | |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.bankAccountNumber | Alphanumeric + Dash | 34 | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | Conditional: M if address is provided |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | ISO 3166-1 alpha-2 | 2 | Conditional: M if address is provided |
TT
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| customerReference | SWIFT (uppercase only) | 15 | M |
| paymentDetails | SWIFT | 140 | O |
| instructionForSenderBank | SWIFT | 35 | O |
| bankChargeBearer | SENDER or RECEIVER or SHARED | M | |
| receiver.name | SWIFT | 35 | M |
| receiver.bank | Alphanumeric | 11 | M |
| receiver.intermediaryBank | Alphanumeric | 11 | O |
| receiver.bankAccountNumber | Alphanumeric + Dash | 34 | M |
| receiver.address.line1 | SWIFT | 35 | O |
| receiver.address.line2 | SWIFT | 35 | O |
| receiver.address.city | SWIFT | 35 | Conditional: M if address is provided |
| receiver.address.state | SWIFT | 35 | O |
| receiver.address.postalCode | SWIFT | 16 | O |
| receiver.address.country | ISO 3166-1 alpha-2 | 2 | Conditional: M if address is provided |
Bank references
| Sent as | bankReference | bankReferences | Available from |
|---|---|---|---|
| A file | AcctSvcrRef, else ClrSysRef | AcctSvcrRef, ClrSysRef, StsId, as Citi sends them | Citi's status report on the payment |
PAYNOW through Citi's API | null: Citi's API returns no reference of its own | UETR | Citi's answer to the request |
On your Citi statement: for payments sent as files, the line shows a different Citi reference. Find the payment by your customerReference.
What the names mean:
AcctSvcrRef: Citi's own reference for the transaction.ClrSysRef: the clearing system's reference.StsId: the id of Citi's status entry.UETR: the SWIFT tracking id.
A rejected payment keeps the references from the report that rejected it.
A completed payment sent as a file returns:
{
"bankReference": "01720322200000001",
"bankReferences": {
"AcctSvcrRef": "01720322200000001"
}
}