Queries
The query family: MT195 and MT295 queries to and from camt.110 investigation requests, with the :75: query codewords and :77A: narrative.
Formats
| Format | What it is | Versions accepted | Emitted by default |
|---|---|---|---|
mt195 | Queries (customer payments) | n/a | n/a |
mt295 | Queries (bank transfers) | n/a | n/a |
camt.110 | Investigation request | .001.02 | .001.02 |
Pairs
| From | To |
|---|---|
mt195, mt295 | camt.110 |
camt.110 | mt195, mt295 |
A query never converts into an answer or a cancellation request, and mt195 → mt295 is not a pair. Answers are their own family: see Answers. There is no canonical source.
How fields map
A query normalizes to an investigation document of kind query: a case id, the references of the payment being asked about, query codes and narrative.
MT195/MT295 to camt.110.
:20:becomes the case id: the message id and the requester's investigation id.:21:becomes the original end-to-end id of the payment in question.:75:lines that start with a/CODE/codeword become query codes: the first is the investigation type, each later one an extra investigation data block. Text after the codeword, and lines without one, become narrative.:77A:and:79:lines become narrative, one investigation data block per line.:11S:/:11R:identify the original message, as for cancellation requests.- A copied
:32A:becomes the original amount and settlement date.
camt.110 to MT195/MT295. Query codes go to :75: as /CODE/ lines (six lines at most); narrative goes to :77A: (20 lines of 35). With no codes, narrative fills :75: first. The target id (mt195 or mt295) decides the message type.
Recognised query codes
BENV, MISG, RQFI and UPAY. Each keeps the meaning the ISO 20022 external code set gives it. A codeword of the same shape that is not in this list (for example a numbered query such as /3/) is still carried as a code and flagged with RETURN_REASON_UNMAPPED.
Where information is lost
| Situation | Warning |
|---|---|
Narrative longer than :75:/:77A: can hold (MT), or longer than 500 characters per block (camt.110) | TRUNC_NARRATIVE |
| A query code outside the recognised list | RETURN_REASON_UNMAPPED |
camt.110 needs a requester and a responder that MT does not carry; NOTPROVIDED placeholders are written | MISSING_REQUIRED_DEFAULTED |
No query code at all: the investigation type becomes NOTPROVIDED | MISSING_REQUIRED_DEFAULTED |
Codes beyond the six :75: lines (moved to :77A:) | DROP_FIELD |
| Requester, UETR, creation time and status going to MT (no field) | DROP_FIELD |
| camt.110 parties, actions, service levels and structured request data with no canonical slot | DROP_FIELD |
A case id longer than 16 characters going to :20: | TRUNC_REFERENCE |
Conventions
:75:and:77A:capacity.:75:holds six lines and:77A:twenty lines of 35 characters. Narrative is converted to the SWIFT character set before it is wrapped, so the line count reflects the final text.- Repeated type. camt.110 repeats the investigation type as the reason of its first data block. On the way back, a reason identical to the type is not counted twice, so a single-code query round-trips cleanly.
- Sibling detection. A bare MT295 detects as
mt195; send the FIN envelope orfrom=mt295to keep the type.
Example
curl -sS -X POST "https://api.transmute.403fin.io/v1/convert?to=camt.110" \
-H "Authorization: Bearer $TRANSMUTE_KEY" \
-H "Content-Type: text/plain" \
--data-binary @- <<'MT'
:20:QRY-2026-0001
:21:PAY-2026-0001
:75:/UPAY/
:77A:PLEASE CONFIRM THE BENEFICIARY
WAS CREDITED
MT
The result document, formatted:
<InvstgtnReq>
<MsgId>QRY-2026-0001</MsgId>
<RqstrInvstgtnId>QRY-2026-0001</RqstrInvstgtnId>
<InvstgtnTp><Cd>UPAY</Cd></InvstgtnTp>
<Undrlyg><IntrBk><OrgnlEndToEndId>PAY-2026-0001</OrgnlEndToEndId></IntrBk></Undrlyg>
<Rqstr><Pty><Nm>NOTPROVIDED</Nm></Pty></Rqstr>
<Rspndr><Pty><Nm>NOTPROVIDED</Nm></Pty></Rspndr>
</InvstgtnReq>
<InvstgtnData>
<Seq>1</Seq>
<Rsn><Cd>UPAY</Cd></Rsn>
<AddtlReqData><ReqNrrtv>PLEASE CONFIRM THE BENEFICIARY</ReqNrrtv></AddtlReqData>
</InvstgtnData>
<InvstgtnData>
<Seq>2</Seq>
<Rsn><Cd>UPAY</Cd></Rsn>
<AddtlReqData><ReqNrrtv>WAS CREDITED</ReqNrrtv></AddtlReqData>
</InvstgtnData>
The warnings are two MISSING_REQUIRED_DEFAULTED (info) entries, for InvstgtnReq/Rspndr and InvstgtnReq/Rqstr; meta.targetType is camt.110.001.02.