> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mnai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Message reference

> What Meridian puts in each pacs.008 field, what the bank returns in the pacs.002, and the Meridian extensions to ISO 20022.

This page lists every field Meridian sends in the pacs.008 credit transfer and every field the bank returns in the pacs.002 status report. The endpoint pages carry the full JSON schemas and examples.

Paths are relative to the single transaction, `FIToFICstmrCdtTrf.CdtTrfTxInf[0]`, unless they start with `GrpHdr`.

## pacs.008: what Meridian sends

### Group header

| Field | Always sent | Content |
| :- | :- | :- |
| `GrpHdr.MsgId` | Yes | `<InstrId>-withdrawal-request`. Echo it as `OrgnlMsgId`. |
| `GrpHdr.CreDtTm` | Yes | When Meridian built this request, in UTC. It can differ between calls for the same credit. |
| `GrpHdr.NbOfTxs` | Yes | Always `"1"`. |
| `GrpHdr.SttlmInf.SttlmMtd` | Yes | Always `CLRG`. |
| `GrpHdr.InstgAgt` | Yes | Meridian's side of the transfer. |
| `GrpHdr.InstdAgt` | Yes | The bank. |

### Identification and amount

| Field | Always sent | Content |
| :- | :- | :- |
| `PmtId.EndToEndId` | Yes | Meridian's unique ID for the credit and the **idempotency key**. The path parameter of the status endpoint. |
| `PmtId.InstrId` | Yes | Meridian's credit reference. Echo it as `OrgnlInstrId`. |
| `IntrBkSttlmAmt.Amt` | Yes | The amount to credit, as a JSON number with up to 2 decimal places. |
| `IntrBkSttlmAmt.Ccy` | Yes | The currency to credit, ISO 4217. |
| `XchgRate` | Cross-border only | The rate applied from the sender's currency, as a decimal string. |
| `Purp.Prtry` | Yes | The Meridian product that originated the credit, for example `REMITTANCES` or `VIRTUAL_ACCOUNTS`. |
| `RmtInf.Ustrd` | When present | The sender's remarks and a customer-facing reference. Print them on statements where your core allows. |

### Recipient

| Field | Always sent | Content |
| :- | :- | :- |
| `CdtrAcct.Id.Othr.Id` | Yes | The account to credit, in the bank's canonical format. `Id.IBAN` is used instead where IBANs apply. |
| `CdtrAcct.Ccy` | Yes | The account currency. |
| `Cdtr.Nm` | Yes | The recipient's full name. |
| `Cdtr.GvnNm`, `Cdtr.FmlyNm` | When known | The recipient's first and last name. See [Meridian extensions](#meridian-extensions). |
| `Cdtr.PstlAdr.AdrLine` | When known | The recipient's address lines. |
| `CdtrAgt.FinInstnId` | Yes | The bank, by `BICFI` or `ClrSysMmbId.MmbId`. |

### Sender

The sender is the originator of the funds and the subject of compliance screening.

| Field | Always sent | Content |
| :- | :- | :- |
| `Dbtr.Nm` | Yes | The sender's full name. |
| `Dbtr.GvnNm`, `Dbtr.FmlyNm` | Yes | The sender's first and last name. See [Meridian extensions](#meridian-extensions). |
| `Dbtr.PrvtId.DtAndPlcOfBirth.BirthDt` | Yes | The sender's date of birth (YYYY-MM-DD). |
| `Dbtr.PstlAdr` | When known | The sender's address: `AdrLine`, `TwnNm`, `CtrySubDvsn`, `PstCd`, `Ctry`. |
| `Dbtr.CtryOfRes` | When known | The sender's country of residence, ISO 3166-1 alpha-2. |
| `DbtrAcct.Id.Othr.Id` | Yes | The sender's account identifier at Meridian. |
| `DbtrAcct.Ccy` | Yes | The currency the sender funded the transfer in. |
| `DbtrAgt.FinInstnId` | Yes | The sender's institution. `Othr.Id` is `UNKNOWN_INSTITUTION` when Meridian has no BIC or clearing member ID for it. |

## Meridian extensions

The message follows the ISO 20022 structure with two additions. Support both, and ignore any key you do not recognize.

<AccordionGroup>
  <Accordion title="Split names: GvnNm and FmlyNm">
    pacs.008 carries a party's name only as a single `Nm`. Many banks match recipients on first and last name separately, so Meridian also sends `GvnNm` (given name) and `FmlyNm` (family name) on `Dbtr` and `Cdtr`. `Nm` is normally the two joined with a space.
  </Accordion>

  <Accordion title="Cross-border data: SplmtryData /MeridianPay/CrossBorderInfo">
    On cross-border credits, Meridian sends one `SplmtryData` entry with `PlcAndNm` set to `/MeridianPay/CrossBorderInfo`. Its `Envlp` is a flat object of string values, and every key is optional:

    | Key | Content |
    | :- | :- |
    | `sourceAmount` | The amount the sender paid, as a decimal string |
    | `sourceCurrency` | The currency the sender paid in, ISO 4217 |
    | `exchangeRate` | The customer exchange rate applied |
    | `baseExchangeRate` | The exchange rate before Meridian's margin |
    | `midMarketRate` | The mid-market rate at the time of the transfer |
    | `reference` | A customer-facing reference for the transfer |
    | `relationToReceiver` | The sender's relationship to the recipient |
    | `sourceOfIncome` | The sender's source of income |

    Some corridors need further compliance fields. Meridian agrees them with the bank during onboarding and adds them to this envelope.
  </Accordion>
</AccordionGroup>

## pacs.002: what the bank returns

Every endpoint and the status webhook return the same pacs.002 shape, with exactly one element in `TxInfAndSts`.

| Field | Required | Content |
| :- | :- | :- |
| `GrpHdr.MsgId` | Yes | The bank's ID for this status report. Meridian stores it for support requests. |
| `GrpHdr.CreDtTm` | Yes | When the bank produced the report. |
| `OrgnlGrpInfAndSts.OrgnlMsgId` | Yes | Echo of `GrpHdr.MsgId` from the pacs.008. |
| `OrgnlGrpInfAndSts.OrgnlMsgNmId` | No | `pacs.008`. |
| `TxInfAndSts[0].OrgnlEndToEndId` | Yes | Echo of `PmtId.EndToEndId`. Meridian matches the response to the credit on this field. |
| `TxInfAndSts[0].OrgnlInstrId` | No | Echo of `PmtId.InstrId`. |
| `TxInfAndSts[0].TxSts` | Yes | `RCVD` from create, `ACCP` or `RJCT` from validate, and `ACSP`, `ACSC`, `RJCT` or `PDNG` from commit onward. See [Status codes](/products/bank-transfers/credit-api-example/index#status-codes). |
| `TxInfAndSts[0].StsRsnInf[].Rsn.Cd` | On `RJCT` | An ISO 20022 reason code. See [Rejection reasons](/products/bank-transfers/credit-api-example/index#rejection-reasons). |
| `TxInfAndSts[0].StsRsnInf[].AddtlInf` | No | Human-readable detail. Not shown to customers verbatim. |
| `TxInfAndSts[0].AccptncDtTm` | On `ACSC` and `RJCT` | When the bank reached the reported status. |
| `TxInfAndSts[0].AcctSvcrRef` | After commit | The bank's own reference for the transfer, used for reconciliation and support. |
