# Acme Standard Chartered Bank Hong Kong Payments (API) (/guides/scb-hk-api-payments)



This describes validations / allowed data formats for Acme payments going
through Standard Chartered Bank (SCB) Hong Kong (`SCBLHKHHXXX`) over the SCB
Open Banking API. These will be validated by Acme and further validated by the
bank. These rules may be stricter than what the bank requires.

Supported types: `HK_FPS_PROXY`, `HK_FPS_ACCOUNT`, `HK_ACH`, `HK_CHATS`, `BKTR`, `TT`.

## 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 ` `

* `customerReference` is required for all payment types. It must be unique and must not exceed 16 characters.

* `paymentDetails` is sent to the beneficiary as unstructured remittance information across 2 lines of 70 characters.

* `receiver.name` is required for all payment types and must not exceed 140 characters. It is not restricted to the SWIFT character set.

* `receiver.address.city` and `receiver.address.country` are required for all payment types, as enforced by Standard Chartered Bank.

* `receiver.address.line1` is required for `TT` only. It is optional for every other payment type.

* The `line2`, `state`, and `postalCode` address fields are optional. `line1` and `line2` accept up to 70 SWIFT characters, `state` up to 35, and `postalCode` up to 16.

* `receiver.localRoutingIdentifier` is the 3-digit HKICL bank clearing code.

* `purposeCode` is not required for any SCB Hong Kong payment type.

* `bankChargeBearer` defaults to `SHARED` when omitted. On `BKTR` it is always `SHARED`, whatever value is supplied.

* For `HK_FPS_PROXY` and `HK_FPS_ACCOUNT`, Acme sets `paymentDate` to the current date in the `Asia/Hong_Kong` timezone.

<Callout type="warn" title="ISO 20022 migration: SCB address requirements">
  - SCB is migrating to the ISO 20022 message standards. The beneficiary address requirements on this page are part of this migration. Refer to [ISO 20022 at Standard Chartered](https://www.sc.com/en/corporate-investment-banking/iso-20022/) for an overview.
  - Acme sends SCB Hong Kong the `Address-Validation: Y` header, so the beneficiary `address.city` (town name) and `address.country` are mandatory for all payment types. Acme validates this on every payment.
</Callout>

<Callout type="warn" title="customerReference and paymentDetails are validated by the bank">
  * Acme does not pre-validate the length or character set of `customerReference` and `paymentDetails` on SCB Hong Kong payments.
  * A `customerReference` over 16 characters, or a non-SWIFT character in either field, is rejected by Standard Chartered Bank after submission rather than by the Acme API.
  * A `paymentDetails` value over 140 characters is **silently truncated to 140** before submission — the payment succeeds and the beneficiary sees the clipped text. Keep both fields within the limits stated above.
</Callout>

## HK\_FPS\_PROXY [#hk_fps_proxy]

Faster Payment System transfer addressed to a registered proxy rather than an account number.

<Callout type="info">
  * `receiver.bank` and `receiver.localRoutingIdentifier` must not be provided. The proxy identifies the beneficiary bank.
  * `receiver.proxyValue` format depends on `receiver.proxyType`:
    * `FPS_ID`: at most 9 digits.
    * `HKID`: 1 or 2 uppercase letters, then 6 digits, then a digit or the letter `A`.
    * `MOBILE`: must start with `+` followed by digits, and must carry a country code Acme can parse.
    * `EMAIL`: accepted without a format check by Acme. Standard Chartered Bank validates it.
</Callout>

| field                    | pattern / charset                      | max length | mandatory/optional |
| ------------------------ | -------------------------------------- | ---------- | ------------------ |
| currency                 | `HKD` or `CNY`                         | 3          | M                  |
| customerReference        | SWIFT                                  | 16         | M                  |
| paymentDetails           | SWIFT                                  | 140        | O                  |
| bankChargeBearer         | `SENDER` or `RECEIVER` or `SHARED`     |            | O                  |
| receiver.name            | Free text                              | 140        | M                  |
| receiver.proxyType       | `FPS_ID`, `HKID`, `MOBILE`, or `EMAIL` |            | M                  |
| receiver.proxyValue      | Depends on `receiver.proxyType`        |            | M                  |
| receiver.address.city    | SWIFT                                  | 35         | M                  |
| receiver.address.country | ISO 3166-1 alpha-2                     | 2          | M                  |

## HK\_FPS\_ACCOUNT [#hk_fps_account]

Faster Payment System transfer addressed to a bank clearing code and account number.

<Callout type="info">
  `receiver.bank` must not be provided. `receiver.localRoutingIdentifier` routes the payment.
</Callout>

| field                           | pattern / charset                  | max length | mandatory/optional |
| ------------------------------- | ---------------------------------- | ---------- | ------------------ |
| currency                        | `HKD` or `CNY`                     | 3          | M                  |
| customerReference               | SWIFT                              | 16         | M                  |
| paymentDetails                  | SWIFT                              | 140        | O                  |
| bankChargeBearer                | `SENDER` or `RECEIVER` or `SHARED` |            | O                  |
| receiver.name                   | Free text                          | 140        | M                  |
| receiver.localRoutingIdentifier | Numeric HKICL clearing code        | 3          | M                  |
| receiver.bankAccountNumber      | Numeric                            | 34         | M                  |
| receiver.address.city           | SWIFT                              | 35         | M                  |
| receiver.address.country        | ISO 3166-1 alpha-2                 | 2          | M                  |

## HK\_ACH [#hk_ach]

Hong Kong Automated Clearing House transfer. A batched, non-urgent local transfer.

<Callout type="info">
  `receiver.bank` must not be provided. `receiver.localRoutingIdentifier` routes the payment.
</Callout>

| field                           | pattern / charset                  | max length | mandatory/optional |
| ------------------------------- | ---------------------------------- | ---------- | ------------------ |
| currency                        | `HKD` or `CNY`                     | 3          | M                  |
| customerReference               | SWIFT                              | 16         | M                  |
| paymentDetails                  | SWIFT                              | 140        | O                  |
| bankChargeBearer                | `SENDER` or `RECEIVER` or `SHARED` |            | O                  |
| receiver.name                   | Free text                          | 140        | M                  |
| receiver.localRoutingIdentifier | Numeric HKICL clearing code        | 3          | M                  |
| receiver.bankAccountNumber      | Numeric                            | 34         | M                  |
| receiver.address.city           | SWIFT                              | 35         | M                  |
| receiver.address.country        | ISO 3166-1 alpha-2                 | 2          | M                  |

## HK\_CHATS [#hk_chats]

Clearing House Automated Transfer System. A same-day high-value RTGS transfer.

<Callout type="info">
  * `receiver.bank` is required. `receiver.localRoutingIdentifier` must not be provided.
  * Each CHATS currency clears through a different set of participant banks. Confirm the beneficiary bank supports the currency being sent.
</Callout>

| field                      | pattern / charset                  | max length | mandatory/optional |
| -------------------------- | ---------------------------------- | ---------- | ------------------ |
| currency                   | `HKD`, `CNY`, `USD`, or `EUR`      | 3          | M                  |
| customerReference          | SWIFT                              | 16         | M                  |
| paymentDetails             | SWIFT                              | 140        | O                  |
| bankChargeBearer           | `SENDER` or `RECEIVER` or `SHARED` |            | O                  |
| receiver.name              | Free text                          | 140        | M                  |
| receiver.bank              | Alphanumeric                       | 11         | M                  |
| receiver.bankAccountNumber | Numeric                            | 34         | M                  |
| receiver.address.city      | SWIFT                              | 35         | M                  |
| receiver.address.country   | ISO 3166-1 alpha-2                 | 2          | M                  |

## BKTR [#bktr]

Book Transfer. An intra-SCB transfer between two accounts at SCB Hong Kong (`SCBLHKHHXXX`).

<Callout type="info">
  * `receiver.bank` and `receiver.localRoutingIdentifier` must not be provided. SCB routes the payment to itself.
  * `bankChargeBearer` is always `SHARED` on this payment type.
</Callout>

| field                      | pattern / charset      | max length | mandatory/optional |
| -------------------------- | ---------------------- | ---------- | ------------------ |
| currency                   | ISO 4217 currency code | 3          | M                  |
| customerReference          | SWIFT                  | 16         | M                  |
| paymentDetails             | SWIFT                  | 140        | O                  |
| receiver.name              | Free text              | 140        | M                  |
| receiver.bankAccountNumber | Numeric                | 34         | M                  |
| receiver.address.city      | SWIFT                  | 35         | M                  |
| receiver.address.country   | ISO 3166-1 alpha-2     | 2          | M                  |

## TT [#tt]

Telegraphic Transfer. A cross-border SWIFT transfer.

<Callout type="info">
  * `receiver.bank` is required.
  * `receiver.address.line1` is required on this payment type only.
</Callout>

| field                      | pattern / charset                  | max length | mandatory/optional |
| -------------------------- | ---------------------------------- | ---------- | ------------------ |
| currency                   | ISO 4217 currency code             | 3          | M                  |
| customerReference          | SWIFT                              | 16         | M                  |
| paymentDetails             | SWIFT                              | 140        | O                  |
| bankChargeBearer           | `SENDER` or `RECEIVER` or `SHARED` |            | O                  |
| receiver.name              | Free text                          | 140        | M                  |
| receiver.bank              | Alphanumeric                       | 11         | M                  |
| receiver.bankAccountNumber | Free text                          |            | M                  |
| receiver.address.line1     | SWIFT                              | 70         | M                  |
| receiver.address.city      | SWIFT                              | 35         | M                  |
| receiver.address.country   | ISO 3166-1 alpha-2                 | 2          | M                  |
