Skip to main content

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.

Overview

Tazapay’s SWIFT GPI Tracking gives you real-time visibility into the journey of your SWIFT payouts through the initiating and correspondent banking chain. Each transfer is identified by a UETR (Unique End-to-End Transaction Reference) and tracked hop-by-hop until funds reach the beneficiary. Tracking events are delivered as webhook notifications and do not affect the payout lifecycle status (succeeded, failed, etc.).

Key Concepts

TermDescription
UETRUnique End-to-End Transaction Reference. A UUID assigned to every SWIFT transfer for end-to-end tracking.
GPIGlobal Payments Innovation — SWIFT’s real-time tracking layer for cross-border transfers.
GPI hopEach correspondent bank that processes the transfer generates a status update (a “hop”). Tazapay emits a webhook on every hop.
payout.gpi_trackingThe Tazapay webhook event emitted on every new GPI hop. Additive — does not change payout.status.

Availability

  • SWIFT GPI Tracking is available for all eligible SWIFT payouts processed by Tazapay.
  • Tracking is delivered via webhook. GET API access is coming soon.
  • GPI Tracking is free during the launch period. After the initial rollout window, it will move to an opt-in paid feature — you’ll be notified in advance before any change takes effect.

Webhook Event: payout.gpi_tracking

When is it fired?

A payout.gpi_tracking event is emitted every time a new status update is received for a SWIFT transfer — typically once per correspondent bank hop. Every event includes the full cumulative timeline, so you always have the complete picture in a single payload.

Event Schema

FieldTypeDescription
typestringAlways "payout.gpi_tracking"
idstringEvent ID (evt_gpi_...)
created_atISO 8601When this event was generated
data.idstringPayout ID (pot_...)
data.statusstringPayout lifecycle status — not modified by GPI events
data.tracking_details.tracking_typestringAlways "uetr"
data.tracking_details.tracking_numberUUIDThe UETR of the SWIFT transfer
data.gpi.latest.reasonCodestringMost recent GPI status code (e.g. ACSP/G000, ACSC, ACCC, RJCT/OTHERS)
data.gpi.latest.statusDescriptionstringHuman-readable description of the latest GPI event
data.gpi.latest.timestampISO 8601Timestamp of the latest GPI event
data.gpi.timeline[]arrayFull ordered list of all GPI hops. Each entry has: reasonCode, statusDescription, timestamp

GPI Status Codes

reasonCodeStatusMeaningstatusDescription
ACSP/G000IN_TRANSITPayment forwarded to next GPI agentIn transit – with intermediary bank
ACSP/G001IN_TRANSITForwarded to non-GPI bank; no further updates expectedIn transit – sent to non-tracked bank (further updates unavailable)
ACSP/G002IN_TRANSITProcessing with correspondent bankIn transit – processing with correspondent bank
ACSP/G003IN_TRANSITProcessing with correspondent bankIn transit – processing with correspondent bank
ACSP/G004IN_TRANSITProcessing with correspondent bankIn transit – processing with correspondent bank
ACSCDELIVEREDFunds received by beneficiary bankFunds received by beneficiary bank
ACCCCREDITEDFunds credited to beneficiary accountFunds credited to beneficiary account
RJCT/OTHERSREJECTEDPayment rejected by a bank in the chainRejected

Sample Payload

{
  "type": "payout.gpi_tracking",
  "id": "evt_gpi_123",
  "object": "event",
  "created_at": "2025-11-28T10:12:01Z",
  "data": {
    "id": "pot_123",
    "object": "payout",
    "type": "swift",
    "status": "succeeded",
    "tracking_details": {
      "tracking_type": "uetr",
      "tracking_number": "11111111-2222-3333-4444-555555555555"
    },
    "gpi": {
      "latest": {
        "reasonCode": "ACSC",
        "statusDescription": "Funds received by beneficiary bank",
        "timestamp": "2025-11-28T15:38:10Z"
      },
      "timeline": [
        {
          "reasonCode": "ACSP/G000",
          "statusDescription": "In transit – with intermediary bank",
          "timestamp": "2025-11-28T10:10:40Z"
        },
        {
          "reasonCode": "ACSC",
          "statusDescription": "Funds received by beneficiary bank",
          "timestamp": "2025-11-28T15:38:10Z"
        }
      ]
    }
  }
}

Implementation Notes

  • GPI tracking does not affect payout.status. It is additive event data only.
  • Every payout.gpi_tracking event contains the full cumulative timeline — not a delta.
  • If the transfer passes through a non-GPI-enabled bank (ACSP/G001), no further GPI hops will be reported. The last known status is retained.
  • RJCT events are normalised to RJCT/OTHERS for consistency across all banking rails.
  • Existing SWIFT payouts without a stored UETR will not be retro-tracked.

GET API — Coming Soon

GPI tracking data will also be available inline via the existing payout GET API response. This will allow you to fetch the current GPI status and full timeline on demand, without relying solely on webhooks. Coming soon. You’ll be notified as soon as this becomes available.

Edge Cases

ScenarioBehaviour
Tracking service unavailableTazapay retries automatically. No event is emitted until the hop is confirmed. You may see a delay between hops during outages.
Non-GPI bank in chainTracking stops at the last GPI-enabled bank. The ACSP/G001 event will indicate this explicitly.
No GPI events receivedNo payout.gpi_tracking event is emitted. The payout status remains unchanged.
UETR not availableGPI tracking will not be available for this transfer. No event will be emitted.