camt.029 — Resolution of Investigation
Closing message of an investigation opened by camt.027 (Claim Non Receipt), camt.087 (Modify Payment) or camt.056 (FI to FI Payment Cancellation Request). Tells the requester whether the case is resolved, awaiting additional information, or rejected. Cornerstone of SWIFT gpi cross-border investigation workflow.
Purpose: close an investigation
When a bank opens an investigation (via camt.027 on "payment not received" or camt.056 on "cancellation requested"), the receiving bank must respond with camt.029 within SWIFT gpi SLA (4 hours for urgent, 24h max). The message carries the verdict: accepted (ACCR), rejected (RJCR), pending (PDNG). Without camt.029, the investigator doesn't know and must reissue via camt.087.
XML structure
Wrapped in <RsltnOfInvstgtn>. Contains: Assgnmt (header), Sts (overall status), CxlDtls or ModDtls or ClmNonRctDtls per investigation type.
| Element | Role |
|---|---|
Assgnr / Assgne | Resolution sender / recipient. |
Sts/Conf | Global status: CNCL (cancelled), MODF (modified), PART (partial), RJCR (rejected). |
TxInfAndSts | Per-transaction detail. |
RslvdCase/Id | Case file ID to close. |
OrgnlUETR | UUIDv4 of original payment — SWIFT gpi matching key. |
TxCxlSts | Transaction status: ACCR (accepted), RJCR (rejected), PDNG (pending). |
CxlStsRsnInf/Rsn/Cd | ISO External Code Set reason code (DUPL, AGNT, INTC…). |
Example: investigation resolution
Citi US accepts cancellation request for duplicate, funds returned via pacs.004:
<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:camt.029.001.12">
<RsltnOfInvstgtn>
<Assgnmt>
<Id>RES-CBPR-20260519-001</Id>
<Assgnr>
<Agt><FinInstnId><BICFI>CITIUS33</BICFI></FinInstnId></Agt>
</Assgnr>
<Assgne>
<Agt><FinInstnId><BICFI>BNPAFRPP</BICFI></FinInstnId></Agt>
</Assgne>
<CreDtTm>2026-05-19T16:00:00+02:00</CreDtTm>
</Assgnmt>
<Sts>
<Conf>CNCL</Conf>
</Sts>
<CxlDtls>
<TxInfAndSts>
<CxlStsId>CITI-CXL-2026-887</CxlStsId>
<RslvdCase>
<Id>CASE-CITI-20260519-001</Id>
<Cretr>
<Agt><FinInstnId><BICFI>BNPAFRPP</BICFI></FinInstnId></Agt>
</Cretr>
</RslvdCase>
<OrgnlInstrId>BNPP-INSTR-2026001</OrgnlInstrId>
<OrgnlEndToEndId>INV2026-187</OrgnlEndToEndId>
<OrgnlUETR>1a2b3c4d-5e6f-7890-abcd-ef1234567890</OrgnlUETR>
<TxCxlSts>ACCR</TxCxlSts>
<CxlStsRsnInf>
<Orgtr><Nm>CITI INVESTIGATIONS DESK</Nm></Orgtr>
<Rsn><Cd>DUPL</Cd></Rsn>
<AddtlInf>DUPLICATE PAYMENT DETECTED - CXL ACCEPTED, FUNDS RETURNED VIA pacs.004</AddtlInf>
</CxlStsRsnInf>
</TxInfAndSts>
</CxlDtls>
</RsltnOfInvstgtn>
</Document> Common pitfalls
- OrgnlUETR missing: for CBPR+, UETR is mandatory — without it gpi investigation tracking is broken.
- RslvdCase/Id wrong: must echo the originating camt.027/056/087 Id. Otherwise investigator fails to reconcile.
- PDNG status without follow-up: PDNG implies a follow-up within 24h. Without ACCR/RJCR camt.029, the investigator escalates.
- Wrong Rsn code: ISO External Code Set codes (DUPL, AC03, AGNT, BE07) must be used strictly. Custom code = CBPR+ validation rejection.