Swift GPI tracking
Track cross-border payments using Swift GPI in Mambu Payments (formerly Numeral)
Mambu Payments supports end-to-end Swift GPI tracking, including UETRs, outgoing GPI trackers, and inbound GPI trackers.
Unique end-to-end tracking references (UETRs)
Swift unique end-to-end tracking references (UETRs) are included in payment orders, incoming payments, and transactions when applicable.
{
"object": "payment_order",
/* rest of the payment order object */
"uetr": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
}{
"object": "incoming_payment",
/* rest of the incoming payment object */
"uetr": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
}{
"object": "transaction",
/* rest of the transaction object */
"uetr": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
}Outbound GPI trackers
Swift universal confirmation trck.001 tracker messages can be sent when confirming or rejecting Swift incoming payments. When receiving a Swift incoming payment, customers can either:
- Process the payment and decide which GPI tracking message update to send using the Update GPI tracker API endpoint
- Use payment validation rules to automatically send GPI trackers depending on the outcome of the payment validations (
successful,failed, orpending_investigation)
In both situations, Mambu Payments will generate and send a trck.001 universal confirmation GPI message:
<?xml version="1.0" encoding="UTF-8"?>
<DataPDU xmlns="urn:swift:saa:xsd:saa.2.0">
<Revision>2.0.14</Revision>
<Header>
<Message>
<SenderReference>251028367329Yhej</SenderReference>
<MessageIdentifier>trck.001.001.03</MessageIdentifier>
<Format>MX</Format>
<Sender>
<DN>ou=xxx,o=somebic0,o=swift</DN>
</Sender>
<Receiver>
<DN>ou=xxx,o=trckchz0,o=swift</DN>
</Receiver>
<NetworkInfo>
<Service>swift.finplus!pf</Service>
</NetworkInfo>
</Message>
</Header>
<Body>
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>TRCKCHZ0XXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>251028367329Yhej</BizMsgIdr>
<MsgDefIdr>trck.001.001.03</MsgDefIdr>
<BizSvc>swift.uc.01</BizSvc>
<CreDt>2025-10-28T08:32:38.811Z</CreDt>
</AppHdr>
<Document xmlns="urn:swift:xsd:trck.001.001.03">
<PmtStsTrckrUpd>
<GrpHdr>
<MsgId>251028367329Yhej</MsgId>
</GrpHdr>
<TrckrStsAndTx>
<TxSts>
<Sts>ACCC</Sts>
</TxSts>
<Tx>
<TrckrInfrmgPty>
<Id>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</Id>
</TrckrInfrmgPty>
<PmtId>
<InstrId>34FMAF2FPV83U8ZL</InstrId>
<UETR>4a4b2178-17c4-4e5b-92fb-41f30ea9bc11</UETR>
</PmtId>
<PmtScnro>CCTR</PmtScnro>
<SttlmInf>
<SttlmMtd>INDA</SttlmMtd>
</SttlmInf>
<TrckrData>
<ConfdDt>
<DtTm>2025-10-28T08:32:38.811Z</DtTm>
</ConfdDt>
<ConfdAmt Ccy="EUR">11.56</ConfdAmt>
</TrckrData>
</Tx>
</TrckrStsAndTx>
</PmtStsTrckrUpd>
</Document>
</Body>
</DataPDU><?xml version="1.0" encoding="UTF-8"?>
<DataPDU xmlns="urn:swift:saa:xsd:saa.2.0">
<Revision>2.0.14</Revision>
<Header>
<Message>
<SenderReference>251028367539gmJq</SenderReference>
<MessageIdentifier>trck.001.001.03</MessageIdentifier>
<Format>MX</Format>
<Sender>
<DN>ou=xxx,o=somebic0,o=swift</DN>
</Sender>
<Receiver>
<DN>ou=xxx,o=trckchz0,o=swift</DN>
</Receiver>
<NetworkInfo>
<Service>swift.finplus!pf</Service>
</NetworkInfo>
</Message>
</Header>
<Body>
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>TRCKCHZ0XXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>251028367539gmJq</BizMsgIdr>
<MsgDefIdr>trck.001.001.03</MsgDefIdr>
<BizSvc>swift.uc.01</BizSvc>
<CreDt>2025-10-28T12:56:56.346Z</CreDt>
</AppHdr>
<Document xmlns="urn:swift:xsd:trck.001.001.03">
<PmtStsTrckrUpd>
<GrpHdr>
<MsgId>251028367539gmJq</MsgId>
</GrpHdr>
<TrckrStsAndTx>
<TxSts>
<Sts>ACSP</Sts>
<StsRsn>
<Rsn>
<Cd>G003</Cd>
</Rsn>
</StsRsn>
</TxSts>
<Tx>
<TrckrInfrmgPty>
<Id>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</Id>
</TrckrInfrmgPty>
<PmtId>
<InstrId>R6DV1ZLNJTXY20MI</InstrId>
<UETR>6d07a82b-43ff-4c3b-8ee2-448f3cb77b92</UETR>
</PmtId>
<PmtScnro>CCTR</PmtScnro>
<SttlmInf>
<SttlmMtd>INDA</SttlmMtd>
</SttlmInf>
<IntrBkSttlmAmt Ccy="EUR">3.05</IntrBkSttlmAmt>
</Tx>
</TrckrStsAndTx>
</PmtStsTrckrUpd>
</Document>
</Body>
</DataPDU><?xml version="1.0" encoding="UTF-8"?>
<DataPDU xmlns="urn:swift:saa:xsd:saa.2.0">
<Revision>2.0.14</Revision>
<Header>
<Message>
<SenderReference>251028367702Kzve</SenderReference>
<MessageIdentifier>trck.001.001.03</MessageIdentifier>
<Format>MX</Format>
<Sender>
<DN>ou=xxx,o=somebic0,o=swift</DN>
</Sender>
<Receiver>
<DN>ou=xxx,o=trckchz0,o=swift</DN>
</Receiver>
<NetworkInfo>
<Service>swift.finplus!pf</Service>
</NetworkInfo>
</Message>
</Header>
<Body>
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>TRCKCHZ0XXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>251028367702Kzve</BizMsgIdr>
<MsgDefIdr>trck.001.001.03</MsgDefIdr>
<BizSvc>swift.uc.01</BizSvc>
<CreDt>2025-10-28T13:01:36.179Z</CreDt>
</AppHdr>
<Document xmlns="urn:swift:xsd:trck.001.001.03">
<PmtStsTrckrUpd>
<GrpHdr>
<MsgId>251028367702Kzve</MsgId>
</GrpHdr>
<TrckrStsAndTx>
<TxSts>
<Sts>ACSP</Sts>
<Dt>
<DtTm>2025-10-28T13:01:36.179354965Z</DtTm>
</Dt>
<StsRsn>
<Rsn>
<Cd>G001</Cd>
</Rsn>
</StsRsn>
</TxSts>
<Tx>
<TrckrInfrmgPty>
<Id>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</Id>
</TrckrInfrmgPty>
<PmtId>
<InstrId>3JANTLZEM6RJUB4I</InstrId>
<UETR>7c48460a-47d9-41ab-a39f-d32bc93d92f7</UETR>
</PmtId>
<PmtScnro>CCTR</PmtScnro>
<SttlmInf>
<SttlmMtd>INDA</SttlmMtd>
</SttlmInf>
<IntrBkSttlmAmt Ccy="EUR">8.47</IntrBkSttlmAmt>
</Tx>
</TrckrStsAndTx>
</PmtStsTrckrUpd>
</Document>
</Body>
</DataPDU><?xml version="1.0" encoding="UTF-8"?>
<DataPDU xmlns="urn:swift:saa:xsd:saa.2.0">
<Revision>2.0.14</Revision>
<Header>
<Message>
<SenderReference>251031370152GhxW</SenderReference>
<MessageIdentifier>trck.001.001.03</MessageIdentifier>
<Format>MX</Format>
<Sender>
<DN>ou=xxx,o=somebic0,o=swift</DN>
</Sender>
<Receiver>
<DN>ou=xxx,o=trckchz0,o=swift</DN>
</Receiver>
<NetworkInfo>
<Service>swift.finplus!pf</Service>
</NetworkInfo>
</Message>
</Header>
<Body>
<AppHdr xmlns="urn:iso:std:iso:20022:tech:xsd:head.001.001.02">
<Fr>
<FIId>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</FIId>
</Fr>
<To>
<FIId>
<FinInstnId>
<BICFI>TRCKCHZ0XXX</BICFI>
</FinInstnId>
</FIId>
</To>
<BizMsgIdr>251031370152GhxW</BizMsgIdr>
<MsgDefIdr>trck.001.001.03</MsgDefIdr>
<BizSvc>swift.uc.01</BizSvc>
<CreDt>2025-10-31T11:39:22.568Z</CreDt>
</AppHdr>
<Document xmlns="urn:swift:xsd:trck.001.001.03">
<PmtStsTrckrUpd>
<GrpHdr>
<MsgId>251031370152GhxW</MsgId>
</GrpHdr>
<TrckrStsAndTx>
<TxSts>
<Sts>RJCT</Sts>
<Dt>
<DtTm>2025-10-31T11:39:22.568763603Z</DtTm>
</Dt>
<RjctRtrRsn>
<Rsn>
<Cd>AC04</Cd>
</Rsn>
</RjctRtrRsn>
</TxSts>
<Tx>
<TrckrInfrmgPty>
<Id>
<FinInstnId>
<BICFI>SOMEBIC0XXX</BICFI>
</FinInstnId>
</Id>
</TrckrInfrmgPty>
<PmtId>
<InstrId>1761910741</InstrId>
<UETR>ba2a6e19-160b-45be-80dc-788ef5146307</UETR>
</PmtId>
<PmtScnro>CCTR</PmtScnro>
<IntrBkSttlmAmt Ccy="USD">150.00</IntrBkSttlmAmt>
</Tx>
</TrckrStsAndTx>
</PmtStsTrckrUpd>
</Document>
</Body>
</DataPDU>Inbound GPI trackers
Mambu Payments can receive or poll the status of a Swift GPI tracker for a Swift payment order. Two methods can be used to capture the latest tracking updates of such a payment:
- For customers working with a partner bank that supports GPI tracking updates reports, Mambu Payments will process such reports
- For customers connecting to Swift using Mambu Payments as their Swift Business Connect provider, GPI tracking updates will be regularly retrieved until a final
receivedorrejectedstatus is received (available in Q1 2026)
In both cases, the tracking update details will be included in the payment order object:
{
"object": "payment_order",
/* rest of the payment order object */
"uetr": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"swift_gpi": {
"tracking_id": "63c2b5c7-009c-4c1b-8c14-41c3a73346ac",
"confirmed_date": "2025-05-06T10:23:12Z",
"confirmed_amount": 14505,
"confirmed_currency": "EUR",
"status": "received",
"tracking_progress": [
{
"id": "01",
"processed_at": "0001-01-01T00:00:00Z",
"status": "executed",
"status_details": "G001",
"bank_code": "CITI0100000",
"fee_amount": 1125,
"fee_currency": "USD"
},
{
"id": "02",
"processed_at": "0001-01-01T00:00:00Z",
"status": "received",
"status_details": "ACCC",
"bank_code": "SOMEBIC0XXX",
"fee_amount": 1099,
"fee_currency": "EUR"
},
]
},
}{
"object": "payment_order",
/* rest of the payment order object */
"uetr": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"swift_gpi": {
"tracking_id": "63c2b5c7-009c-4c1b-8c14-41c3a73346ac",
"confirmed_date": "2025-05-06T10:23:12Z",
"confirmed_amount": 14505,
"confirmed_currency": "EUR",
"status": "rejected",
"tracking_progress": [
{
"id": "01",
"processed_at": "2020-10-24T06:23:12Z",
"status": "executed",
"status_details": "G005",
"bank_code": "CITI0100000",
"fee_amount": null,
"fee_currency": null
},
{
"id": "02",
"processed_at": "2025-05-06T08:45:11Z",
"status": "rejected",
"status_details": "G006",
"bank_code": "SOMEBIC0XXX",
"fee_amount": null,
"fee_currency": null
}
]
},
}Every time a new tracking update is received, the above swift_gpi property of the payment order object gets updated and a new event of topic = payment_order and type = swift_gpi_tracking_updated event is triggered.
Updated 15 days ago
