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
| Term | Description |
|---|---|
| UETR | Unique End-to-End Transaction Reference. A UUID assigned to every SWIFT transfer for end-to-end tracking. |
| GPI | Global Payments Innovation — SWIFT’s real-time tracking layer for cross-border transfers. |
| GPI hop | Each correspondent bank that processes the transfer generates a status update (a “hop”). Tazapay emits a webhook on every hop. |
payout.gpi_tracking | The 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?
Apayout.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
| Field | Type | Description |
|---|---|---|
type | string | Always "payout.gpi_tracking" |
id | string | Event ID (evt_gpi_...) |
created_at | ISO 8601 | When this event was generated |
data.id | string | Payout ID (pot_...) |
data.status | string | Payout lifecycle status — not modified by GPI events |
data.tracking_details.tracking_type | string | Always "uetr" |
data.tracking_details.tracking_number | UUID | The UETR of the SWIFT transfer |
data.gpi.latest.reasonCode | string | Most recent GPI status code (e.g. ACSP/G000, ACSC, ACCC, RJCT/OTHERS) |
data.gpi.latest.statusDescription | string | Human-readable description of the latest GPI event |
data.gpi.latest.timestamp | ISO 8601 | Timestamp of the latest GPI event |
data.gpi.timeline[] | array | Full ordered list of all GPI hops. Each entry has: reasonCode, statusDescription, timestamp |
GPI Status Codes
reasonCode | Status | Meaning | statusDescription |
|---|---|---|---|
ACSP/G000 | IN_TRANSIT | Payment forwarded to next GPI agent | In transit – with intermediary bank |
ACSP/G001 | IN_TRANSIT | Forwarded to non-GPI bank; no further updates expected | In transit – sent to non-tracked bank (further updates unavailable) |
ACSP/G002 | IN_TRANSIT | Processing with correspondent bank | In transit – processing with correspondent bank |
ACSP/G003 | IN_TRANSIT | Processing with correspondent bank | In transit – processing with correspondent bank |
ACSP/G004 | IN_TRANSIT | Processing with correspondent bank | In transit – processing with correspondent bank |
ACSC | DELIVERED | Funds received by beneficiary bank | Funds received by beneficiary bank |
ACCC | CREDITED | Funds credited to beneficiary account | Funds credited to beneficiary account |
RJCT/OTHERS | REJECTED | Payment rejected by a bank in the chain | Rejected |
Sample Payload
Implementation Notes
- GPI tracking does not affect
payout.status. It is additive event data only. - Every
payout.gpi_trackingevent 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. RJCTevents are normalised toRJCT/OTHERSfor 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
| Scenario | Behaviour |
|---|---|
| Tracking service unavailable | Tazapay retries automatically. No event is emitted until the hop is confirmed. You may see a delay between hops during outages. |
| Non-GPI bank in chain | Tracking stops at the last GPI-enabled bank. The ACSP/G001 event will indicate this explicitly. |
| No GPI events received | No payout.gpi_tracking event is emitted. The payout status remains unchanged. |
| UETR not available | GPI tracking will not be available for this transfer. No event will be emitted. |
