Payment lifecycle and statuses

Every status a payment or batch can have, where approval happens, and how each bank's statuses map to Acme's.

Every payment moves through a set of statuses, from the moment you create it to the bank's final answer. This page explains:

  • The single payment flow and its statuses.
  • The batch payment flow and its statuses.
  • Approval in your bank's portal.
  • Acme maker-checker, an optional approval step at Acme.
  • How each bank's own statuses map to Acme's.

Single payment flow

You create a single payment with Create a Payment (POST /v1/payments). There are two ways to follow its status:

  • Webhooks. Acme sends an event to your endpoint when the payment completes or fails, and at each maker-checker step. See Webhooks and the payment events.
  • Get a Payment. Fetch the payment with Get a Payment (GET /v1/payments/{id}) at any time.

Not every status sends a webhook. For example, PROCESSING and SUBMITTED send none. The Webhook column in each status table shows which do.

Payment status flowYou create a payment with POST /v1/payments. It starts as PROCESSING while Acme sends it to the bank. When the bank accepts it, it is SUBMITTED while the bank processes it straight through or holds it for your approvers in the bank's portal. It ends as COMPLETED or FAILED. Some banks never report that they accepted the payment, or give their final answer straight away, so the payment goes from PROCESSING to COMPLETED or FAILED without SUBMITTED.AT ACMEAT THE BANKFINALPayment createdPOST /v1/paymentsPROCESSINGSent, or with the bankBank acceptsSUBMITTEDBank is processing itWhile SUBMITTED, the bank:• processes it straight through(pre-authorised), or• holds it for your approvers inits portal (re-authorisation).COMPLETEDFAILEDBank confirmsBank rejectsFinal answer, no SUBMITTED stepFinal answer, no SUBMITTED stepFinal statusOnly some banks
Payment statuses. A thick border marks a final status. A dashed arrow is a step only some banks take.

The usual path:

PROCESSING → SUBMITTED → COMPLETED

Other paths:

  • The bank rejects the payment: PROCESSING or SUBMITTED → FAILED.
  • Some banks give their final answer straight away, so the payment goes from PROCESSING to COMPLETED or FAILED without SUBMITTED.
  • Some banks do not report that they accepted the payment, so it stays PROCESSING until their final answer. The bank tables show which.

Payment statuses

StatusWhere the payment isWhat it meansFinal?Webhook
PROCESSINGAcme or the bankAcme is sending it to the bank, or the bank has it but has not yet reported a result.NoNone
SUBMITTEDThe bankThe bank accepted it and is processing it. Acme is waiting for the final answer.NoNone
COMPLETEDThe bankThe bank confirmed the payment.Yespayments.succeeded
FAILEDThe bankThe bank rejected or returned the payment. resultCode says why.Yespayments.failed

If your organization uses Acme maker-checker, a payment can also be PENDING_APPROVAL, APPROVAL_REJECTED or APPROVAL_EXPIRED before it reaches PROCESSING.

  • COMPLETED and FAILED never change. A payment that completed is never marked failed later, and the reverse.
  • If the bank does not answer, the payment usually stays PROCESSING or SUBMITTED. Acme checks with the bank, or Acme's team confirms the result with it.
  • If Acme marks a payment FAILED without a rejection from the bank, for example after an error or an answer Acme cannot read, the bank may still have made it. Contact Acme before you retry the payment. Each bank's table shows where this can happen.
  • A payment can stay SUBMITTED with resultCode REQUEST_TIMEOUT while Acme confirms the result. This resultCode does not mean the payment failed.

Batch payment flow

You create a batch payment with Create a Batch Payment (POST /v1/payment-batches). Acme sends the batch to the bank as one file. The batch and each payment in it have separate statuses.

You can follow these statuses in two ways:

  • Webhooks. Acme sends a batch event when the file is sent or rejected. It also sends payments.succeeded or payments.failed as the bank reports on the payments. One webhook can carry up to 100 payments under objects, as described in Payments in a batch. Each payment includes its id and the batchId of its batch.
  • Polling. Get a Batch Payment (GET /v1/payment-batches/{id}) returns the batch status only. To poll a payment, call Get a Payment with the payment id.

Record each payment ID

  • The create response is the only response that lists the payments in a batch, each with its id.
  • Get a Batch Payment and List Batch Payments do not return the payments, and List Payments cannot filter by batch.
  • If you poll, store each payment id from the create response.
  • If you use webhooks, match each payment event to its batch with batchId.
Batch payment status flowA batch is created with POST /v1/payment-batches. It is PROCESSING while Acme prepares the file or waits to send it. When the file is sent, the batch is SUBMITTED. It is COMPLETED when every payment in it is completed or failed. It is FAILED when the bank rejects the whole file.AT ACMEAT THE BANKFINALBatch createdPOST /v1/payment-batchesPROCESSINGPreparing or waiting to sendFile sentSUBMITTEDBank is processing the fileCOMPLETEDFAILEDEvery payment resolvedWhole file rejected
Batch statuses. A thick border marks a final status. Each payment in the batch also has its own status.
Batch statusWhat it meansFinal?Webhook
PROCESSINGAcme is preparing the file, or waiting to send it.NoNone
SUBMITTEDAcme sent the file to the bank.Nopayment-batches.submitted
COMPLETEDEvery payment in the batch is COMPLETED or FAILED.YesNone
FAILEDThe bank rejected the whole file. Every payment in it is FAILED.Yespayment-batches.rejected

Payments in a batch:

  • PROCESSING: each payment starts here while Acme prepares the file. A 200 answer to the create request means Acme created the batch, not that the bank has made the payments. If a batch stays PROCESSING for more than an hour, contact Acme. Do not send the batch again, as the payments may be made twice.
  • SUBMITTED: each payment moves here when Acme sends the file. Do not send a SUBMITTED payment again. Some banks hold the file for approval in their portal, and some send no further status after approval or after payment. The payment then stays SUBMITTED in Acme, and you can confirm it in the bank's portal or on your bank statement. See each bank's section.
  • COMPLETED or FAILED: each payment moves here as the bank reports on it, and is included in a payments.succeeded or payments.failed webhook. For a failed payment, underlyingErrorMessage holds the bank's reason when the bank provides one. If the bank rejects the whole file, the batch carries the reason.
  • A COMPLETED batch can contain FAILED payments. Check each payment's status, not only the batch status.
  • Batch payments do not go through Acme maker-checker.

Example: a batch of 10 payments

The ACK names and the ACK that is final differ by bank. This example uses ACK1 to ACK3. See Bank status mapping for each bank.

  1. You send 10 payments, 2 of them with an invalid bank code. Acme answers 400 and creates nothing.
  2. You correct the 2 payments and send the batch again. Acme answers 200. The batch and its 10 payments are PROCESSING, and the response lists each payment id.
  3. Acme sends the file to the bank. The batch and its payments move to SUBMITTED, and Acme sends payment-batches.submitted.
  4. The bank accepts the file in ACK1. If the bank rejects the whole file instead, Acme sends payment-batches.rejected, and payments.failed for every payment.
  5. The bank checks each payment in ACK2 and rejects 2 other payments. Those payments move to FAILED and are reported in payments.failed.
  6. The bank accepts the remaining 8 payments in ACK3, its final answer. Those payments move to COMPLETED and are reported in payments.succeeded.
  7. No payment is waiting for the bank, so the batch moves to COMPLETED. Acme sends no webhook for this.

For DBS, when the bank changes a payment's date (ACWC), Acme updates actualPaymentDate. When DBS reports a charge, Acme sets bankChargeAmount and bankChargeCurrency. Acknowledgements from other banks do not change these fields.

Approval at the bank

Your bank can ask for approval in its own portal. This is agreed between you and your bank. There are two set-ups:

  • Straight-through (pre-authorised). The bank processes the payment as soon as it receives it. Nobody approves it in the bank's portal.
  • Re-authorisation. The bank holds the payment until your approvers approve it in the bank's portal, for example DBS IDEAL, OCBC Velocity, HSBCnet, RHB Reflex or Maybank M2E.

While the bank holds the payment, Acme shows SUBMITTED, or PROCESSING for banks that do not report acceptance. When your approver rejects it in the portal, the payment moves to FAILED if the bank reports the rejection to Acme. Each bank table says how that bank handles approval.

Acme maker-checker

Most organizations do not use Acme maker-checker. If Acme has not set it up for you, your payments follow the single payment flow and you can skip this section.

Acme maker-checker is an optional approval step at Acme, before the payment goes to the bank. A payment made by a maker API key waits at Acme until a checker API key approves it. It is separate from approval at the bank, and you can use both.

Acme maker-checker flowA maker API key creates a payment with POST /v1/payments. The payment is PENDING_APPROVAL at Acme. A checker API key approves it with POST /v1/payments/id/approve, and it moves to PROCESSING and continues in the standard flow. A checker API key rejects it with POST /v1/payments/id/reject, and it is APPROVAL_REJECTED. If nobody acts before review.expiresAt, it is APPROVAL_EXPIRED. Rejected and expired payments are never sent to the bank.AT ACME, BEFORE THE BANKFINALMaker API keyPOST /v1/paymentsPENDING_APPROVALWaiting for a checkerChecker API key approvesPOST /v1/payments/{id}/approvePROCESSINGContinues the standard flowChecker API key rejectsPOST /v1/payments/{id}/rejectNobody acts before review.expiresAtAPPROVAL_REJECTEDAPPROVAL_EXPIRED
Acme maker-checker. A thick border marks a final status. An approved payment continues in the single payment flow.

How it works:

  • Acme turns it on for your organization. The set-up names the maker API keys, the checker API keys, and the accounts it covers.
  • If the set-up names no maker keys, every API key is a maker on the covered accounts.
  • A payment created by a maker key on a covered account starts as PENDING_APPROVAL. It is not sent to the bank.
  • A checker key approves it with Approve a Payment or rejects it with Reject a Payment.
  • When the set-up names checker keys, only those keys can approve or reject.
  • The checker key cannot be the key that made the payment.
  • A payment prepared in the dashboard is approved in the dashboard, not with an API key.
  • Approval sends the payment to the bank in the same call. The payment moves to PROCESSING and follows the single payment flow.
  • review.expiresAt on the payment is the approval deadline. The default is 7 days after the payment is created. A payment prepared in the dashboard has 24 hours.
  • Batch payments do not go through Acme maker-checker.
StatusWhat it meansFinal?Webhook
PENDING_APPROVALWaiting for a checker key to approve or reject it.Nopayments.pending-approval
APPROVAL_REJECTEDA checker key rejected it. It was never sent to the bank.Yespayments.approval-rejected
APPROVAL_EXPIREDNobody approved it before review.expiresAt. It was never sent to the bank.Yespayments.approval-expired
PROCESSINGA checker key approved it, and Acme is sending it to the bank.NoNone (see payments.approved below)
  • payments.approved is sent once the checker approves. It carries the payment's status at that moment, which can already be past PROCESSING.
  • A rejected or expired payment has no resultCode.
  • See Maker-checker flow for the webhook payloads.

Bank status mapping

Each bank section below describes how the bank reports on a payment and how Acme maps each report to a payment status.

  • Label: each flow is labelled API for single payments or Batch file for batch payments.
  • Order: each flow lists the bank's answers in the order they arrive.
  • Thick border: marks an answer that can complete the payment. A rejection can also arrive at other steps.
  • Table: the table under each flow gives the Acme status for each answer.
ANZ Australia

Batch payments only, by file. See the ANZ Australia guide.

Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. Status file (pain.002): final on ACSP or RJCT.
ACKBank statusWhat it meansAcme payment statusWebhook
Status fileRJCT (file)ANZ rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no status for each payment.
Status fileRJCTANZ rejected the payment.FAILEDpayments.failed
Status fileACSPANZ accepted the payment. Final.COMPLETEDpayments.succeeded
Status fileAny other codeNot final.SUBMITTEDNone

Approval at the bank

  • Set up with ANZ.
  • Acme shows SUBMITTED until ANZ reports a final status.
Banco Azteca Mexico

Single payments only, by API. See the Banco Azteca Mexico guide.

APISingle payment: BKTR
  1. Submit: final. Banco Azteca answers with the result.
Banco Azteca answerAcme statusWhat it means
SuccessCOMPLETEDThe transfer is done.
Error, no answer, or an answer Acme cannot readFAILEDBanco Azteca rejected the payment, or did not answer. Banco Azteca may still have made the payment. Contact Acme before you retry the payment.
APISingle payment: MX_SPEI
  1. Submit: the payment stays PROCESSING.
  2. Status checks: every minute, then every 5 minutes, until final.
Banco Azteca statusAcme statusWhat it means
SentPROCESSINGBanco Azteca has the payment.
Error, no answer, or an answer Acme cannot read, when Acme sends itFAILEDBanco Azteca may still have made the payment. Contact Acme before you retry the payment.
ENVIADA, EN PROCESO, RECIBIDAPROCESSINGNot final. Acme checks again every minute, then every 5 minutes.
LIQUIDADA, COMPLETADA, ACEPTADACOMPLETEDThe payment settled.
RECHAZADA, CANCELADA, DEVUELTA, NO LIQUIDADA, NO ENCONTRADAFAILEDRejected, cancelled, returned, not settled or not found.
Any other statusPROCESSINGNot final. Acme checks until the 24-hour limit.
  • If Banco Azteca has no final status after 24 hours, Acme marks the payment FAILED.

Approval at the bank

  • Set up with Banco Azteca.
CIMB Singapore

Single payments by API and batch payments by file. See the CIMB API guide and the CIMB H2H guide.

APISingle payment
  1. Submit answer: CIMB accepts or rejects.
  2. CIMB notification: final on a debit notification, or a TT notification Processed, Executed with Failure or Failed.
Payment typeCIMB answerAcme statusWhat it means
FASTACTCSUBMITTEDCIMB accepted the payment.
FASTRJCTFAILEDCIMB rejected the payment.
TTSUCCESSSUBMITTEDCIMB accepted the payment.
TTAny other statusFAILEDCIMB rejected the payment.
BKTR0SUBMITTEDCIMB accepted the payment.
BKTR1FAILEDCIMB rejected the payment.
AnyAny other answer, or no statusPROCESSINGNot final. Contact Acme to confirm the result with CIMB.
AnyHTTP error, or an answer Acme cannot readFAILEDCIMB may still have made the payment. Contact Acme before you retry the payment.
AnyNo answerPROCESSINGNot final. Contact Acme to confirm the result with CIMB.
FAST, BKTRDebit notificationCOMPLETEDCIMB debited your account.
TTRemittance notification ProcessedCOMPLETEDCIMB sent the payment.
TTRemittance notification Executed with Failure or FailedFAILEDThe payment failed.
  • The final status comes from CIMB's notifications. Acme does not ask CIMB for it.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. PSR-1: file checks. A payment ACSC or RJCT waits for a later PSR.
  3. PSR-2 to PSR-10: final on ACSC or RJCT.
ACKBank statusWhat it meansAcme payment statusWebhook
Any PSRRJCT (file)CIMB rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no status for each payment.
Any PSRRCVD, ACCP, ACSP, PDNGReceived, accepted or pending. Not final.SUBMITTEDNone
PSR-2 or laterACSCThe payment settled. Final.COMPLETEDpayments.succeeded
PSR-2 or laterRJCTCIMB rejected the payment.FAILEDpayments.failed
  • ACSC or RJCT for a payment in PSR-1 is not applied. Acme waits for a later report.

Approval at the bank

  • Set up with CIMB.
Citibank (all countries)

Single payments by API for Singapore PAYNOW and Malaysia MY_DUITNOW. Batch payments by file in every Citi country. See the Citibank guides, for example Citibank Singapore.

APISingle payment
  1. Submit answer: final on ACSP, ACSC or RJCT.
  2. Status checks: final on ACSP, ACSC or RJCT.
Citi statusAcme statusWhat it means
ACTC, ACCP, PDNGPROCESSINGAccepted or pending. Acme keeps checking.
ACSP, ACSCCOMPLETEDThe payment settled or is settling.
RJCTFAILEDCiti rejected the payment.
HTTP error, or no answer, at submitPROCESSINGNot final. Acme keeps checking with Citi.
No record of the payment after repeated checksFAILEDCiti did not receive the payment.
An answer Acme cannot match to the payment, after repeated checksFAILEDAcme could not confirm the payment with Citi.
Any other codePROCESSINGNot final. Acme keeps checking.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. FILE: file checks.
  3. TXN: final on ACSP or RJCT.
ACKBank statusWhat it meansAcme payment statusWebhook
FILERJCT (file)Citi rejected the whole file.FAILEDpayments.failed for each payment, and payment-batches.rejected
FILEAny other codeCiti accepted the file.SUBMITTEDNone
TXNRJCTCiti rejected the payment.FAILEDpayments.failed
TXNACCP, ACWCAccepted. Not final.SUBMITTEDNone
TXNACSPFinal acceptance from Citi.COMPLETEDpayments.succeeded
TXNAny other codeNot applied.SUBMITTEDNone

Approval at the bank

  • Set up with Citi.
DBS Singapore

Single payments by API and batch payments by file. See the DBS API guide and the DBS H2H guide.

APISingle payment: FAST and PAYNOW
  1. Submit answer: final on ACTC, ACWC or RJCT.
  2. Status checks: final on ACTC, ACWC or RJCT. Up to 3, 5 minutes apart.
DBS statusAcme statusWhat it means
ACTC, ACWCCOMPLETEDDBS accepted the payment.
RJCTFAILEDDBS rejected the payment.
PDNGSUBMITTEDPending. Acme checks again, up to 3 times.
RJCT with A005 or A009SUBMITTEDDBS planned downtime. Acme checks again, up to 3 times.
No answerSUBMITTEDAcme checks again, up to 3 times.
ACSP, ACCP, PART in the submit answerFAILEDDBS does not send these here. Contact Acme before you retry the payment.
  • After the last check, the payment stays SUBMITTED and Acme's team confirms the result with DBS.
APISingle payment: ACT, MEPS and TT
  1. Submit answer: ACTC, DBS received the payment.
  2. Status checks: only after PDNG or planned downtime. Up to 3, 5 minutes apart.
  3. ACK2: ACCP or ACWC is not final. RJCT is final.
  4. ACK3: final.
DBS statusAcme statusWhat it means
ACTC in the first answerSUBMITTEDDBS received the payment. The result comes later.
RJCT in the first answerFAILEDDBS rejected the payment.
PDNG, or RJCT with A005 or A009SUBMITTEDPending or planned downtime. Acme checks again, up to 3 times.
ACWC, ACSP, ACCP, PART in the first answerFAILEDDBS does not send these in the first answer. Contact Acme before you retry the payment.
ACCP, ACWC in ACK2SUBMITTEDAccepted. Not final yet.
ACSP, ACWC in ACK3COMPLETEDFinal acceptance from DBS.
RJCT in ACK2 or ACK3FAILEDDBS rejected the payment.
  • After the last check, the payment stays SUBMITTED and Acme's team confirms the result with DBS.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. ACK1: file checks.
  3. ACK2: payment checks. RJCT is final, ACCP or ACWC is not.
  4. ACK3: final. With approval in IDEAL, it comes after approval.
ACKBank statusWhat it meansAcme payment statusWebhook
ACK1ACTC (file)DBS accepted the file.SUBMITTEDNone
ACK1RJCT (file)DBS rejected the whole file.FAILEDpayments.failed for each payment, and payment-batches.rejected
ACK2ACCP, ACWCAccepted. Not final.SUBMITTEDNone
ACK2RJCTDBS rejected the payment.FAILEDpayments.failed
ACK2, ACK3PDNGPending.SUBMITTEDNone
ACK3ACCP, ACWCFinal acceptance from DBS.COMPLETEDpayments.succeeded
ACK3RJCTDBS rejected the payment.FAILEDpayments.failed
ACK2, ACK3Any other codeNot applied.SUBMITTEDNone

Approval at the bank

  • Files are sent straight-through (STP) or for approval in DBS IDEAL. Acme sets this for your organization.
  • With approval in IDEAL, DBS sends ACK2 before approval and ACK3 after it. Payments stay SUBMITTED until your approvers act.
  • If nobody approves the payments in IDEAL, they stay SUBMITTED.
Deutsche Bank Singapore

Batch payments only, by file. See the Deutsche Bank Singapore guide.

Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. Status file: final. It comes before approval in Deutsche Bank's portal.
ACKBank statusWhat it meansAcme payment statusWebhook
Status fileRJCT (file)Deutsche Bank rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no rejection for each payment.
Status fileRJCTDeutsche Bank rejected the payment.FAILEDpayments.failed
Status fileACCPDeutsche Bank accepted the payment. Final.COMPLETEDpayments.succeeded
Status fileAny other codeNot applied.SUBMITTEDNone

Approval at the bank

  • Deutsche Bank sends one status file. It arrives before your approvers act in Deutsche Bank's web portal.
  • Acme marks a payment COMPLETED when that file accepts it. Approval in the portal happens after that.
  • Deutsche Bank sends no later file for a payment that is not approved, rejected by the beneficiary bank, or returned. Check those in Deutsche Bank's portal.
HSBC Hong Kong, Malaysia, Singapore and Vietnam

Single payments by API in Hong Kong and Malaysia. Batch payments by file in Singapore, Malaysia, Hong Kong and Vietnam. See the HSBC guides for Singapore, Hong Kong (API), Hong Kong (H2H), Malaysia and Vietnam.

APISingle payment: Hong Kong
  1. Submit answer: final on ACSC, RJCT or a refusal.
  2. Status checks: final on ACSC or RJCT.
HSBC statusAcme statusWhat it means
ACSCCOMPLETEDThe payment settled.
RJCTFAILEDHSBC rejected the payment.
HTTP 400, 401, 403, 405, 406 or 415, a maintenance answer (503 RJCT), or a 429 "API calls exceeded", at submitFAILEDHSBC refused the request and did not process it.
ACCP, ACSP, ACTC, ACWC, PART, PDNGSUBMITTEDNot final. Acme keeps checking.
No answer, any other HTTP error, or any other codeSUBMITTEDAcme keeps checking for up to 1 day (HK_FPS), 7 days (HK_CHATS) or 10 days (TT). Then Acme's team confirms the result.
HSBC answers that it has no record of the payment, 3 times in a row over at least 10 minutesFAILEDHSBC did not receive the payment. Acme applies this only when it holds HSBC's reference for the payment. Without it, Acme's team confirms the result with HSBC.
APISingle payment: Malaysia
  1. Submit answer: final on ACCP, ACSP, ACSC or RJCT.
  2. Status checks: final on ACCP, ACSP, ACSC or RJCT.
HSBC statusAcme statusWhat it means
ACTC, ACWC, PART, PDNGPROCESSINGNot final. Acme keeps checking.
ACCP, ACSP, ACSCCOMPLETEDHSBC accepted the payment.
RJCTFAILEDHSBC rejected the payment.
Any other code, at a status checkPROCESSINGAcme keeps checking.
Any other code, at submitPROCESSINGNot final. Acme's team confirms the result with HSBC.
HTTP error, no answer, or an answer Acme cannot read, at submitFAILEDHSBC may still have made the payment. Contact Acme before you retry the payment.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. ACK1: file checks. Completes a payment only on ACSC.
  3. ACK2: payment checks. Completes a payment only on ACSC.
  4. Interim ACK2: only for files approved in HSBCnet, after the final approval. Completes a payment only on ACSC.
  5. ACK3: final for most types.
  6. ACK4: final for the types listed below.

The final ACK depends on the payment type:

  • ACK4 is final for Singapore FAST and PAYNOW, Malaysia MY_DUITNOW, and every Hong Kong and Vietnam type.
  • ACK3 is final for every other type.
  • Singapore FAST and PAYNOW have no ACK3.
ACKBank statusWhat it meansAcme payment statusWebhook
Any ACKRJCT (file)HSBC rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no rejection for each payment.
Any ACKRJCTHSBC rejected the payment.FAILEDpayments.failed
Any ACKACSCThe payment settled. Final.COMPLETEDpayments.succeeded
ACK2, interim ACK2, or an ACK before the final oneACCP, ACSP, ACWCAccepted. Not final.SUBMITTEDNone
Final ACK (ACK3 or ACK4)ACCP, ACSP, ACWCFinal acceptance from HSBC.COMPLETEDpayments.succeeded
Any ACKAny other codeNot final.SUBMITTEDNone

Approval at the bank

  • Hong Kong API payments are always sent pre-authorised (straight-through).
  • Malaysia API payments, and files in every country, carry an authorisation type that Acme sets for each account. Approval in HSBCnet follows what you agreed with HSBC.
  • For files approved in HSBCnet, HSBC sends an interim ACK2 after the final approval. Payments stay SUBMITTED until the final ACK.
Maybank Singapore

Batch payments only, by file. See the Maybank Singapore guide.

Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. ACK: file checks. Rejected lines fail.
  3. RTN: each payment's status. Final on Successful or a failure status.
ACKBank statusWhat it meansAcme payment statusWebhook
ACKNo line acceptedMaybank rejected the whole file.FAILEDpayments.failed for each payment, and payment-batches.rejected
ACKSome lines rejectedOnly the payments on those lines failed.FAILEDpayments.failed
ACKEvery line acceptedMaybank accepted the file.SUBMITTEDNone
RTNSuccessfully Sent to BankPending processing by Maybank.SUBMITTEDNone
RTNNew, Pending Verification, Pending Authorisation, Pending ReleaserWaiting for your approvers in Maybank M2E.SUBMITTEDNone
RTNReturnedReturned in Maybank M2E. Not final.SUBMITTEDNone
RTNSuccessfulThe payment succeeded.COMPLETEDpayments.succeeded
RTNBank Rejected, Rejected, Stopped, Expired, DeletedThe payment failed or was stopped.FAILEDpayments.failed
RTNAny other statusNot applied.SUBMITTEDNone

Approval at the bank

  • Payments wait in Maybank M2E for your approvers. The statuses New to Pending Releaser are steps in that workflow.
  • Payments stay SUBMITTED while they wait in that workflow.
OCBC Singapore

Single payments by API for PAYNOW. Batch payments by file. See the OCBC Singapore guide.

APISingle payment: PAYNOW
  1. Submit answer: final.
OCBC answerAcme statusWhat it means
Success is trueCOMPLETEDOCBC made the payment.
Success is falseFAILEDOCBC rejected the payment.
No answer (timeout)SUBMITTEDresultCode is REQUEST_TIMEOUT. Acme's team confirms the result with OCBC.
HTTP error, or an answer Acme cannot readFAILEDOCBC may still have made the payment. Contact Acme before you retry the payment.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. ACK1 or NACK1: file checks. Completes a payment only on ACSC.
  3. ACK2 or NACK2: payment checks. Completes a payment only on ACSC.
  4. RET: final.
ACKBank statusWhat it meansAcme payment statusWebhook
Any fileRJCT (file)OCBC rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no rejection for each payment.
Any fileRJCTOCBC rejected the payment.FAILEDpayments.failed
Any fileACSCThe payment settled. Final.COMPLETEDpayments.succeeded
Any file before RETACCP, ACSP, ACWCAccepted. Not final.SUBMITTEDNone
RETACCP, ACSP, ACWCFinal acceptance from OCBC.COMPLETEDpayments.succeeded
Any fileAny other codeNot final.SUBMITTEDNone
  • OCBC also sends NACK3 when your approvers reject a payment in Velocity. Acme does not read NACK3 yet.

Approval at the bank

  • Files wait for your approvers in OCBC Velocity.
  • OCBC sends no status file while a payment waits for approval. Payments stay SUBMITTED until then.
  • A payment your approvers reject in Velocity stays SUBMITTED. Acme does not yet read OCBC's rejection file. Contact Acme to close the payment.
RHB Malaysia

Single payments only, by API through RHB Reflex. See the RHB Malaysia guide.

APISingle payment
  1. Submit answer: final on 05, 03 or 06, or when RHB refuses the request.
  2. Status checks: every hour until final.

First answer

RHB statusRHB meaningAcme status
01SuccessfulSUBMITTED
02Successful with reasonSUBMITTED
03UnsuccessfulFAILED
04Pending pre-authorisationSUBMITTED
05Pre-authorisation posting successfulCOMPLETED
06Pre-authorisation unsuccessfulFAILED
07Pre-authorisation timeoutSUBMITTED, with resultCode REQUEST_TIMEOUT
Error code from RHB ReflexRHB rejected the requestFAILED
HTTP 4xx or 503 with no RHB codeRHB refused the requestFAILED
No answer, or another HTTP 5xxOutcome not knownSUBMITTED, with resultCode REQUEST_TIMEOUT

Later checks

Acme checks every hour. After a timeout, the first check is after 5 minutes.

RHB statusRHB meaningAcme status
1, 11, 13, 18Pending, transmitting, pending status update, pending authoriserSUBMITTED
2, 3, 17Processed, successful, cycle completedCOMPLETED
4, 7, 8, 10, 12, 19Unsuccessful, expired, aborted, stopped, rejected, rejected by authoriserFAILED

Approval at the bank

  • Pre-authorisation (straight-through) is set for each account, on RHB's side and on Acme's.
  • With pre-authorisation, RHB gives the final result in its first answer (05 or 06).
  • Without it, the payment waits for your authorisers in RHB Reflex and stays SUBMITTED. An authoriser rejection (19) fails the payment with resultCode REJECTED_BY_APPROVER.
Standard Chartered

Single payments by API in Hong Kong, Singapore, the UK, India and the UAE. Batch payments by file in Singapore, the UK and India. See the Standard Chartered guides, for example Singapore API and Singapore H2H.

APISingle payment
  1. Submit answer: final on Completed or Rejected.
  2. Notification or status checks: final on a completed or rejected code.
Standard Chartered statusAcme statusWhat it means
Completed in the first answerCOMPLETEDThe payment is done.
Pending in the first answerPROCESSINGNot final. The result comes later.
Rejected in the first answerFAILEDStandard Chartered rejected the payment.
No answer (timeout)PROCESSINGAcme confirms the result with Standard Chartered.
HTTP error, or an answer Acme cannot readFAILEDFor an HTTP 5xx or an unreadable answer, Standard Chartered may still have made the payment. Contact Acme before you retry the payment.
2, 62PROCESSINGPending.
64COMPLETEDProcessed and sent to the other bank. Not for Hong Kong FPS.
64 for Hong Kong FPSPROCESSINGNot final. Waits for 69.
69COMPLETEDCompleted.
48FAILEDReturned. In Hong Kong, resultCode is RETURNED. Elsewhere it is OTHERS.
10, 11, 12, 44, 46, 72, 75, 102FAILEDRejected or stopped.
  • Standard Chartered reports later statuses by notification.
  • For some payment types, Acme also checks the status with Standard Chartered.
Batch fileBatch payment
  1. File sent: payments are SUBMITTED.
  2. ACK1: file checks.
  3. ACK2: report with only ACCP or PDNG rows. Not final.
  4. ACK3: report with any row other than ACCP or PDNG. Final for ACCP, ACSP and RJCT rows. PDNG rows wait.
ACKBank statusWhat it meansAcme payment statusWebhook
Any ACKRJCT (file)Standard Chartered rejected the whole file.FAILEDpayments.failed for each payment. payment-batches.rejected when the file has no status for each payment.
Any ACKPDNGPending.SUBMITTEDNone
ACK2ACCPAccepted. Not final.SUBMITTEDNone
ACK3ACCP, ACSPFinal acceptance.COMPLETEDpayments.succeeded
ACK3RJCTStandard Chartered rejected the payment.FAILEDpayments.failed

Approval at the bank

  • Set up with Standard Chartered in Straight2Bank.
UOB Singapore and Malaysia

Single payments by API and batch payments by file. See the UOB Singapore guide and the UOB Malaysia guide.

APISingle payment: Singapore
  1. Submit answer: final on 000000 or a rejection.
  2. Status checks: debit notification, status enquiry, then transaction history search.
UOB codeAcme statusWhat it means
000000COMPLETEDUOB made the payment.
A code UOB lists as rejected, an HTTP 4xx, or a request never sentFAILEDUOB rejected or never received the payment.
A pending or unknown code, or no answerSUBMITTEDAcme checks with UOB for about 2 days. Then Acme's team confirms the result.
UOB has no record of the payment after repeated checksFAILEDUOB did not receive the payment.
UOB credits the debit backFAILEDThe payment did not go through.
APISingle payment: Malaysia
  1. Submit answer: final on 000000 or a rejection.
  2. Status checks: status enquiry, with transaction history and debit notifications to confirm UOB has no record.
UOB codeAcme statusWhat it means
000000COMPLETEDUOB made the payment.
U000, U002, U999, TM9998, TM9999, ER9998, ER9999, or no codeSUBMITTEDNot final. Acme checks with UOB.
No answer, or an HTTP 5xxSUBMITTEDAcme checks with UOB for about 2 days. Then Acme's team confirms the result.
Any other code, an HTTP 4xx, or a request never sentFAILEDUOB rejected or never received the payment.
UOB has no record of the payment after repeated checksFAILEDUOB did not receive the payment.
Batch fileBatch payment: Singapore, and Malaysia MY_IBG, MY_RENTAS, MY_IAFT and TT
  1. File sent: payments are SUBMITTED.
  2. ACK1 to ACK4: each payment is final on its first ACCP or RJCT.
ACKBank statusWhat it meansAcme payment statusWebhook
Any ACKRJCT (file)UOB rejected the whole file.FAILEDpayments.failed for each payment, and payment-batches.rejected
Any ACKRJCTUOB rejected the payment.FAILEDpayments.failed
Any ACKACCPUOB accepted the payment. Final.COMPLETEDpayments.succeeded
Any ACKAny other codeNot applied.SUBMITTEDNone
Batch fileBatch payment: Malaysia MY_DUITNOW and MY_IBFT
  1. File sent: payments are SUBMITTED.
  2. ACK1: UOB received the file.
  3. ACK2: file checks.
  4. ACK3: accepted. Not final.
  5. O1 result file: final.
ACKBank statusWhat it meansAcme payment statusWebhook
ACK1RCVDUOB received the file.SUBMITTEDNone
ACK2, ACK3RJCTUOB rejected the whole file.FAILEDpayments.failed for each payment, and payment-batches.rejected
ACK3ACTC, ACCPAccepted. Not final.SUBMITTEDNone
O1Result 0The payment cleared.COMPLETEDpayments.succeeded
O1Result 1The payment did not clear.FAILEDpayments.failed

Approval at the bank

  • Files are sent straight-through or as interoperability files. Acme sets this for your organization.
  • Approval rules in UOB Infinity are set up with UOB.
Zand UAE

Single payments only, by API. See the Zand UAE guide.

APISingle payment
  1. Submit answer: final on COMPLETED, PROCESSED, REJECTED or REVERSED.
  2. Zand notification: final.
Zand statusAcme statusWhat it means
INITIATEDPROCESSINGZand is processing the payment.
COMPLETED, PROCESSEDCOMPLETEDThe payment is done.
REJECTED, REVERSEDFAILEDZand rejected the payment, or reversed it before it completed.
HTTP error, no answer, or an answer Acme cannot readFAILEDZand may still have made the payment. Contact Acme before you retry the payment.
  • Acme does not check the status with Zand. If no notification comes, the payment stays PROCESSING. Contact Acme to confirm the result.

Approval at the bank

  • Set up with Zand.

ISO 20022 status codes

Many banks use ISO 20022 status codes:

CodeMeaning
RCVDReceived
ACTCAccepted after technical checks
ACCPAccepted after customer profile checks
ACSPAccepted, settlement in process
ACSCAccepted, settlement completed
ACWCAccepted with changes, for example a new date
PDNGPending
PARTSome payments in the file accepted
RJCTRejected

When a bank rejects a whole file (RJCT at file level), every payment in the batch usually moves to FAILED. Some banks also report each payment in a rejected file. The outcome can then differ by payment.

Batch file acknowledgements at a glance

For batch payments, each bank sends acknowledgement files (ACKs) for the file it receives. An acceptance is final only in the ACK this table names. A rejection can come earlier, except that CIMB applies a payment rejection only in PSR-2 or later, and Standard Chartered only in ACK3.

BankACK sequenceFinal acceptance comes in
ANZ Australiapain.002 status filesAny status file (ACSP)
CIMB SingaporePSR-1 to PSR-10PSR-2 or later
CitibankFILE → TXNTXN (ACSP)
DBS SingaporeACK1 → ACK2 → ACK3ACK3
Deutsche Bank SingaporeOne status fileThe status file
HSBCACK1 → ACK2 → interim ACK2 (after approval in HSBCnet) → ACK3 and/or ACK4, by payment typeACK3 or ACK4, by payment type
Maybank SingaporeACK → RTNRTN
OCBC SingaporeACK1 or NACK1 → ACK2 or NACK2 → RETRET
Standard CharteredACK1 → ACK2 → ACK3ACK3
UOB Singapore and MalaysiaACK1 → ACK2 → ACK3 → ACK4The first ACK with ACCP for the payment
UOB Malaysia MY_DUITNOW and MY_IBFTACK1 → ACK2 → ACK3 → O1O1

On this page