# Acme HSBC Bank Malaysia Payments (/guides/hsbc-my-payments)



This describes validations / allowed data formats for Acme payments going
through HSBC Bank 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 `receiver.address.country` must be an uppercase 2-letter ISO 3166 country code (e.g. `MY` for Malaysia).
* The format for BIC (used in `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)).

## MY\_IBG [#my_ibg]

<Callout type="warn" title="Important">
  * The `paymentSetCode` for GIRO payments is a 3 character optional code configured on HSBCnet to group payment instructions under a specific access or entitlement group. Use this field to restrict payroll transaction access on HSBCnet. The value must match an existing payment set code configured in HSBCnet, please contact the bank for the appropriate code(s) to set.
</Callout>

| field                                    | pattern / charset                                                             | max length | mandatory/optional |
| ---------------------------------------- | ----------------------------------------------------------------------------- | ---------- | ------------------ |
| paymentSetCode                           | SWIFT <br /> Example: `E01`                                                   | 3          | O                  |
| payments\[N].customerReference           | SWIFT                                                                         | 12         | M                  |
| payments\[N].paymentDetails              | SWIFT                                                                         | 140        | O                  |
| payments\[N].bankChargeBearer            | `SENDER` or `RECEIVER` or `SHARED`<br /> Default to `SENDER` if not provided. |            | 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.address.line1      | SWIFT                                                                         | 35         | O                  |
| 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    | SWIFT                                                                         | 2          | M                  |

## MY\_IBFT [#my_ibft]

<Callout type="warn" title="Important">
  * All payment type RENTAS, Telegraphic Transfer and DuitNow (IBFT and Proxy) require purpose of payment code to describe the nature of the transaction. Specify the 5 digits purpose of payments (PoP) in `purposeCode`. Please contact the bank for the latest **Purpose of Payment listing code**.<br />
  * As part of the requirements, please append the prefix &#x2A;*"/RRN/"** before populating remittance information of the payment in `paymentDetails`. Example: "/RRN/General Info"
</Callout>

| field                                    | pattern / charset                       | max length | mandatory/optional |
| ---------------------------------------- | --------------------------------------- | ---------- | ------------------ |
| payments\[N].customerReference           | SWIFT                                   | 16         | M                  |
| payments\[N].paymentDetails              | SWIFT                                   | 140        | O                  |
| payments\[N].purposeCode                 | 5 Digits PoP Code <br /> Example: 00001 | 5          | M                  |
| payments\[N].receiver.name               | SWIFT                                   | 140        | M                  |
| payments\[N].receiver.bank               | BIC11                                   | 11         | M                  |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                            | 34         | M                  |
| payments\[N].receiver.accountType        | `CHECKING` or `SAVINGS`                 |            | M                  |
| payments\[N].receiver.address.line1      | SWIFT                                   | 35         | O                  |
| 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    | SWIFT                                   | 2          | O                  |

## MY\_DUITNOW [#my_duitnow]

<Callout type="warn" title="Important">
  * All payment type RENTAS, Telegraphic Transfer and DuitNow (IBFT and Proxy) require purpose of payment code to describe the nature of the transaction. Specify the 5 digits purpose of payments (PoP) in `purposeCode`. Please contact the bank for the latest **Purpose of Payment listing code**.<br />
  * As part of the requirements, please append the prefix &#x2A;*"/RRN/"** before populating remittance information of the payment in `paymentDetails`. Example: "/RRN/General Info"
</Callout>

| field                                                    | pattern / charset                                                                                                                                                                  | max length | mandatory/optional |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------- | ------------------ |
| payments\[N].customerReference                           | SWIFT                                                                                                                                                                              | 16         | M                  |
| payments\[N].paymentDetails                              | SWIFT                                                                                                                                                                              | 140        | O                  |
| payments\[N].purposeCode                                 | 5 Digits PoP Code <br /> Example: 00001                                                                                                                                            | 5          | 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                                                                                                                                             | 15         | 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. | 15         | M                  |
| payments\[N].receiver.proxyValue <br />for ARMY          | Army Number                                                                                                                                                                        | 15         | M                  |
| payments\[N].receiver.proxyValue <br />for MOBILE        | + followed by 7 to 15 digits <br /> Example: `+60121234567`                                                                                                                        | 15         | M                  |
| payments\[N].receiver.proxyValue <br />for BUSINESS\_REG | Business Registration Number (BRN) <br /> Example: `202201234565`                                                                                                                  | 15         | M                  |
| payments\[N].receiver.address.line1                      | SWIFT                                                                                                                                                                              | 35         | O                  |
| 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                    | SWIFT                                                                                                                                                                              | 2          | O                  |

## MY\_RENTAS [#my_rentas]

<Callout type="warn" title="Important">
  * All payment type RENTAS, Telegraphic Transfer and DuitNow (IBFT and Proxy) require purpose of payment code to describe the nature of the transaction. Specify the 5 digits purpose of payments (PoP) in `purposeCode`. Please contact the bank for the latest **Purpose of Payment listing code**.<br />
</Callout>

| field                                    | pattern / charset                                                               | max length | mandatory/optional |
| ---------------------------------------- | ------------------------------------------------------------------------------- | ---------- | ------------------ |
| payments\[N].customerReference           | SWIFT                                                                           | 16         | M                  |
| payments\[N].paymentDetails              | SWIFT                                                                           | 140        | O                  |
| payments\[N].bankChargeBearer            | `SENDER` or `RECEIVER` or `SHARED`<br /> Default to `RECEIVER` if not provided. |            | O                  |
| payments\[N].purposeCode                 | 5 Digits PoP/KPW Code<br /> Example: 00001                                      | 5          | M                  |
| payments\[N].receiver.name               | SWIFT                                                                           | 35         | M                  |
| payments\[N].receiver.bank               | BIC11                                                                           | 11         | M                  |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                    | 34         | M                  |
| payments\[N].receiver.address.line1      | SWIFT                                                                           | 35         | O                  |
| 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    | SWIFT                                                                           | 2          | M                  |

## TT [#tt]

<Callout type="warn" title="Important">
  * All payment type RENTAS, Telegraphic Transfer and DuitNow (IBFT and Proxy) require purpose of payment code to describe the nature of the transaction. Specify the 5 digits purpose of payments (PoP) in `purposeCode`. Please contact the bank for the latest **Purpose of Payment listing code**.<br />
  * The `paymentDetails` is conditionally mandatory for TT to specific countries in Asia including **Bangladesh, India, Malaysia, Mauritius, the Philippines, Sri Lanka, Vietnam and Indonesia**.<br />
  * Specify the purpose of payments (PoP) according to the local regulatory guidelines for each country in `paymentDetails`. Please contact the bank for the latest **Asia Purpose of Payment Formatting Guide**.<br />
  * **Note:*&#x2A; As part of the requirements, for TT payments to Malaysia, please append the prefix &#x2A;*"REMI/"** before populating the purpose of payment in `paymentDetails`. Example: "REMI/Manufactured Goods"
</Callout>

| field                                    | pattern / charset                                                             | max length | mandatory/optional |
| ---------------------------------------- | ----------------------------------------------------------------------------- | ---------- | ------------------ |
| payments\[N].customerReference           | SWIFT                                                                         | 16         | M                  |
| payments\[N].paymentDetails              | SWIFT <br />Example: `Manufactured Goods`                                     | 140        | CM                 |
| payments\[N].purposeCode                 | 5 Digits PoP/KPW Code<br /> Example: 00001                                    | 5          | M                  |
| payments\[N].bankChargeBearer            | `SENDER` or `RECEIVER` or `SHARED`<br /> Default to `SHARED` if not provided. |            | O                  |
| payments\[N].receiver.name               | SWIFT                                                                         | 35         | M                  |
| payments\[N].receiver.bank               | BIC11                                                                         | 11         | M                  |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                  | 34         | M                  |
| payments\[N].receiver.address.line1      | SWIFT                                                                         | 35         | O                  |
| 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    | SWIFT                                                                         | 2          | M                  |
