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
- The 26 uppercase Latin letters
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
customerReferenceis 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 name | Where it appears | What the recipient sees |
|---|---|---|
| Debit description | Your Maybank statement and the Transaction Reference column on the Maybank M2E portal | - |
| Credit reference | This reference is sent to the beneficiary's bank and should appear in your beneficiary's bank statement | The value you provide in customerReference or the auto-generated reference ID |
Payment Details
paymentDetailsis 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 name | Where it appears | What the recipient sees |
|---|---|---|
| Payment details | Beneficiary's bank | The 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.
| purposeCode | Description |
|---|---|
BEXP | Business Expenses |
BONU | Bonus Payment |
CBTV | Cable TV Bill |
CCRD | Credit Card Payment |
CHAR | Charity Payment |
COLL | Collection Payment |
COMM | Commission |
CPKC | Carpark Charges |
CSDB | Cash Disbursement |
DCRD | Debit Card Payment |
DIVD | Dividend |
DNTS | Dental Services |
EDUC | Education |
FCPM | Payment of Fees and Charges |
FWLV | Foreign Worker Levy |
GDSV | Purchase Sale Of Goods And Services |
GOVI | Government Insurance |
GSTX | Goods & Services Tax |
HSPC | Hospital Care |
IHRP | Instalment Hire Purchase Agreement |
INSU | Insurance Premium |
INTC | Intra Company Payment |
INTE | Interest |
INVS | Investment & Securities |
IVPT | Invoice Payment |
LOAN | Loan |
MDCS | Medical Services |
NITX | Net Income Tax |
OTHR | Other |
PHON | Telephone Bill |
PTXP | Property Tax |
RDTX | Road Tax |
REBT | Rebate |
REFU | Refund |
RENT | Rent |
SALA | Salary Payment |
STDY | Study |
SUPP | Supplier Payment |
TAXS | Tax Payment |
TBIL | Telco Bill |
TCSC | Town Council Service Charges |
TRAD | Trade Services |
TREA | Treasury Payment |
TRPT | Transport |
UBIL | Utilities Bill |
WHLD | With Holding |
FAST
purposeCodeis mandatory forFASTpayments, and must be one of Maybank's purpose codes.- The maximum amount for FAST payments is SGD 200,000 per transaction.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| payments[N].customerReference | SWIFT | 35 | O |
| payments[N].paymentDetails | SWIFT | 140 | O |
| payments[N].purposeCode | Alphanumeric | 5 | M |
| payments[N].receiver.name | SWIFT | 120 | M |
| payments[N].receiver.bank | Alphanumeric | 11 | M |
| payments[N].receiver.bankAccountNumber | Numeric (digits only) | 34 | M |
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
proxyValuepatterns. Follow the rules specified below to avoid rejection by the bank. receiver.bankandreceiver.bankAccountNumbermust not be provided.purposeCodeis mandatory forPAYNOWpayments, and must be one of Maybank's purpose codes.- The maximum amount for PAYNOW payments is SGD 200,000 per transaction.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| payments[N].customerReference | SWIFT | 35 | O |
| payments[N].paymentDetails | SWIFT | 140 | O |
| payments[N].purposeCode | Alphanumeric | 5 | M |
| payments[N].receiver.name | SWIFT | 120 | M |
| payments[N].receiver.proxyType | MOBILE or NRIC or UEN | M | |
| payments[N].receiver.proxyValue (MOBILE) | + followed by up to 15 digits Example: +6591234567 | 35 | M |
| payments[N].receiver.proxyValue (NRIC) | 9 uppercase alphanumeric characters Example: S7800000A | 35 | M |
| payments[N].receiver.proxyValue (UEN) | 9 to 13 uppercase alphanumeric characters Example: 201688888A | 35 | M |
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
purposeCodeis mandatory forGIROpayments, and must be one of Maybank's purpose codes.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| payments[N].customerReference | SWIFT | 35 | O |
| payments[N].paymentDetails | SWIFT | 140 | O |
| payments[N].purposeCode | Alphanumeric | 5 | M |
| payments[N].receiver.name | SWIFT | 120 | M |
| payments[N].receiver.bank | Alphanumeric | 11 | M |
| payments[N].receiver.bankAccountNumber | Numeric (digits only) | 34 | M |
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.bankmust not be provided.paymentDetailsmust not be provided for book transfers.purposeCodemust not be provided for book transfers.
| field | pattern / charset | max length | mandatory/optional |
|---|---|---|---|
| payments[N].customerReference | SWIFT | 35 | O |
| payments[N].receiver.name | SWIFT | 120 | M |
| payments[N].receiver.bankAccountNumber | Numeric (digits only) | 34 | M |
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:
| Status | Description |
|---|---|
PROCESSING | Status upon creation. |
SUBMITTED | Payment file uploaded to Maybank. Awaiting acknowledgment and final confirmation. |
COMPLETED | Payment confirmed successful by the bank. |
FAILED | Payment 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
SUBMITTEDwhile Maybank reports a non-final status. - Acme keeps checking for the latest status until Maybank reports a final status.
| Acme status | Maybank transaction status | Maybank description |
|---|---|---|
PROCESSING | — | Payment created in Acme. Not yet sent to Maybank. |
SUBMITTED | Successfully Sent to Bank | Pending processing by Maybank or the beneficiary bank. |
SUBMITTED | New | Pending action from maker. |
SUBMITTED | Pending Verification | Pending action from verifier. |
SUBMITTED | Pending Authorisation | Pending action from authoriser. |
SUBMITTED | Pending Releaser | Pending action from releaser. |
COMPLETED | Successful | Payment successful. |
FAILED | Bank Rejected | Payment failed at the bank. |
FAILED | Rejected | Payment rejected by verifier, authoriser, or releaser. |
FAILED | Stopped | Payment stopped. |
FAILED | Expired | Transaction expired after a number of days. |
FAILED | Deleted | Payment deleted by the maker. |
FAILED | Returned | Payment 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.