> ## Documentation Index
> Fetch the complete documentation index at: https://developer.tazapay.com/llms.txt
> Use this file to discover all available pages before exploring further.

# SWIFT GPI Tracking

> Real-time, hop-by-hop visibility into your SWIFT cross-border payouts via GPI.

## How SWIFT Cross-Border Payments Work

When you send a payout via SWIFT, the funds do not travel in a straight line from sender to beneficiary. Instead, they move through a chain of correspondent banks — intermediary institutions that maintain account relationships with each other to facilitate international settlements. A payment from Singapore to Kenya, for instance, may pass through two or three correspondent banks before it reaches the beneficiary's local bank.

Each bank in this chain independently processes the payment, applies any required compliance checks, and forwards it to the next institution. This multi-hop structure gives SWIFT its global reach — enabling payments across 200+ countries and 150+ currencies — but it has historically made it difficult to know where a payment is at any given point in its journey.

***

## What Is SWIFT GPI?

SWIFT GPI (Global Payments Innovation) is a tracking and transparency layer built on top of the traditional SWIFT messaging network. Launched in 2017, GPI introduced a standardised way for every bank in a payment chain to report the status of a payment as it moves through them.

Think of it as a courier tracking number for cross-border payments. Just as a parcel tracking system records each scan at every warehouse and delivery checkpoint, GPI records each processing event at each correspondent bank — giving you a real-time, hop-by-hop view of where your funds are.

<Info>
  At the core of GPI is the **UETR (Unique End-to-End Transaction Reference)** — a UUID assigned to every SWIFT payment at the point of initiation. This reference travels unchanged through every bank in the chain and is the key that unlocks the full tracking timeline.
</Info>

GPI is now the global standard for cross-border SWIFT payments, with 4,000+ financial institutions across 198 countries participating.

***

## GPI Status Codes

As a payout moves through the correspondent banking chain, each bank updates its processing status. These updates are expressed as GPI status codes (also called reason codes).

There are two layers of status codes:

* **Top-level codes** indicate the overall state of the payment — whether it is in transit, delivered, credited, or has failed.
* **ACSP sub-codes (G000–G004)** provide additional detail about what is happening while the payment is in transit.

The table below covers all codes you may encounter on Tazapay.

| Reason Code | Status Label                    | What It Means                                                                                                                                                                                                                                                                                        |
| ----------- | ------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| ACSP/G000   | In Transit                      | Forwarded to the next GPI-enabled bank in the correspondent chain.                                                                                                                                                                                                                                   |
| ACSP/G001   | In Transit – No Further Updates | Forwarded to a bank that is not GPI-enabled. No further GPI events will be received after this point.                                                                                                                                                                                                |
| ACSP/G002   | In Transit                      | Being processed by a correspondent bank; may involve manual review or pending credit.                                                                                                                                                                                                                |
| ACSP/G003   | In Transit                      | Being processed by a correspondent bank; may be awaiting required compliance documents.                                                                                                                                                                                                              |
| ACSP/G004   | In Transit                      | Being processed by a correspondent bank; may be awaiting a cover payment.                                                                                                                                                                                                                            |
| ACSC        | Delivered                       | Funds have been received by the beneficiary's bank. Credit to the beneficiary account is typically imminent.                                                                                                                                                                                         |
| ACCC        | Credited                        | Funds have been credited to the beneficiary's account. This is the terminal success state.                                                                                                                                                                                                           |
| RJCT/OTHERS | Rejected                        | The payment was rejected by a bank in the chain. No further processing will occur.                                                                                                                                                                                                                   |
| CNCL        | Cancelled                       | The payment was recalled via SWIFT's gSRP cancellation mechanism before reaching the beneficiary.                                                                                                                                                                                                    |
| PDNG        | Pending Investigation           | The payment has been suspended — typically due to a compliance check or investigation at a bank in the chain. This is not a terminal state. Depending on the outcome of the investigation, the payment may resume (transitioning back to ACSP) and ultimately succeed (ACCC), or be rejected (RJCT). |

***

## GPI State Transition Diagram

The diagram below illustrates how a SWIFT payment moves through GPI states, from initiation through to a terminal outcome.

<Frame>
  <img src="https://mintcdn.com/tazapay-58ae360f/XnnOsyO5iPNeTmXZ/images/swift-gpi-state-transition.png?fit=max&auto=format&n=XnnOsyO5iPNeTmXZ&q=85&s=475c1f8ac70ee7f65c681b75cffbf1d7" alt="SWIFT GPI Payment — State Transition" width="2000" height="1913" data-path="images/swift-gpi-state-transition.png" />
</Frame>

**Reading the diagram:**

* The payment always starts with a UETR assignment and enters the **ACSP** (in-progress) state.
* While in ACSP, the sub-codes **G000–G004** describe what is happening at each hop.
* **ACSC** and **ACCC** are the two success terminals — ACSC means the beneficiary bank has received the funds; ACCC means the funds have been credited to the beneficiary's account (the stronger confirmation).
* **RJCT** and **CNCL** are true terminal states — the payment will not progress further.
* **PDNG** is a transient hold, not a terminal state. A suspended payment may resume back into ACSP if the investigation clears, resolve directly to ACCC if approved, or end in RJCT if rejected.
* Solid arrows represent the normal payment flow. Dashed arrows represent exceptional or conditional paths.

***

## Limitations of GPI Tracking

GPI significantly improves visibility into cross-border payments, but there are inherent constraints you should be aware of:

**1. Tracking stops at non-GPI banks.** If a correspondent bank in the payment chain is not a GPI member, it will not report a status update to the tracker. When this happens, the last known GPI status will be ACSP/G001, and no further GPI events will be received — even if the payment continues to move and ultimately succeeds. The payout's lifecycle status on Tazapay (e.g., succeeded) remains the source of truth for the final outcome.

**2. GPI tracking is additive — it does not change payout status.** GPI events provide routing and transit visibility only. They do not alter the payout's own status (processing, succeeded, failed). A payout can show ACSP/G001 as the final GPI state and still succeed.

**3. Speed varies by corridor.** While GPI has dramatically improved settlement times — with 90% of payments reaching the destination bank within one hour in major corridors — speed still depends on the banks involved, their operating hours, and local compliance requirements. Payments to lower-income countries or through regions with capital controls may take longer.

**4. UETRs are required for tracking.** If a UETR was not generated for a SWIFT payout (typically for older payouts), GPI tracking will not be available for that transaction.

**5. Tracking service delays.** If a correspondent bank's reporting is delayed, there may be gaps in the GPI timeline. Tazapay retries automatically and emits the event once the update is confirmed.

***

## Typical Turnaround Times by GPI State

The following are general benchmarks based on SWIFT's own reported data and industry norms. Actual times will vary by corridor, correspondent bank, and destination country.

| Scenario                                                 | Indicative TAT                                                                                         |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------ |
| Payment reaches beneficiary bank (ACSC)                  | 50% within 30 minutes; 90% within 1 hour for major corridors                                           |
| Funds credited to beneficiary account (ACCC)             | Typically within minutes to a few hours after ACSC — depends on beneficiary bank's internal processing |
| Payment forwarded to a non-GPI bank (ACSP/G001)          | No further tracking; final outcome reflected in payout status, typically within 1–2 business days      |
| Payments in lower-income or capital-controlled corridors | Can range from several hours to 2+ business days                                                       |
| No GPI update received within 2 business days            | Contact Tazapay support — may indicate a hold or delay at a correspondent bank                         |

<Note>
  These timelines reflect GPI network benchmarks.
</Note>

***

## How to Track GPI Status on Tazapay

Tazapay surfaces GPI tracking data through two channels: the **Dashboard** (for manual lookup) and **Webhooks** (for programmatic, real-time updates).

<Tabs>
  <Tab title="Via the Dashboard">
    You can view the full GPI tracking timeline for any eligible SWIFT payout directly from the Tazapay Dashboard.

    <Steps>
      <Step title="Open Payouts">
        Navigate to **Payouts** in the left sidebar.
      </Step>

      <Step title="Select a payout">
        Click on the payout you want to inspect.
      </Step>

      <Step title="View the GPI timeline">
        On the payout detail page, scroll down to the **SWIFT GPI Tracking via UETR** section.
      </Step>
    </Steps>

    This section displays each GPI hop in reverse chronological order (most recent first), with the status label, reason code, a human-readable description, the BIC of the reporting bank, and the timestamp of each event.

    The examples below illustrate different GPI timeline patterns you may encounter in practice.

    <AccordionGroup>
      <Accordion title="Example 1 — Full tracking with successful credit (ACCC)">
        This timeline shows a payment that was fully tracked end-to-end through GPI-enabled correspondent banks. Starting with ACSP/G000 (forwarded to intermediary bank ABSAZAJJXXX), the payment then progressed through ACSP/G002, ACSP/G003, and ACSP/G004 — each representing a processing step at a correspondent bank. The terminal event is ACCC: Funds credited to beneficiary account, which is the strongest confirmation that the payment has reached the beneficiary. This is the ideal GPI timeline: full hop-by-hop visibility from initiation to credit.

        <Frame>
          <img src="https://mintcdn.com/tazapay-58ae360f/XnnOsyO5iPNeTmXZ/images/swift-gpi-example1.png?fit=max&auto=format&n=XnnOsyO5iPNeTmXZ&q=85&s=999fc7d79c02522af2170c9b1dd70488" alt="SWIFT GPI Example 1 — Full tracking with successful credit" width="1102" height="440" data-path="images/swift-gpi-example1.png" />
        </Frame>
      </Accordion>

      <Accordion title="Example 2 — Partial tracking: non-GPI bank followed by re-entry into GPI network">
        This timeline illustrates a common real-world scenario where the payment briefly exits the GPI network. The first event (ACSP/G001) shows the payment was forwarded to a non-GPI bank (CIBCCATTMPS), at which point tracking became unavailable. However, the payment subsequently re-entered a GPI-enabled segment of the chain — evidenced by the later ACSP/G000 events via SCBLUS33XXX, BOFAUS3NXXX, and TDOMCATTTOR — before reaching the terminal ACCC state. Note that a G001 event does not always mean tracking is permanently lost; it indicates tracking was unavailable at that specific bank. The payout succeeded regardless.

        <Frame>
          <img src="https://mintcdn.com/tazapay-58ae360f/XnnOsyO5iPNeTmXZ/images/swift-gpi-example2.png?fit=max&auto=format&n=XnnOsyO5iPNeTmXZ&q=85&s=428a2b7647e3ed508db272654a738b94" alt="SWIFT GPI Example 2 — Partial tracking with re-entry" width="1088" height="400" data-path="images/swift-gpi-example2.png" />
        </Frame>
      </Accordion>

      <Accordion title="Example 3 — Tracking stops at a non-GPI bank (ACSP/G001 as final state)">
        This timeline shows only a single ACSP/G001 event — the payment was forwarded to a non-GPI-enabled bank (NTBCLKLXXXX) and no further GPI updates were received. This does not mean the payment failed. The payout lifecycle status (visible at the top of the payout detail page) is the authoritative indicator of whether the payment ultimately succeeded or failed. When GPI tracking stops at G001, the payout status remains your source of truth.

        <Frame>
          <img src="https://mintcdn.com/tazapay-58ae360f/XnnOsyO5iPNeTmXZ/images/swift-gpi-example3.png?fit=max&auto=format&n=XnnOsyO5iPNeTmXZ&q=85&s=803d831c900aac174c208adb950e54aa" alt="SWIFT GPI Example 3 — Tracking stops at non-GPI bank" width="1100" height="138" data-path="images/swift-gpi-example3.png" />
        </Frame>
      </Accordion>
    </AccordionGroup>
  </Tab>

  <Tab title="Via the API (Webhooks)">
    For automated, real-time GPI tracking, Tazapay emits a `payout.gpi_tracking` webhook event on every new GPI hop.

    **Key characteristics:**

    * A new event is fired each time a correspondent bank reports a status update.
    * Every event contains the **full cumulative timeline** of all hops so far — not just the latest update. You do not need to maintain state between events.
    * These events are additive and do not affect the payout's lifecycle status.
    * Each event includes the UETR, the latest reason code, a human-readable status description, and the full ordered timeline.

    <Warning>
      Events may occasionally arrive out of order. Always sort `data.gpi.timeline[]` by `timestamp` before processing — do not rely on arrival sequence.
    </Warning>

    **Typical flow:**

    ```
    Payout initiated
        → payout.created webhook
        → SWIFT payment enters correspondent banking chain
        → payout.gpi_tracking (ACSP/G000) — forwarded to first intermediary
        → payout.gpi_tracking (ACSP/G002) — processing at correspondent bank
        → payout.gpi_tracking (ACSC) — received by beneficiary bank
        → payout.gpi_tracking (ACCC) — credited to beneficiary account
        → payout.succeeded webhook
    ```

    If the payment passes through a non-GPI bank, you will receive `ACSP/G001` as the last GPI event. The `payout.succeeded` webhook will still fire once the payout completes.

    **Webhook event structure (key fields):**

    | Field                                   | Description                                                        |
    | --------------------------------------- | ------------------------------------------------------------------ |
    | `type`                                  | Always `payout.gpi_tracking`                                       |
    | `data.id`                               | The payout ID (`pot_...`)                                          |
    | `data.tracking_details.tracking_number` | The UETR (UUID) for this SWIFT transfer                            |
    | `data.gpi.latest.reasonCode`            | The most recent GPI status code                                    |
    | `data.gpi.latest.statusDescription`     | Human-readable description of the latest event                     |
    | `data.gpi.latest.timestamp`             | When the latest event occurred                                     |
    | `data.gpi.timeline[]`                   | Full ordered list of all GPI hops with reason codes and timestamps |

    For the complete webhook payload schema, event reference, and sample payload, see the [SWIFT GPI Tracking API Reference](/api-reference/tazapay-api/swift-gpi-tracking).

    <Note>
      **Coming soon:** GPI tracking data will also be available inline via the payout GET API, allowing you to fetch the current status and full timeline on demand without relying solely on webhooks.
    </Note>
  </Tab>
</Tabs>
