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:

  1. Process the payment and decide which GPI tracking message update to send using the Update GPI tracker API endpoint
  2. Use payment validation rules to automatically send GPI trackers depending on the outcome of the payment validations (successful, failed, or pending_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:

  1. For customers working with a partner bank that supports GPI tracking updates reports, Mambu Payments will process such reports
  2. For customers connecting to Swift using Mambu Payments as their Swift Business Connect provider, GPI tracking updates will be regularly retrieved until a final received or rejected status 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.