# Acme Standard Chartered Bank Singapore Payments (H2H) (/guides/scb-sg-h2h-payments)



This describes validations and allowed data formats for Acme payments going
through Standard Chartered Bank (SCB) Singapore (SWIFT BIC: SCBLSG22XXX) over
host-to-host (H2H) file integration. These rules are validated by Acme and
further validated by the bank. These rules may be stricter than what the bank
requires.

Supported types: `FAST`, `GIRO`, `MEPS`, `SG_PAYROLL`, `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 ` `

* SCB Extended Character Set:
  * The 26 uppercase Latin letters `A`-`Z`
  * The 26 lowercase Latin letters `a`-`z`
  * The 10 digits `0`-`9`
  * Space ` `
  * The punctuation characters `!` `"` `#` `$` `%` `&` `'` `(` `)` `*` `+` `-` `.` `/` `:` `;` `<` `=` `>` `?` `@` `[` `]` `^` `_` `{` `}`
  * Note that the comma `,` is not allowed in this character set.

## ISO 20022 Migration [#iso-20022-migration]

<Callout type="warn" title="SCB address requirements">
  * SCB is migrating to the ISO 20022 message standards. The address requirements below 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.
  * Under the [SCB address guidelines](https://www.sc.com/en/uploads/sites/66/content/docs/sc-cib-tb-ISO-20022%E2%80%93CBPR-Address-guidelines-H2H-and-API-sept-2025.pdf), the beneficiary `address.city` (town name) and `address.country` become mandatory for all payment types, not only for `MEPS` and `TT`.
  * These address requirements become mandatory in November 2026.
  * Acme enforces `address.city` and `address.country` on every payment type, ahead of the bank's deadline. `TT` additionally requires `address.line1` and `address.postalCode`; on the other types those two stay optional.
</Callout>

## Payment Customer Reference [#payment-customer-reference]

* Use payments\[N].customerReference as the unique identifier of your payments.
* If customerReference is not provided, Acme generates a 13-character unique alphanumeric reference automatically.
* The customerReference is sent to the bank as the end-to-end ID of the payment.

## FAST [#fast]

<Callout type="info">
  * 4 characters `purposeCode` is mandatory for `FAST` payments. Refer to the [list](https://www.abs.org.sg/docs/library/mnemonic_purpose_codes.pdf) provided by The Association of Banks in Singapore (ABS).
  * The maximum amount for FAST payment is SGD 200,000 per transaction.
  * The payment `currency` must be **SGD**.
  * FAST payments are processed 24/7.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                                                      |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                                                      |
| payments\[N].paymentDetails              | SWIFT                                                                                      | 140                          | O                                                      |
| payments\[N].purposeCode                 | Alphanumeric                                                                               | 4                            | M                                                      |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                                                      |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | O                                                      |
| payments\[N].receiver.name               | SWIFT                                                                                      | 70                           | M                                                      |
| payments\[N].receiver.bank               | BIC11                                                                                      | 11                           | M                                                      |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                               | 34                           | M                                                      |
| payments\[N].receiver.address.line1      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M (See [ISO 20022 Requirements](#iso-20022-migration)) |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | O                                                      |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M (See [ISO 20022 Requirements](#iso-20022-migration)) |

Example Request:

```json
{
  "type": "FAST",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV001",
      "paymentDetails": "Payment for invoice 001",
      "purposeCode": "OTHR",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "DBSSSGSGXXX",
        "bankAccountNumber": "9876543210",
        "address": {
          "city": "Singapore",
          "country": "SG"
        }
      }
    }
  ]
}
```

## GIRO [#giro]

<Callout type="info">
  * 4 characters `purposeCode` is mandatory for `GIRO` payments. Refer to the [list](https://www.abs.org.sg/docs/library/mnemonic_purpose_codes.pdf) provided by The Association of Banks in Singapore (ABS).
  * The cut-off time for GIRO payments is 18:30 SGT. Files submitted by Acme to the bank after the cut-off are processed in the next processing window.
  * The payment `currency` must be **SGD**.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                                                      |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                                                      |
| payments\[N].paymentDetails              | SCB Extended                                                                               | 140                          | O                                                      |
| payments\[N].purposeCode                 | Alphanumeric                                                                               | 4                            | M                                                      |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                                                      |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | O                                                      |
| payments\[N].receiver.name               | SWIFT                                                                                      | 70                           | M                                                      |
| payments\[N].receiver.bank               | BIC11                                                                                      | 11                           | M                                                      |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                               | 34                           | M                                                      |
| payments\[N].receiver.address.line1      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M (See [ISO 20022 Requirements](#iso-20022-migration)) |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | O                                                      |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M (See [ISO 20022 Requirements](#iso-20022-migration)) |

Example Request:

```json
{
  "type": "GIRO",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV002",
      "paymentDetails": "Payment for invoice 002",
      "purposeCode": "OTHR",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "OCBCSGSGXXX",
        "bankAccountNumber": "9876543210",
        "address": {
          "city": "Singapore",
          "country": "SG"
        }
      }
    }
  ]
}
```

## MEPS [#meps]

<Callout type="info">
  * The minimum amount is SGD 50,000 per payment.
  * `purposeCode` is optional for `MEPS` payments.
  * The payment `currency` must be **SGD**.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                                                      |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                                                      |
| payments\[N].paymentDetails              | SWIFT                                                                                      | 140                          | O                                                      |
| payments\[N].purposeCode                 | Alphanumeric                                                                               | 4                            | O                                                      |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                                                      |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | O                                                      |
| payments\[N].receiver.name               | SWIFT                                                                                      | 70                           | M                                                      |
| payments\[N].receiver.bank               | BIC11                                                                                      | 11                           | M                                                      |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                               | 34                           | M                                                      |
| payments\[N].receiver.address.line1      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M (See [ISO 20022 Requirements](#iso-20022-migration)) |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | O                                                      |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M (See [ISO 20022 Requirements](#iso-20022-migration)) |

Example Request:

```json
{
  "type": "MEPS",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 5000000,
      "customerReference": "INV003",
      "paymentDetails": "Payment for invoice 003",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "UOVBSGSGXXX",
        "bankAccountNumber": "9876543210",
        "address": {
          "city": "Singapore",
          "country": "SG"
        }
      }
    }
  ]
}
```

## SG\_PAYROLL [#sg_payroll]

<Callout type="info">
  * `purposeCode` is mandatory for `SG_PAYROLL` payments.
  * Allowed values are `SALA` or `SAL` (Salary), `BONU` or `BON` (Bonus), and `OTHR` or `OTH` (Other).
  * The cut-off time for PAYROLL payments is 18:30 SGT. Files submitted by Acme to the bank after the cut-off are processed in the next processing window.
  * The payment `currency` must be **SGD**.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                                                      |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                                                      |
| payments\[N].paymentDetails              | SCB Extended                                                                               | 140                          | O                                                      |
| payments\[N].purposeCode                 | `SALA` or `SAL` or `BONU` or `BON` or `OTHR` or `OTH`                                      | 4                            | M                                                      |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                                                      |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | O                                                      |
| payments\[N].receiver.name               | SWIFT                                                                                      | 70                           | M                                                      |
| payments\[N].receiver.bank               | BIC11                                                                                      | 11                           | M                                                      |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                               | 34                           | M                                                      |
| payments\[N].receiver.address.line1      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M (See [ISO 20022 Requirements](#iso-20022-migration)) |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | O                                                      |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M (See [ISO 20022 Requirements](#iso-20022-migration)) |

Example Request:

```json
{
  "type": "SG_PAYROLL",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 350000,
      "customerReference": "PAYROLL07",
      "paymentDetails": "July salary",
      "purposeCode": "SALA",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "DBSSSGSGXXX",
        "bankAccountNumber": "9876543210",
        "address": {
          "city": "Singapore",
          "country": "SG"
        }
      }
    }
  ]
}
```

## BKTR [#bktr]

Book transfers move funds between accounts within SCB Singapore (SCBLSG22XXX).

<Callout type="info">
  * `receiver.bank` is required for H2H book transfers. Use SCB Singapore's BIC `SCBLSG22XXX`.
  * `receiver.name` accepts the SCB Extended Character Set.
  * `purposeCode` is optional for book transfers.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional                                     |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------------------------------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                                                      |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                                                      |
| payments\[N].paymentDetails              | SWIFT                                                                                      | 140                          | O                                                      |
| payments\[N].purposeCode                 | Alphanumeric                                                                               | 4                            | O                                                      |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                                                      |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | O                                                      |
| payments\[N].receiver.name               | SCB Extended                                                                               | 70                           | M                                                      |
| payments\[N].receiver.bank               | BIC11                                                                                      | 11                           | M                                                      |
| payments\[N].receiver.bankAccountNumber  | Alphanumeric                                                                               | 34                           | M                                                      |
| payments\[N].receiver.address.line1      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                                                      |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M (See [ISO 20022 Requirements](#iso-20022-migration)) |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | O                                                      |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M (See [ISO 20022 Requirements](#iso-20022-migration)) |

Example Request:

```json
{
  "type": "BKTR",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV004",
      "paymentDetails": "Internal fund transfer",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "SCBLSG22XXX",
        "bankAccountNumber": "9876543210",
        "address": {
          "city": "Singapore",
          "country": "SG"
        }
      }
    }
  ]
}
```

## TT [#tt]

<Callout type="info">
  * `paymentDetails` is mandatory for `TT` payments.
  * The beneficiary address is mandatory for `TT` payments. You must provide `line1`, `city`, `postalCode`, and `country`.
  * `TT` payments accept any valid ISO 4217 currency.
</Callout>

| field                                    | pattern / charset                                                                          | max length                   | mandatory/optional |
| ---------------------------------------- | ------------------------------------------------------------------------------------------ | ---------------------------- | ------------------ |
| payments\[N].customerReference           | Alphanumeric                                                                               | 16                           | O                  |
| paymentDate                              | `YYYY-MM-DD`                                                                               |                              | M                  |
| payments\[N].paymentDetails              | SWIFT                                                                                      | 140                          | M                  |
| payments\[N].purposeCode                 | Alphanumeric                                                                               | 4                            | O                  |
| payments\[N].bankChargeBearer            | `SENDER`, `RECEIVER`, or `SHARED`                                                          |                              | O                  |
| payments\[N].paymentAdviceEmails\[N]     | Valid email address <br /> Example: \["[finance@company.com](mailto:finance@company.com)"] | 150 per email (max 5 emails) | 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      | Free text                                                                                  | 70                           | M                  |
| payments\[N].receiver.address.line2      | Free text                                                                                  | 70                           | O                  |
| payments\[N].receiver.address.city       | Free text                                                                                  | 35                           | M                  |
| payments\[N].receiver.address.postalCode | Free text                                                                                  | 16                           | M                  |
| payments\[N].receiver.address.country    | ISO 3166-1 alpha-2                                                                         | 2                            | M                  |

Example Request:

```json
{
  "type": "TT",
  "paymentDate": "2026-07-15",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "USD",
  "payments": [
    {
      "amount": 250000,
      "customerReference": "INV005",
      "paymentDetails": "Payment for invoice 005",
      "receiver": {
        "name": "John Smith",
        "bank": "CHASUS33XXX",
        "bankAccountNumber": "123456789",
        "address": {
          "line1": "270 Park Avenue",
          "city": "New York",
          "postalCode": "10017",
          "country": "US"
        }
      }
    }
  ]
}
```

## Payment Response [#payment-response]

Payment status definitions:

| Status       | Description                                                                   |
| ------------ | ----------------------------------------------------------------------------- |
| `PROCESSING` | Status upon creation.                                                         |
| `SUBMITTED`  | Payment file uploaded to SCB. Awaiting acknowledgment and final confirmation. |
| `COMPLETED`  | Payment confirmed successful by the bank.                                     |
| `FAILED`     | Payment rejected by the bank. Check `underlyingErrorMessage` for details.     |
