Customer Payments
The payment family: MT103 single customer credit transfers to and from pacs.008, including charges, parties, remittance and the UETR.
Formats
| Format | What it is | Versions accepted | Emitted by default |
|---|---|---|---|
mt103 | Single customer credit transfer | n/a | n/a |
pacs.008 | FI-to-FI customer credit transfer | .001.08 – .001.13 | .001.08 |
Pairs
| From | To |
|---|---|
mt103 | pacs.008, accounting-transaction |
pacs.008 | mt103, accounting-transaction |
canonical | mt103, pacs.008 |
An MT103 carrying /RETN/ or /REJT/ in :72: is not a payment: it is detected as mt103-retn (Returns) or mt103-rejt (Rejects).
How fields map
MT103 to pacs.008.
:20:becomes the group message id and the instruction id.:32A:becomes the interbank settlement date and amount;:33B:the instructed amount;:36:the exchange rate.:50a:becomes the debtor and debtor account;:59a:the creditor and creditor account. Option F lines become a structured postal address, options K and letterless become a name plus address lines.:52a:to:57a:become the agent chain: debtor agent, the three reimbursement agents, the first intermediary, the creditor agent.:70:becomes unstructured remittance. A/RFB/reference also becomes the end-to-end id (when it fits) and a structured creditor reference.:71A:becomes the charge bearer (OUR→DEBT,SHA→SHAR,BEN→CRED); each:71F:/:71G:becomes a charges record.:72:lines become instructions for the next or creditor agent (/INT/,/ACC/) or previous instructing agents (/INS/).:77B:becomes regulatory reporting.- The block 3 UETR
{121:}becomes the UETR.
pacs.008 to MT103. The reverse of the above. The instruction id is preferred for :20:; a party with a structured address is written as option F, otherwise as name and free address lines (option K or letterless). ChrgsInf records become :71F: or :71G: depending on the charge bearer.
Where information is lost
| Situation | Warning |
|---|---|
Mandatory pacs.008 elements with no MT source: creation time, settlement method (INDA), end-to-end id (NOTPROVIDED) | MISSING_REQUIRED_DEFAULTED |
A reference longer than 16 characters going into :20: | TRUNC_REFERENCE |
| A name or address that does not fit four lines of 35 characters | TRUNC_NAME, TRUNC_ADDRESS |
Remittance longer than :70: (four lines of 35) | TRUNC_REMITTANCE |
| Second and third intermediary agents (MT103 has one slot) | DROP_AGENT |
| Purpose, ultimate debtor/creditor and supplementary data with no MT103 field | DROP_FIELD |
| Structured remittance beyond the creditor reference | DROP_FIELD |
A service level or local instrument with no :23B: code; :23B:CRED is written | CODE_UNMAPPED_PROPRIETARY |
:32A:, :33B: and the charges do not add up | AMOUNT_MISMATCH |
| Characters outside the SWIFT character set | CHARSET_TRANSLIT, CHARSET_DROP |
| A UETR that is not a well-formed UUID | UETR_INVALID |
Conventions
- Charges arithmetic. With
OUR, the settled amount is the instructed amount plus the receiver's charges (:71G:); withSHAorBEN, it is the instructed amount minus the sender's charges (:71F:). transmute checks this in both directions and warnsAMOUNT_MISMATCHwhen it does not hold; it never changes an amount the source states. NOTPROVIDED. pacs.008 needs an end-to-end id. When the MT103 has no/RFB/reference, the id is written asNOTPROVIDED.- Bulk. Several MT103s in one request become one pacs.008 with one transaction each. A pacs.008 with several transactions becomes one MT103 per transaction, and
resultis an array. - Standards Release. When a request runs under the SR2026 Standards Release (
srVersion=SR2026), party and agent addresses are converted to the structured or hybrid form that release requires. Under SR2025 they travel as they are.
Example
curl -sS -X POST "https://api.transmute.403fin.io/v1/convert?to=pacs.008" \
-H "Authorization: Bearer $TRANSMUTE_KEY" \
-H "Content-Type: text/plain" \
--data-binary @- <<'MT'
:20:PAY-2026-0001
:23B:CRED
:32A:260610EUR1250,00
:50K:/DE89370400440532013000
JANE EXAMPLE
:52A:AAAADEFF
:57A:BBBBDEFF
:59:/GB29NWBK60161331926819
ACME TOOLS LTD
:70:/RFB/INV-4711
:71A:SHA
MT
The result document, formatted:
<GrpHdr>
<MsgId>PAY-2026-0001</MsgId>
<NbOfTxs>1</NbOfTxs>
<SttlmInf><SttlmMtd>INDA</SttlmMtd></SttlmInf>
</GrpHdr>
<CdtTrfTxInf>
<PmtId><InstrId>PAY-2026-0001</InstrId><EndToEndId>INV-4711</EndToEndId></PmtId>
<IntrBkSttlmAmt Ccy="EUR">1250.00</IntrBkSttlmAmt>
<IntrBkSttlmDt>2026-06-10</IntrBkSttlmDt>
<ChrgBr>SHAR</ChrgBr>
<Dbtr><Nm>JANE EXAMPLE</Nm></Dbtr>
<DbtrAcct><Id><IBAN>DE89370400440532013000</IBAN></Id></DbtrAcct>
<DbtrAgt><FinInstnId><BICFI>AAAADEFF</BICFI></FinInstnId></DbtrAgt>
<CdtrAgt><FinInstnId><BICFI>BBBBDEFF</BICFI></FinInstnId></CdtrAgt>
<Cdtr><Nm>ACME TOOLS LTD</Nm></Cdtr>
<CdtrAcct><Id><IBAN>GB29NWBK60161331926819</IBAN></Id></CdtrAcct>
<RmtInf>...</RmtInf>
</CdtTrfTxInf>
"warnings": [
{ "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "targetField": "GrpHdr/CreDtTm", "detail": "..." },
{ "code": "MISSING_REQUIRED_DEFAULTED", "severity": "info", "targetField": "GrpHdr/SttlmInf/SttlmMtd", "detail": "..." }
],
"meta": { "detectedType": "mt103", "targetType": "pacs.008.001.08", "...": "..." }