Acme HSBC Bank Hong Kong Payments (API)

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

Channel: API

Supported types: HK_FPS_ACCOUNT, HK_CHATS, TT.

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
  • BIC11:

    • 11-character Bank Identifier Code

General notes

  • The receiver.address.country must be an uppercase 2-letter ISO 3166 country code (e.g. HK for Hong Kong).
  • 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).
  • amount is in minor units. For example, 150000 is HKD 1,500.00. See Minor units format.
  • instructionForSenderBank is not supported for HSBC Hong Kong.
  • If bankChargeBearer is not provided, Acme sends no charge bearer and HSBC applies its default.

ISO 20022 address

Important

  • HSBC Hong Kong payments use the ISO 20022 structured address.
  • receiver.address is mandatory for every type, with address.city and address.country.
  • Acme sends address.line1 as the street name, and city, state, postalCode and country as their own fields.
  • The address lines, city, state, postalCode and country must fit in 3 lines of 35 characters together.

Payment Customer Reference

  • Use customerReference as the unique identifier of your payments.
  • customerReference must use uppercase letters and digits only, up to 16 characters. HSBC shows it as is on your statement.
  • If customerReference is not provided, Acme generates a 13 character unique alphanumeric reference.
  • The customerReference is sent to the bank as the end-to-end ID of the payment.

HK_FPS_ACCOUNT

Important

  • Currency must be HKD or CNY.
  • The maximum amount is 1,000,000.00 per payment.
  • Send the receiver bank's 3 digit bank code in receiver.localRoutingIdentifier.
  • receiver.bank is optional.
  • purposeCode is mandatory. Use a 4 letter code from FPS purpose codes.
fieldpattern / charsetmax lengthmandatory/optional
customerReferenceUppercase letters and digits16O
paymentDetailsSWIFT140O
purposeCode4 letters
See FPS purpose codes
4M
bankChargeBearerSENDER or RECEIVER or SHAREDO
paymentAdviceEmails[N]Valid email address
Example: ["finance@company.com"]
2048 per email (max 6 emails)O
receiver.nameSWIFT70M
receiver.bankBIC1111O
receiver.bankAccountNumberAlphanumeric34M
receiver.localRoutingIdentifier3 digits (bank code)
Example: 004
3M
receiver.address.line1SWIFT35O
receiver.address.citySWIFT35M
receiver.address.stateSWIFT35O
receiver.address.postalCodeSWIFT16O
receiver.address.countryISO 3166-1 alpha-22M

Example Request:

{
  "type": "HK_FPS_ACCOUNT",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "currency": "HKD",
  "amount": 150000,
  "customerReference": "INV2026001",
  "paymentDetails": "Payment for invoice 2026001",
  "purposeCode": "SUPP",
  "receiver": {
    "name": "Chan Tai Man",
    "bankAccountNumber": "123456789012",
    "localRoutingIdentifier": "004",
    "address": {
      "line1": "1 Queen's Road Central",
      "city": "Hong Kong",
      "country": "HK"
    }
  }
}

FPS purpose codes

  • Source: HSBC ASP Purpose of Payment Formatting Guide, HK Faster Payment System Purpose of Payment List.
  • The purpose code applies to FPS payments only: HK_FPS_ACCOUNT here, and HK_FPS_PROXY and HK_FPS_ACCOUNT in batch payments.
  • Send exactly 4 characters.
  • Acme does not validate the code value against this list.
codedescription
BONUBonus
SALASalary
DIVIDividend
COMMCommission
PENSPension
ALLWAllowance
RENTRent
REFDRefund
UTILUtilities
EXPEExpenses
REBARebate
SUPPSupplier
TAXSTax
INTCIntra-company
TREATreasury
INTEInterest
OTHROther
LOANLoan
GOVTGovernment

HK_CHATS

Important

  • Currency must be HKD, CNY, USD or EUR.
  • Send the receiver bank's BIC in receiver.bank. Do not send receiver.localRoutingIdentifier.
fieldpattern / charsetmax lengthmandatory/optional
customerReferenceUppercase letters and digits16O
paymentDetailsSWIFT140O
bankChargeBearerSENDER or RECEIVER or SHAREDO
paymentAdviceEmails[N]Valid email address
Example: ["finance@company.com"]
2048 per email (max 6 emails)O
receiver.nameSWIFT70M
receiver.bankBIC1111M
receiver.bankAccountNumberAlphanumeric34M
receiver.address.line1SWIFT35O
receiver.address.citySWIFT35M
receiver.address.stateSWIFT35O
receiver.address.postalCodeSWIFT16O
receiver.address.countryISO 3166-1 alpha-22M

Example Request:

{
  "type": "HK_CHATS",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "currency": "HKD",
  "amount": 50000000,
  "customerReference": "INV2026002",
  "paymentDetails": "Payment for invoice 2026002",
  "bankChargeBearer": "SENDER",
  "receiver": {
    "name": "Example Trading Limited",
    "bank": "BKCHHKHHXXX",
    "bankAccountNumber": "012345678901",
    "address": {
      "line1": "1 Garden Road",
      "city": "Hong Kong",
      "country": "HK"
    }
  }
}

TT

Important

  • Currency must be one of: AED, AUD, BHD, BND, CAD, CHF, DKK, EGP, EUR, GBP, HKD, HUF, IDR, INR, JPY, KHR, KRW, KWD, LKR, MUR, MYR, NOK, NPR, NZD, PHP, PLN, QAR, SAR, SEK, SGD, THB, TWD, USD, VND, ZAR.
  • Send the receiver bank's BIC in receiver.bank. Do not send receiver.localRoutingIdentifier.
fieldpattern / charsetmax lengthmandatory/optional
customerReferenceUppercase letters and digits16O
paymentDetailsSWIFT140O
bankChargeBearerSENDER or RECEIVER or SHAREDO
paymentAdviceEmails[N]Valid email address
Example: ["finance@company.com"]
2048 per email (max 6 emails)O
receiver.nameSWIFT70M
receiver.bankBIC1111M
receiver.bankAccountNumberAlphanumeric34M
receiver.address.line1SWIFT35O
receiver.address.citySWIFT35M
receiver.address.stateSWIFT35O
receiver.address.postalCodeSWIFT16O
receiver.address.countryISO 3166-1 alpha-22M

Example Request:

{
  "type": "TT",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "currency": "USD",
  "amount": 2500000,
  "customerReference": "INV2026003",
  "paymentDetails": "Payment for invoice 2026003",
  "bankChargeBearer": "SHARED",
  "receiver": {
    "name": "Example Supplies Pte Ltd",
    "bank": "DBSSSGSGXXX",
    "bankAccountNumber": "0123456789",
    "address": {
      "line1": "1 Example Road",
      "city": "Singapore",
      "postalCode": "123456",
      "country": "SG"
    }
  }
}

Bank references

bankReference is null for HSBC Hong Kong payments sent through the API: HSBC sends no payment reference to use as bankReference. bankReferences has referenceId, HSBC's id for the request, from HSBC's answer to the request.

A completed payment returns:

{
  "bankReference": null,
  "bankReferences": {
    "referenceId": "6f0c2a8e-3b1d-4c5e-9a7f-2d4b6c8e0a1b"
  }
}

On this page