Home/SWIFT Status Codes
pacs.002 Reference · ISO 20022

SWIFT gpi status codes
ACSP, ACSC, ACCC, RJCT explained.

As your wire travels from your bank to the beneficiary's bank, each bank along the way publishes a short status update tied to the UETR tracking number. SWIFT uses a fixed set of short codes for these updates — ACSP (in flight), ACSC (arrived), ACCC (credited), PDNG (held for review), RJCT (rejected). Your bank's online portal usually shows you the same information using friendlier wording like "in transit", "credited", or "on hold".

7 standard codes tell you exactly where the wire is — in flight, arrived, credited, held, or rejected
Rejection reason codes (AC01 for wrong account, AC04 for closed account, etc.) tell you why a wire bounced, so you can fix it
Bank wording differs — "in transit" at one bank, "processing" at another, "with correspondent" at a third are all the same underlying code (ACSP)

Trace a SWIFT transfer

Supported public tracker lookup. Free preview.

AI Monitor

Read-only request. We do not move, custody, or interact with transaction funds.

pacs.002 at a glance

A quick reference for pacs.002 — the ISO 20022 message that carries every status code between banks.

Message typepacs.002
PurposePayment status report
StandardISO 20022 · CBPR+
Keyed byUETR (36-char UUID v4)
Why pacs.002 matters

pacs.002 is how banks tell other banks (and the gpi Tracker) what happened to a payment. Without pacs.002 there is no end-to-end visibility — only the sending bank's local view. ISO 20022's CBPR+ migration (November 2025) makes pacs.002 the cross-border standard for status reporting.

Status flow

ACSPIn flight
→ ACSCAt beneficiary bank
→ ACCCCredited
⤿ PDNGHeld in review
✗ RJCTReturned
Happy path: ACSP → ACSC → ACCC. Snag paths: PDNG (compliance hold), ACWC (modified), ACWP (held at beneficiary), RJCT (rejected).

Decode a SWIFT status code

Type a SWIFT code (ACSP, ACSC…) or a bank-portal label ("in transit", "credited", "on hold") to see what it really means.

Try: ACSP, ACCC, in transit, credited, on hold, rejected

Match: Direct SWIFT code
ACSPAcceptedSettlementInProcess

Your wire is in flight.

What to do

Wait. ACSP is exactly what you want to see for the first 4–24 hours of an international wire. If your wire has been ACSP for more than a day, ask your bank which bank in the chain it's sitting at — that's where the hold-up is.

How this works: the decoder maps both the underlying ISO 20022 ExternalStatusCode1Code values and the most common bank-portal customer-facing labels back to the same canonical SWIFT code. The translation list is built from observed wording at HSBC, Citi, JPMorgan Chase, Deutsche Bank, BNY Mellon, Santander and Standard Chartered.

The seven SWIFT gpi status codes

Each code explained — what it means at the SWIFT level, what to do next, and how your bank may relabel it.

ACSPAcceptedSettlementInProcessYour wire is in flight.

Your bank has dispatched the wire and it's moving through the chain of banks toward the beneficiary. It hasn't been credited yet — this is the normal in-between state for a wire that's been sent but hasn't landed.

What to do

Wait. ACSP is exactly what you want to see for the first 4–24 hours of an international wire. If your wire has been ACSP for more than a day, ask your bank which bank in the chain it's sitting at — that's where the hold-up is.

What your bank may call it

Your bank's portal may show this as: "In transit", "In progress", "Sent", "Processing at correspondent", or "With correspondent bank".

ACSCAcceptedSettlementCompletedYour wire has reached the beneficiary's bank.

The money has moved out of the last go-between bank and into the beneficiary's bank — but the bank hasn't necessarily credited the beneficiary's own account yet. Banks often process incoming wires in scheduled batches, so there is usually a delay between the bank receiving the money and the beneficiary seeing it as a credit on their statement.

What to do

Almost there. If the beneficiary tells you the money isn't in their account yet, ask them what time their bank posts incoming wires — some banks only credit incoming wires once or twice a business day.

What your bank may call it

Your bank's portal may show this as: "Settled", "Delivered to beneficiary bank", or "Reached beneficiary bank".

ACCCAcceptedSettlementCompletedCreditorAccountThe money is in the beneficiary's account. Done.

The beneficiary's bank has credited the money to their account. This is the strongest "complete" status SWIFT's tracker reports — the wire has landed.

What to do

Payment is complete. If the beneficiary still claims they don't see it, ask them to double-check the exact account number you wired to and the value date. Sometimes credits show up on the next business day even though the bank received them earlier.

What your bank may call it

Your bank's portal may show this as: "Credited", "Completed", "Funds credited to beneficiary", or "Successful".

ACWCAcceptedWithChangeAccepted, but something changed along the way.

The wire is going through, but one of the banks in the chain modified something — typically a fee was deducted, the currency was converted, or the value date was shifted by a day. The beneficiary will receive a slightly different amount or on a slightly different date than you instructed.

What to do

Check which bank made the change and what changed. Most often it's a correspondent bank deducting a fee (when charges are set to SHA — "shared"), an FX conversion, or a value-date adjustment over a weekend.

What your bank may call it

Your bank's portal may show this as: "Accepted with modification", "Fee deducted", or "Currency converted".

ACWPAcceptedWithoutPostingThe beneficiary's bank has the money but is holding it.

The wire reached the beneficiary's bank, but the bank hasn't yet credited the beneficiary's account. This usually means the bank wants something from the beneficiary first — extra paperwork, an ID document, or a compliance check.

What to do

Tell the beneficiary to contact their bank. The bank is sitting on the money waiting for the beneficiary to take an action — they likely have an unread message or unread request from the bank.

What your bank may call it

Your bank's portal may show this as: "On hold", "Pending posting", "Awaiting beneficiary action", or "Under review".

PDNGPendingA bank in the chain is reviewing the wire.

Somewhere in the chain, a bank has paused the wire for a compliance check — most commonly a sanctions screen (the OFAC, EU, or UK sanctions lists). It can also be a missing piece of information about a bank in the chain, or a question the sending bank needs to answer.

What to do

Ask your bank: "Which bank in the chain is showing PDNG, and what do they need?" If it's a sanctions check, they'll usually ask you for documentation about the beneficiary or the reason for the payment.

What your bank may call it

Your bank's portal may show this as: "Pending", "Under compliance review", "Pending screening", or "Hold for review".

RJCTRejectedThe wire bounced. The money is coming back.

One of the banks rejected the wire. The money will be returned to your account (via a separate return message — usually within 1–3 business days). The tracker also carries a reason code that tells you exactly why.

What to do

Ask your bank for the reason code. The most common ones: AC01 means the beneficiary account number is wrong, AC04 means the account is closed, AM05 means the bank thinks it's a duplicate, RC01 means a wrong bank code (BIC). Fix the issue and re-send.

What your bank may call it

Your bank's portal may show this as: "Rejected", "Failed", "Returned", or "Unable to credit".

Why your bank's portal uses different wording

SWIFT uses a short list of fixed codes — ACSP, ACSC, ACCC, ACWC, ACWP, PDNG, RJCT — but each bank rewrites them into plain English (or whatever language) for their customers. "In transit" at HSBC, "Processing" at Citi, "With correspondent" at JPMorgan, and "Sent" at Deutsche Bank are all the same underlying status (ACSP). "Settled" at one bank and "Reached beneficiary" at another are the same too (ACSC).

The translation is well-meant — banks want to be customer-friendly — but it can hide important differences. "On hold" could mean the beneficiary's bank is holding the wire (ACWP — beneficiary needs to act) or that a bank in the chain is doing compliance review (PDNG — your bank needs to act). They look the same in the portal but require different next steps.

uetr.ai shows the underlying SWIFT code wherever the public tracker exposes it. When your bank shows you only their plain-English wording, you can use the table above to translate it back to the precise SWIFT code — and the recommended next step changes accordingly.

This matters most when something has gone slightly wrong. PDNG, ACWP, and RJCT all look like "something's not right" in your bank's app, but each one means a different person needs to do a different thing. Knowing the exact code makes the conversation with your bank far faster.

How status codes actually work

Where the codes come from, what reason codes mean, status messages vs return messages, and what changes when SWIFT switches to its new format in late 2025.

01/ Who publishes the status

Each bank that touches your wire sends a short status message back to SWIFT's tracker. The technical name for this message is pacs.002. Every pacs.002 message references the wire by its UETR, so SWIFT's tracker can put all the updates from every bank in the chain on the same timeline.

A typical wire produces several pacs.002 messages over its lifetime — one when your bank sends it, one or more from go-between banks, and one from the beneficiary's bank when it lands. The status code inside each message moves from ACSP (in flight) to ACSC (arrived) to ACCC (credited).

02/ Status messages vs return messages

Two related messages do different jobs. pacs.002 reports what's happening to a wire — accepted, in flight, settled, credited, held, rejected. pacs.004 actually sends the money back when a wire is rejected or cancelled.

A rejected wire usually produces a pacs.002 with status RJCT and a reason code, followed by a pacs.004 carrying the funds back to the sending bank. Both reference the original UETR so you can match them up.

03/ Why your bank statement doesn't match the tracker

Your bank statement comes from a different message called camt.054, not from the SWIFT tracker. camt.054 is what your bank sends to you when money moves in or out of your account. The pacs.002 status messages we're talking about go between banks, not from bank to customer.

This is why a wire can show as "credited" in SWIFT's tracker (ACCC) before your bank statement shows the entry — your bank might still be processing the customer-facing notification.

04/ What changes in November 2025

SWIFT is switching all cross-border wire infrastructure to a newer message format called ISO 20022. The cut-over for cross-border payments finishes in November 2025. The industry calls this migration CBPR+ (Cross-Border Payments and Reporting Plus).

Good news: the status codes themselves don't change. ACSP, ACSC, ACCC, and the others mean the same thing before and after. What changes is the structure of the message that carries them — the format is richer and more machine-readable, but the codes are identical.

Common RJCT reason codes

When your wire is rejected, the tracker also carries a short reason code — one of the ISO 20022 external code-set values — that tells you why. Most rejections are simple data problems — wrong account number, closed account, missing field — and once you know the reason, you can fix it and re-send. Here are the most common ones.

CodeMeaningTypical cause
AC01IncorrectAccountNumberBeneficiary account number wrong, mistyped, or in the wrong format
AC04ClosedAccountNumberBeneficiary account has been closed
AC06BlockedAccountBeneficiary account is frozen or blocked
AG01TransactionForbiddenTransaction type not allowed on the beneficiary account
AM04InsufficientFundsSender's funding leg insufficient (less common for outgoing)
AM05DuplicationBank detected a duplicate of an earlier payment
BE04MissingCreditorAddressBeneficiary address required but not supplied
BE07MissingDebtorAddressSender address required but not supplied
FF01InvalidFileFormatMessage structure or field format invalid
RC01BankIdentifierIncorrectBeneficiary or intermediary BIC wrong or unknown
FOCRFollowingCancellationRequestReturned in response to a cancellation request (MT192 / pacs.004)
NARRNarrativeFree-text reason supplied by the rejecting bank

What to do when your wire shows…

Status-specific next steps. The wrong question to your bank wastes a day; the right question gets the wire moving.

ACSP

If it's been <24h

Wait. ACSP is normal. The wire is moving through the correspondent chain. Set a uetr.ai alert and check back when the status changes.

PDNG

If it shows PDNG

Ask the sending bank: 'Which bank is showing PDNG and why?' Sanctions screening is the most common cause; have purpose-of-payment documentation ready.

ACWP

If it shows ACWP

Contact the beneficiary directly. ACWP means their bank has the money but won't post it yet — usually a missing field or compliance check the beneficiary needs to clear.

RJCT

If it shows RJCT

Get the reason code from the sending bank (AC01, AC04, AM05, etc). Fix the underlying issue, then resend. Funds return to your account via pacs.004.

Set a uetr.ai email alert on the UETR and we will notify you the moment the status code changes — no need to refresh the gpi viewer.

See status codes at your bank

Each bank surfaces SWIFT status codes differently in its customer portal. The guides below show the mapping per bank.

FAQ

Frequently asked questions about SWIFT status codes

What is pacs.002?

pacs.002 (FIToFIPaymentStatusReport) is the ISO 20022 XML message banks use to report the status of a payment back to the originator and other parties in the chain. It carries SWIFT gpi status codes (ACSP, ACSC, ACCC, ACWC, ACWP, PDNG, RJCT) against a specific UETR, which is how the SWIFT gpi Tracker assembles the end-to-end status of a payment.

What does pacs.002 meaning?

pacs.002 means 'FIToFIPaymentStatusReport' — a financial-institution-to-financial-institution payment status report. It is the standard ISO 20022 message that one bank sends to another (and back up the chain) to report whether a payment has been accepted, settled, credited, held, or rejected, identified by its UETR.

What is the pacs.002 MT equivalent?

In the SWIFT MT world, the closest equivalent of pacs.002 is the MT199 free-format message or the gpi-specific status updates that banks share via the SWIFT gpi Tracker. Under the CBPR+ migration to ISO 20022, pacs.002 replaces these as the structured way for banks to report payment status.

pacs.002 vs pacs.004: what's the difference?

pacs.002 reports the status of a payment (accepted, settled, credited, held, rejected). pacs.004 is a payment return — used to send funds back to the originator after a rejection or cancellation. A rejected payment typically produces a pacs.002 with status RJCT followed by a pacs.004 carrying the returned funds.

What does ACSP mean in SWIFT?

ACSP stands for AcceptedSettlementInProcess. It means the payment has been accepted into the SWIFT gpi network and is moving through the correspondent banking chain but has not yet been credited to the beneficiary. This is the normal in-flight state for a wire that has been sent but not yet arrived.

What does ACSC mean?

ACSC stands for AcceptedSettlementCompleted. Settlement is complete at the beneficiary bank — the funds have moved from the correspondent into the beneficiary bank's account or settlement system. The beneficiary bank may still need to post the credit to the customer account, which is reported separately as ACCC.

What does ACCC mean?

ACCC stands for AcceptedSettlementCompletedCreditorAccount. The funds have been credited to the beneficiary's account at the beneficiary bank. This is the strongest confirmation the SWIFT gpi Tracker provides that the payment has arrived where it was supposed to go.

What does RJCT mean in a SWIFT wire?

RJCT stands for Rejected. The payment has been rejected and funds will be returned to the sending bank via a pacs.004 PaymentReturn or MT103 return message. The accompanying reason code (e.g., AC01 incorrect account number, AC04 closed account, AM05 duplicate) tells you why the payment was rejected.

What does PDNG mean?

PDNG stands for Pending. The payment is held somewhere in the chain pending review — usually sanctions screening at a correspondent bank, a missing intermediary BIC, or a compliance enquiry. Ask your sending bank which bank in the chain is showing PDNG and why; you may be asked for additional documentation about the beneficiary or purpose of the payment.

What is pacs.008?

pacs.008 (FIToFICustomerCreditTransfer) is the ISO 20022 XML message that replaces SWIFT MT103 for customer credit transfers under the CBPR+ migration. It carries the same payment-instruction data plus richer remittance fields and structured party information, and it carries the UETR.

What are pacs.002 reason codes?

Reason codes are the ISO 20022 ExternalStatusReason1Code values that explain a status — most commonly the reason a payment was rejected (RJCT). Examples: AC01 (IncorrectAccountNumber), AC04 (ClosedAccountNumber), AM05 (Duplication), BE04 (MissingCreditorAddress), FF01 (InvalidFileFormat), RC01 (BankIdentifierIncorrect), FOCR (FollowingCancellationRequest).

Is pacs.002 the same as camt.054?

No. pacs.002 reports payment status (accepted, settled, credited, held, rejected) between banks. camt.054 (BankToCustomerDebitCreditNotification) is the message a bank sends to its own customer reporting debits and credits to the customer's account. pacs.002 is bank-to-bank; camt.054 is bank-to-customer.

Why do bank portals show different labels for the same status code?

SWIFT defines the codes at the network level — ACSP, ACSC, ACCC, ACWC, ACWP, PDNG, RJCT — but each bank surfaces them to customers using its own wording. 'In transit' at HSBC, 'Processing' at Citi, 'With correspondent' at JPMorgan, and 'Sent' at Deutsche Bank are usually the same underlying ACSP. The translation between bank labels and SWIFT codes is what uetr.ai surfaces.

Regulatory Disclosure

uetr.ai is an independent information service. We are strictly a read-only payment-monitoring tool. We never hold, move, custody, send, or process money. We are not a money transmitter or payment processor. Always consult your sending bank for the official record of any wire transfer status.