Message FamiliesStatement Requests

Statement Requests

The request family: MT920 requests for a statement or interim report to and from camt.060 account reporting requests.

Formats

FormatWhat it isVersions acceptedEmitted by default
mt920Request message (asks for an MT940, MT941, MT942 or MT950)n/an/a
camt.060Account reporting request.001.05.001.05

Pairs

FromTo
mt920camt.060
camt.060mt920
canonicalmt920, camt.060

/v1/normalize returns both formats as a request document.

How fields map

The canonical model is a statement request holding one or more report requests, each naming the report wanted, the account and optional floor limits.

MT920 to camt.060.

  • :20: becomes the message id.
  • Each :12: / :25: / :34F: sequence becomes one reporting request.
  • :12: names the report: 940 and 950 ask for a camt.053.001.08, 942 and 941 for a camt.052.001.08. Any other number is carried as written.
  • :25: becomes the account (an IBAN when it looks like one).
  • :34F: floor limits are copied exactly: D means debit entries (DEBT), C credit entries (CRED), no mark both (BOTH).

camt.060 to MT920. The requested message name is turned back into :12: (camt.053… → 940, camt.052… → 942); the account and floor limits are written per sequence.

Where information is lost

SituationWarning
camt.060 needs an account owner, an entry status and a credit/debit indicator that MT920 does not carry (see Conventions)MISSING_REQUIRED_DEFAULTED
camt.060 creation timeMISSING_REQUIRED_DEFAULTED
The 940/950 or 941/942 distinction (both map to the same camt report)DROP_FIELD
A :12: message type with no camt equivalentCODE_UNMAPPED_PROPRIETARY
Going to MT920: reporting period (MT920 cannot ask for one)DROP_FIELD (lossy)
Going to MT920: entry status, credit/debit indicator, balance types, request id, account owner and servicerDROP_FIELD
Going to MT920: a request for a report with no MT920 twin, such as a camt.054DROP_FIELD (lossy)
Going to MT920: floor limits that do not fit one BOTH limit or one debit plus one credit limitDROP_FIELD (lossy)
A camt.060 message id over 16 charactersTRUNC_REFERENCE
camt.060 elements with no canonical slot (MsgSndr, account name, time range, sequence range)DROP_FIELD

Conventions

  • Credit/debit indicator defaulting. camt.060 requires a credit/debit indicator whenever it describes the requested transactions. When the source does not state one, transmute writes CRDT, or DBIT if every floor limit is a debit limit, and flags it. The entry status defaults to BOOK the same way.
  • When ReqdTxTp appears. The requested-transaction block is written only when the request has floor limits, an entry status or a credit/debit indicator. An MT920 without :34F: produces none of these defaults.
  • Account owner placeholder. MT920 has no account owner, so camt.060 gets the party name NOTPROVIDED.
  • No requests left. If every request of a camt.060 drops on the way to MT920 (for example, only camt.054 reports were requested), the conversion returns 422 unsupported-conversion.

Example

curl -sS -X POST "https://api.transmute.403fin.io/v1/convert?to=camt.060" \
  -H "Authorization: Bearer $TRANSMUTE_KEY" \
  -H "Content-Type: text/plain" \
  --data-binary @- <<'MT'
:20:REQ-2026-0001
:12:942
:25:DE89370400440532013000
:34F:EURD1000,
:34F:EURC2500,50
MT

The result document, formatted:

<GrpHdr><MsgId>REQ-2026-0001</MsgId>...</GrpHdr>
<RptgReq>
  <ReqdMsgNmId>camt.052.001.08</ReqdMsgNmId>
  <Acct><Id><IBAN>DE89370400440532013000</IBAN></Id></Acct>
  <AcctOwnr><Pty><Nm>NOTPROVIDED</Nm></Pty></AcctOwnr>
  <ReqdTxTp>
    <Sts><Cd>BOOK</Cd></Sts>
    <CdtDbtInd>CRDT</CdtDbtInd>
    <FlrLmt><Amt Ccy="EUR">1000</Amt><CdtDbtInd>DEBT</CdtDbtInd></FlrLmt>
    <FlrLmt><Amt Ccy="EUR">2500.50</Amt><CdtDbtInd>CRED</CdtDbtInd></FlrLmt>
  </ReqdTxTp>
</RptgReq>
"warnings": [
  { "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "sourceField": "createdAt", "targetField": "GrpHdr/CreDtTm", "detail": "..." },
  { "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "sourceField": "requests[].account.owner", "targetField": "RptgReq/AcctOwnr", "detail": "..." },
  { "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "sourceField": "requests[].entryStatus|creditDebit|floorLimits[]", "targetField": "RptgReq/ReqdTxTp", "detail": "..." },
  { "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "sourceField": "requests[].entryStatus|creditDebit|floorLimits[]", "targetField": "RptgReq/ReqdTxTp", "detail": "..." }
],
"meta": { "detectedType": "mt920", "targetType": "camt.060.001.05", "...": "..." }

The floor limits are a debit and a credit limit, so the indicator defaults to CRDT. With only :34F:EURD1000, it would default to DBIT.