# Acme UOB Malaysia Payments (/guides/uob-my-payments)



This describes validations / allowed data formats for Acme payments going through UOB Malaysia. These will be validated by Acme and further validated by the bank. These rules may be
stricter than what the bank requires.

### Common Definitions [#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 <code style="{whiteSpace: 'pre'}"> </code>

* BIC11:
  * 11-character Bank Identifier Code

## General notes [#general-notes]

* The beneficiary country (`payments[N].receiver.address.country`) is mandatory for all payment types, and must be a valid, uppercase 2-letter ISO country code ([ISO 3166 Alpha-2](https://www.iso.org/iso-3166-country-codes.html)) e.g. `MY`, `SG`, `AU`, `US`, etc.
* The format for BIC (used in `payments[N].receiver.bank`) is strictly validated using `[A-Z]{6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3})?`
  (as specified in [ISO20022 BICFIIdentifier](https://www.iso20022.org/standardsrepository/type/BICFIIdentifier)).
* Payment date (`paymentDate`) cannot be in the past (validated against Malaysia time zone \* Asia/Kuala\_Lumpur).
* All payments require:
  * `payments[N].receiver.transactorRelationship`: Must be `RELATED` or `NOT_RELATED`
  * `payments[N].receiver.residencyStatus`: Must be `RESIDENT` or `NON_RESIDENT`

## TT [#tt]

<Callout type="warn" title="Important">
  * Payment details (`payments[N].paymentDetails`) is **mandatory**. Refer to [UOB additional payment details](https://uniservices1.uobgroup.com/secure/forms/business/BIBPlus_clearing_codes.html#bc2) for details.
  * Purpose code (`payments[N].purposeCode`) is **mandatory**. Please contact the bank for the latest BNM purpose codes.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **mandatory**.
  * Address is **mandatory** including country and city fields.
  * Clearing code (`payments[N].receiver.localRoutingIdentifier`) may be required for TT payments to certain countries or currencies. Refer to [UOB clearing codes](https://uniservices1.uobgroup.com/secure/forms/business/BIBPlus_clearing_codes.html#bc2) for details.
  * Extra allowed characters: `+` `'` `-` `.` `,` `(` `)` `/` `:` `?` `#` `$` `%` `&` `*` `=` `_` `` ` `` `{` `|` `}` `"` `;` `<` `>` `@` `[` `\` `]`
</Callout>

| field                                        | pattern / charset                                                                                                                                                                                   | max length                 | mandatory/optional                                                                                                                                                |
| -------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| payments\[N].customerReference               | SWIFT                                                                                                                                                                                               | 16                         | M                                                                                                                                                                 |
| payments\[N].paymentDetails                  | SWIFT <br /> See [UOB additional payment details](https://uniservices1.uobgroup.com/secure/forms/business/BIBPlus_clearing_codes.html#bc2). <br /> Details will appear on the payment advice email. | 140                        | M                                                                                                                                                                 |
| payments\[N].purposeCode                     | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes.                                                                                                        | 5                          | M                                                                                                                                                                 |
| payments\[N].bankChargeBearer                | `SENDER` or `RECEIVER` or `SHARED`. Default to `SHARED` if not provided.                                                                                                                            |                            | O                                                                                                                                                                 |
| payments\[N].purposeOfPayment                | SWIFT                                                                                                                                                                                               | 60                         | M                                                                                                                                                                 |
| payments\[N].paymentAdviceEmails\[N]         | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]                                                                                                          | 50 per email (max 1 email) | O                                                                                                                                                                 |
| payments\[N].receiver.name                   | SWIFT                                                                                                                                                                                               | 140                        | M                                                                                                                                                                 |
| payments\[N].receiver.bank                   | BIC11                                                                                                                                                                                               | 11                         | M                                                                                                                                                                 |
| payments\[N].receiver.bankAccountNumber      | Alphanumeric                                                                                                                                                                                        | 34                         | M                                                                                                                                                                 |
| payments\[N].receiver.localRoutingIdentifier | Alphanumeric                                                                                                                                                                                        | 35                         | C (Required for certain countries/currencies. See [UOB clearing codes](https://uniservices1.uobgroup.com/secure/forms/business/BIBPlus_clearing_codes.html#bc2).) |
| payments\[N].receiver.intermediaryBank       | Alphanumeric                                                                                                                                                                                        | 11                         | O                                                                                                                                                                 |
| payments\[N].receiver.address.line1          | SWIFT                                                                                                                                                                                               | 35                         | M                                                                                                                                                                 |
| payments\[N].receiver.address.line2          | SWIFT                                                                                                                                                                                               | 35                         | O                                                                                                                                                                 |
| payments\[N].receiver.address.city           | SWIFT                                                                                                                                                                                               | 35                         | M                                                                                                                                                                 |
| payments\[N].receiver.address.state          | SWIFT                                                                                                                                                                                               | 35                         | O                                                                                                                                                                 |
| payments\[N].receiver.address.postalCode     | SWIFT                                                                                                                                                                                               | 16                         | O                                                                                                                                                                 |
| payments\[N].receiver.address.country        | ISO 3166-1 alpha-2                                                                                                                                                                                  | 2                          | M                                                                                                                                                                 |
| payments\[N].receiver.transactorRelationship | RELATED or NOT\_RELATED                                                                                                                                                                             |                            | M                                                                                                                                                                 |
| payments\[N].receiver.residencyStatus        | RESIDENT or NON\_RESIDENT                                                                                                                                                                           |                            | M                                                                                                                                                                 |

## MY\_RENTAS [#my_rentas]

<Callout type="warn" title="Important">
  * Currency must be **MYR only**.
  * Purpose code (`payments[N].purposeCode`) is **mandatory**. Please contact the bank for the latest BNM purpose codes.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **mandatory**.
  * Address is **mandatory** including country field.
  * Extra allowed characters: `/` `-` `?` `:` `( )` `.` `,` `'` `+` `#` `$` `%` `&` `*` `=` `_` `` ` `` `{` `|` `}` `"` `;` `<` `>` `@` `[` `\` `]`
</Callout>

| field                                        | pattern / charset                                                                            | max length                 | mandatory/optional |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------- | ------------------ |
| payments\[N].currency                        | MYR only                                                                                     | 3                          | M                  |
| payments\[N].customerReference               | SWIFT                                                                                        | 35                         | M                  |
| payments\[N].paymentDetails                  | SWIFT <br /> Details will appear on the payment advice email.                                | 140                        | O                  |
| payments\[N].purposeCode                     | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes. | 5                          | M                  |
| payments\[N].purposeOfPayment                | SWIFT                                                                                        | 60                         | M                  |
| payments\[N].paymentAdviceEmails\[N]         | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]   | 50 per email (max 1 email) | O                  |
| payments\[N].receiver.name                   | SWIFT                                                                                        | 140                        | M                  |
| payments\[N].receiver.bank                   | BIC11                                                                                        | 11                         | M                  |
| payments\[N].receiver.bankAccountNumber      | Alphanumeric                                                                                 | 34                         | M                  |
| payments\[N].receiver.localRoutingIdentifier | Alphanumeric                                                                                 | 35                         | O                  |
| payments\[N].receiver.intermediaryBank       | Alphanumeric                                                                                 | 11                         | O                  |
| payments\[N].receiver.address.line1          | SWIFT                                                                                        | 35                         | M                  |
| payments\[N].receiver.address.line2          | SWIFT                                                                                        | 35                         | O                  |
| payments\[N].receiver.address.city           | SWIFT                                                                                        | 35                         | O                  |
| payments\[N].receiver.address.state          | SWIFT                                                                                        | 35                         | O                  |
| payments\[N].receiver.address.postalCode     | SWIFT                                                                                        | 16                         | O                  |
| payments\[N].receiver.address.country        | ISO 3166-1 alpha-2                                                                           | 2                          | M                  |
| payments\[N].receiver.transactorRelationship | RELATED or NOT\_RELATED                                                                      |                            | M                  |
| payments\[N].receiver.residencyStatus        | RESIDENT or NON\_RESIDENT                                                                    |                            | M                  |

## MY\_IBG [#my_ibg]

<Callout type="warn" title="Important">
  * Currency must be **MYR only**.
  * Purpose code (`payments[N].purposeCode`) is **mandatory**. Please contact the bank for the latest BNM purpose codes.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **mandatory**.
</Callout>

| field                                        | pattern / charset                                                                            | max length                 | mandatory/optional |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------- | ------------------ |
| payments\[N].currency                        | MYR only                                                                                     | 3                          | M                  |
| payments\[N].customerReference               | SWIFT                                                                                        | 30                         | M                  |
| payments\[N].paymentDetails                  | SWIFT <br /> Details will appear on the payment advice email.                                | 140                        | O                  |
| payments\[N].purposeCode                     | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes. | 5                          | M                  |
| payments\[N].purposeOfPayment                | SWIFT                                                                                        | 60                         | M                  |
| payments\[N].paymentAdviceEmails\[N]         | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]   | 50 per email (max 1 email) | O                  |
| payments\[N].receiver.name                   | SWIFT                                                                                        | 20                         | M                  |
| payments\[N].receiver.bank                   | BIC11                                                                                        | 11                         | M                  |
| payments\[N].receiver.bankAccountNumber      | Alphanumeric                                                                                 | 34                         | M                  |
| payments\[N].receiver.transactorRelationship | RELATED or NOT\_RELATED                                                                      |                            | M                  |
| payments\[N].receiver.residencyStatus        | RESIDENT or NON\_RESIDENT                                                                    |                            | M                  |

## MY\_IAFT [#my_iaft]

<Callout type="warn" title="Important">
  * Currency must be **MYR only**.
  * Purpose code (`payments[N].purposeCode`) is **mandatory**. Please contact the bank for the latest BNM purpose codes.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **mandatory**.
  * Both sender and receiver accounts must be **with UOB Malaysia** (book transfer).
</Callout>

| field                                        | pattern / charset                                                                            | max length                 | mandatory/optional |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | -------------------------- | ------------------ |
| payments\[N].currency                        | MYR only                                                                                     | 3                          | M                  |
| payments\[N].customerReference               | SWIFT                                                                                        | 30                         | M                  |
| payments\[N].paymentDetails                  | SWIFT <br /> Details will appear on the payment advice email.                                | 140                        | O                  |
| payments\[N].purposeCode                     | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes. | 5                          | M                  |
| payments\[N].purposeOfPayment                | SWIFT                                                                                        | 60                         | M                  |
| payments\[N].paymentAdviceEmails\[N]         | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]   | 50 per email (max 1 email) | O                  |
| payments\[N].receiver.name                   | SWIFT                                                                                        | 20                         | M                  |
| payments\[N].receiver.bankAccountNumber      | Alphanumeric                                                                                 | 34                         | M                  |
| payments\[N].receiver.transactorRelationship | RELATED or NOT\_RELATED                                                                      |                            | M                  |
| payments\[N].receiver.residencyStatus        | RESIDENT or NON\_RESIDENT                                                                    |                            | M                  |

## MY\_DUITNOW [#my_duitnow]

<Callout type="warn" title="Important">
  * Currency must be **MYR only**.
  * Use `payments[N].receiver.proxyType` + `payments[N].receiver.proxyValue` instead of bank account numbers.
  * Purpose code (`payments[N].purposeCode`) is **conditionally mandatory** if `payments[N].receiver.residencyStatus = NON_RESIDENT`.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **conditionally mandatory** if `payments[N].receiver.residencyStatus = NON_RESIDENT`.
</Callout>

| field                                                    | pattern / charset                                                                                                                                                                  | max length                   | mandatory/optional                                                    |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------------------------- |
| payments\[N].currency                                    | MYR only                                                                                                                                                                           | 3                            | M                                                                     |
| payments\[N].customerReference                           | Alphanumeric                                                                                                                                                                       | 40                           | M                                                                     |
| payments\[N].paymentDetails                              | SWIFT                                                                                                                                                                              | 140                          | O                                                                     |
| payments\[N].purposeCode                                 | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes.                                                                                       | 5                            | C (required if `payments[N].receiver.residencyStatus = NON_RESIDENT`) |
| payments\[N].purposeOfPayment                            | SWIFT                                                                                                                                                                              | 60                           | C (required if `payments[N].receiver.residencyStatus = NON_RESIDENT`) |
| payments\[N].paymentAdviceEmails\[N]                     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]                                                                                         | 100 per email (max 5 emails) | O                                                                     |
| payments\[N].receiver.name                               | SWIFT                                                                                                                                                                              | 140                          | M                                                                     |
| payments\[N].receiver.proxyType                          | `NRIC` or `PASSPORT` or `ARMY` or `MOBILE` or `BUSINESS_REG`                                                                                                                       | M                            |                                                                       |
| payments\[N].receiver.proxyValue <br />for NRIC          | NRIC / Malaysian Identification Number                                                                                                                                             | 34                           | M                                                                     |
| payments\[N].receiver.proxyValue <br />for PASSPORT      | Passport Number + Alpha-3 country code of the country of issuance. E.g: given a passport number E394029340V and country code of Singapore (SGP), the value will be E394029340VSGP. | 34                           | M                                                                     |
| payments\[N].receiver.proxyValue <br />for ARMY          | Army Number                                                                                                                                                                        | 34                           | M                                                                     |
| payments\[N].receiver.proxyValue <br />for MOBILE        | + followed by 7 to 34   digits <br /> Example: `+60121234567`                                                                                                                      | 34                           | M                                                                     |
| payments\[N].receiver.proxyValue <br />for BUSINESS\_REG | Business Registration Number (BRN) <br /> Example: `202201234565`                                                                                                                  | 34                           | M                                                                     |
| payments\[N].receiver.transactorRelationship             | RELATED or NOT\_RELATED                                                                                                                                                            |                              | M                                                                     |
| payments\[N].receiver.residencyStatus                    | RESIDENT or NON\_RESIDENT                                                                                                                                                          |                              | M                                                                     |

## MY\_IBFT [#my_ibft]

<Callout type="warn" title="Important">
  * Currency must be **MYR only**.
  * Proxy identifiers are **NOT supported**, use bank account number instead.
  * Purpose code (`payments[N].purposeCode`) is **conditionally mandatory** if `payments[N].receiver.residencyStatus = NON_RESIDENT`.
  * Purpose of payment (`payments[N].purposeOfPayment`) is **conditionally mandatory** if `payments[N].receiver.residencyStatus = NON_RESIDENT`.
</Callout>

| field                                        | pattern / charset                                                                            | max length                   | mandatory/optional                                                    |
| -------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------- | --------------------------------------------------------------------- |
| payments\[N].currency                        | MYR only                                                                                     | 3                            | M                                                                     |
| payments\[N].customerReference               | Alphanumeric                                                                                 | 40                           | M                                                                     |
| payments\[N].paymentDetails                  | SWIFT                                                                                        | 140                          | O                                                                     |
| payments\[N].purposeCode                     | Alphanumeric Example: 00001 <br /> Please contact the bank for the latest BNM purpose codes. | 5                            | C (required if `payments[N].receiver.residencyStatus = NON_RESIDENT`) |
| payments\[N].purposeOfPayment                | SWIFT                                                                                        | 60                           | C (required if `payments[N].receiver.residencyStatus = NON_RESIDENT`) |
| payments\[N].paymentAdviceEmails\[N]         | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"]   | 100 per email (max 5 emails) | O                                                                     |
| payments\[N].receiver.name                   | SWIFT                                                                                        | 140                          | M                                                                     |
| payments\[N].receiver.bank                   | BIC11                                                                                        | 11                           | M                                                                     |
| payments\[N].receiver.bankAccountNumber      | Numeric                                                                                      | 34                           | M                                                                     |
| payments\[N].receiver.transactorRelationship | RELATED or NOT\_RELATED                                                                      |                              | M                                                                     |
| payments\[N].receiver.residencyStatus        | RESIDENT or NON\_RESIDENT                                                                    |                              | M                                                                     |
