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
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.
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.
ACSPAcceptedSettlementInProcess— Your 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".
ACSCAcceptedSettlementCompleted— Your 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".
ACCCAcceptedSettlementCompletedCreditorAccount— The 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".
ACWCAcceptedWithChange— Accepted, 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".
ACWPAcceptedWithoutPosting— The 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".
PDNGPending— A 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".
RJCTRejected— The 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.002reports 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.
Code
Meaning
Typical cause
AC01
IncorrectAccountNumber
Beneficiary account number wrong, mistyped, or in the wrong format
AC04
ClosedAccountNumber
Beneficiary account has been closed
AC06
BlockedAccount
Beneficiary account is frozen or blocked
AG01
TransactionForbidden
Transaction type not allowed on the beneficiary account
AM04
InsufficientFunds
Sender's funding leg insufficient (less common for outgoing)
AM05
Duplication
Bank detected a duplicate of an earlier payment
BE04
MissingCreditorAddress
Beneficiary address required but not supplied
BE07
MissingDebtorAddress
Sender address required but not supplied
FF01
InvalidFileFormat
Message structure or field format invalid
RC01
BankIdentifierIncorrect
Beneficiary or intermediary BIC wrong or unknown
FOCR
FollowingCancellationRequest
Returned in response to a cancellation request (MT192 / pacs.004)
NARR
Narrative
Free-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.
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.