Build the mandatory GrpHdr, PmtInf, and CdtTrfTxInf blocks of an ISO 20022 pain.001.001.09 message and batch multiple transactions per debtor account correctly
domain: iso20022.org · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Populate the Group Header (GrpHdr) once per message with a message identification, creation date-time, and the total number and control sum of the individual transactions it carries
Create a separate Payment Information (PmtInf) block for each distinct combination of debtor account, requested execution date, and payment method your receiving bank's channel requires, checking that bank's implementation guide since exact batching rules are bank-specific
Set the Payment Method element to TRF for credit transfers (as opposed to CHK for cheques) inside each PmtInf block
Nest one Credit Transfer Transaction Information (CdtTrfTxInf) element per transaction inside its PmtInf block, carrying the creditor, creditor agent, amount, and remittance information
Set the charge bearer code (e.g. SHAR, DEBT, or CRED) consistently with what your receiving bank expects, since mismatches are a common rejection cause
Validate the finished file against your bank's specific pain.001.001.09 implementation guide before submission, since banks layer additional bank-specific restrictions on top of the base ISO schema
Known gotchas
The base ISO 20022 schema is more permissive than what most banks actually accept; real submission requirements (batching rules, required vs optional elements, max transactions per file) come from each bank's own implementation/usage guide, not the schema alone
Numbering and control-sum totals in the Group Header must exactly match the sum of everything nested below it, or many bank gateways reject the whole file rather than just the offending batch
pain.001.001.09 is one version among several actively used pain.001 versions; confirm which version your receiving bank or corporate-to-bank channel expects before building, since older versions have different mandatory fields
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?