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
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_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
Field Type Description typestring Always "payout.gpi_tracking" idstring Event ID (evt_gpi_...) created_atISO 8601 When this event was generated data.idstring Payout ID (pot_...) data.statusstring Payout lifecycle status — not modified by GPI events data.tracking_details.tracking_typestring Always "uetr" data.tracking_details.tracking_numberUUID The UETR of the SWIFT transfer data.gpi.latest.reasonCodestring Most recent GPI status code (e.g. ACSP/G000, ACSC, ACCC, RJCT/OTHERS) data.gpi.latest.statusDescriptionstring Human-readable description of the latest GPI event data.gpi.latest.timestampISO 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
reasonCodeStatus Meaning statusDescriptionACSP/G000IN_TRANSIT Payment forwarded to next GPI agent In transit – with intermediary bank ACSP/G001IN_TRANSIT Forwarded to non-GPI bank; no further updates expected In transit – sent to non-tracked bank (further updates unavailable) ACSP/G002IN_TRANSIT Processing with correspondent bank In transit – processing with correspondent bank ACSP/G003IN_TRANSIT Processing with correspondent bank In transit – processing with correspondent bank ACSP/G004IN_TRANSIT Processing with correspondent bank In transit – processing with correspondent bank ACSCDELIVERED Funds received by beneficiary bank Funds received by beneficiary bank ACCCCREDITED Funds credited to beneficiary account Funds credited to beneficiary account RJCT/OTHERSREJECTED Payment rejected by a bank in the chain Rejected
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"
}
]
}
}
}
See all 35 lines
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
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.