Acme Maybank Singapore Payments (H2H)

This describes validations and allowed data formats for Acme payments going through Maybank MBB Singapore (SWIFT BIC: MBBESGSGXXX). These rules are validated by Acme and further validated by the bank. These rules may be stricter than what the bank requires.

Channel: H2H

  • Batch payments, sent to Maybank as host-to-host (H2H) files. Create them with Create a Batch Payment.
  • Single payments are not supported.

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

General notes

  • Currency must be SGD for FAST, GIRO, and PAYNOW payments. BKTR payments are not restricted to SGD.
  • receiver.bank (FAST and GIRO) is the beneficiary bank's BIC11. Acme validates it as alphanumeric with a maximum of 11 characters.

Field visibility on bank portal and statements

Use this as a guide when deciding the value to populate in each field.

Customer Reference

  • customerReference is an optional field.
  • If not provided, Maybank's core banking system generates a reference ID automatically.
  • Acme suggest to populate the Invoice Number or Document Reference Number that will be sent to the beneficiary in this field.
Maybank field nameWhere it appearsWhat the recipient sees
Debit descriptionYour Maybank statement and the Transaction Reference column on the Maybank M2E portal-
Credit referenceThis reference is sent to the beneficiary's bank and should appear in your beneficiary's bank statementThe value you provide in customerReference or the auto-generated reference ID

Payment Details

  • paymentDetails is an optional field for FAST, PAYNOW, and GIRO payments. It must not be provided for BKTR.
  • It is sent to the beneficiary's bank as additional payment information.
  • Whether the beneficiary sees this value depends on the beneficiary's bank. Not all banks surface this field to account holders.
Maybank field nameWhere it appearsWhat the recipient sees
Payment detailsBeneficiary's bankThe value you provide in paymentDetails. Whether it is shown to the beneficiary depends on the beneficiary's bank.

Purpose codes

Maybank accepts only the purpose codes below for FAST, PAYNOW and GIRO payments. This is shorter than the list published by The Association of Banks in Singapore (ABS): a code that is valid on the ABS list but missing here is rejected by Maybank, and Maybank then rejects the whole payment file.

purposeCodeDescription
BEXPBusiness Expenses
BONUBonus Payment
CBTVCable TV Bill
CCRDCredit Card Payment
CHARCharity Payment
COLLCollection Payment
COMMCommission
CPKCCarpark Charges
CSDBCash Disbursement
DCRDDebit Card Payment
DIVDDividend
DNTSDental Services
EDUCEducation
FCPMPayment of Fees and Charges
FWLVForeign Worker Levy
GDSVPurchase Sale Of Goods And Services
GOVIGovernment Insurance
GSTXGoods & Services Tax
HSPCHospital Care
IHRPInstalment Hire Purchase Agreement
INSUInsurance Premium
INTCIntra Company Payment
INTEInterest
INVSInvestment & Securities
IVPTInvoice Payment
LOANLoan
MDCSMedical Services
NITXNet Income Tax
OTHROther
PHONTelephone Bill
PTXPProperty Tax
RDTXRoad Tax
REBTRebate
REFURefund
RENTRent
SALASalary Payment
STDYStudy
SUPPSupplier Payment
TAXSTax Payment
TBILTelco Bill
TCSCTown Council Service Charges
TRADTrade Services
TREATreasury Payment
TRPTTransport
UBILUtilities Bill
WHLDWith Holding

FAST

  • purposeCode is mandatory for FAST payments, and must be one of Maybank's purpose codes.
  • The maximum amount for FAST payments is SGD 200,000 per transaction.
fieldpattern / charsetmax lengthmandatory/optional
payments[N].customerReferenceSWIFT35O
payments[N].paymentDetailsSWIFT140O
payments[N].purposeCodeAlphanumeric5M
payments[N].receiver.nameSWIFT120M
payments[N].receiver.bankAlphanumeric11M
payments[N].receiver.bankAccountNumberNumeric (digits only)34M

Example Request:

{
  "type": "FAST",
  "paymentDate": "2026-06-30",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV-001",
      "paymentDetails": "Payment for invoice 001",
      "purposeCode": "OTHR",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "DBSSSGSGXXX",
        "bankAccountNumber": "9876543210"
      }
    }
  ]
}

PAYNOW

  • Acme does not validate the proxyValue patterns. Follow the rules specified below to avoid rejection by the bank.
  • receiver.bank and receiver.bankAccountNumber must not be provided.
  • purposeCode is mandatory for PAYNOW payments, and must be one of Maybank's purpose codes.
  • The maximum amount for PAYNOW payments is SGD 200,000 per transaction.
fieldpattern / charsetmax lengthmandatory/optional
payments[N].customerReferenceSWIFT35O
payments[N].paymentDetailsSWIFT140O
payments[N].purposeCodeAlphanumeric5M
payments[N].receiver.nameSWIFT120M
payments[N].receiver.proxyTypeMOBILE or NRIC or UENM
payments[N].receiver.proxyValue (MOBILE)+ followed by up to 15 digits
Example: +6591234567
35M
payments[N].receiver.proxyValue (NRIC)9 uppercase alphanumeric characters
Example: S7800000A
35M
payments[N].receiver.proxyValue (UEN)9 to 13 uppercase alphanumeric characters
Example: 201688888A
35M

Example Request:

{
  "type": "PAYNOW",
  "paymentDate": "2026-06-30",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV-002",
      "paymentDetails": "Payment for invoice 002",
      "purposeCode": "OTHR",
      "receiver": {
        "name": "Tan Ah Kow",
        "proxyType": "MOBILE",
        "proxyValue": "+6591234567"
      }
    }
  ]
}

GIRO

fieldpattern / charsetmax lengthmandatory/optional
payments[N].customerReferenceSWIFT35O
payments[N].paymentDetailsSWIFT140O
payments[N].purposeCodeAlphanumeric5M
payments[N].receiver.nameSWIFT120M
payments[N].receiver.bankAlphanumeric11M
payments[N].receiver.bankAccountNumberNumeric (digits only)34M

Example Request:

{
  "type": "GIRO",
  "paymentDate": "2026-06-30",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV-003",
      "paymentDetails": "Payment for invoice 003",
      "purposeCode": "SALA",
      "receiver": {
        "name": "Tan Ah Kow",
        "bank": "OCBCSGSGXXX",
        "bankAccountNumber": "9876543210"
      }
    }
  ]
}

BKTR

Book transfers move funds between accounts within Maybank SG (MBBESGSGXXX).

  • receiver.bank must not be provided.
  • paymentDetails must not be provided for book transfers.
  • purposeCode must not be provided for book transfers.
fieldpattern / charsetmax lengthmandatory/optional
payments[N].customerReferenceSWIFT35O
payments[N].receiver.nameSWIFT120M
payments[N].receiver.bankAccountNumberNumeric (digits only)34M

Example Request:

{
  "type": "BKTR",
  "paymentDate": "2026-06-30",
  "senderAccountId": "intacc_0H3BQNTQGBW2W",
  "senderAccountCurrency": "SGD",
  "currency": "SGD",
  "payments": [
    {
      "amount": 10000,
      "customerReference": "INV-004",
      "receiver": {
        "name": "Tan Ah Kow",
        "bankAccountNumber": "9876543210"
      }
    }
  ]
}

Payment Response

Payment status definitions:

StatusDescription
PROCESSINGStatus upon creation.
SUBMITTEDPayment file uploaded to Maybank. Awaiting acknowledgment and final confirmation.
COMPLETEDPayment confirmed successful by the bank.
FAILEDPayment rejected by the bank. Check underlyingErrorMessage for details.

Maybank status mapping

Maybank reports its own transaction status in the return file it sends back to Acme.

Acme maps each Maybank status to an Acme payment status.

  • A payment stays SUBMITTED while Maybank reports a non-final status.
  • Acme keeps checking for the latest status until Maybank reports a final status.
Acme statusMaybank transaction statusMaybank description
PROCESSING—Payment created in Acme. Not yet sent to Maybank.
SUBMITTEDSuccessfully Sent to BankPending processing by Maybank or the beneficiary bank.
SUBMITTEDNewPending action from maker.
SUBMITTEDPending VerificationPending action from verifier.
SUBMITTEDPending AuthorisationPending action from authoriser.
SUBMITTEDPending ReleaserPending action from releaser.
COMPLETEDSuccessfulPayment successful.
FAILEDBank RejectedPayment failed at the bank.
FAILEDRejectedPayment rejected by verifier, authoriser, or releaser.
FAILEDStoppedPayment stopped.
FAILEDExpiredTransaction expired after a number of days.
FAILEDDeletedPayment deleted by the maker.
FAILEDReturnedPayment returned by verifier or authoriser.

A Returned payment is final. Maybank cannot accept it again: the maker deletes it in Maybank2E.

  • Treat the payment as failed in your system.
  • To pay again, create a new batch payment with Create a Batch Payment.

On this page