KibiPay
HomeBlog › ISO 20022

pain.001 vs pacs.008: Who Sends What

6 min read ISO 20022
ISO 20022MessagingPayments
pain.001 vs pacs.008: Who Sends What

If you work with ISO 20022 for any length of time, you will run into two message types over and over: pain.001 and pacs.008. They are both about credit transfers, they carry overlapping data, and they are constantly mixed up. But they live in different parts of the payment chain and are sent by different actors. Getting the distinction right is essential to building correct integrations. This post explains who sends what, and how the two messages relate.

The two message families

ISO 20022 organises messages into business areas identified by a four-letter prefix. Two of the most important for credit transfers are:

So the prefix already tells you the domain: pain is the customer-to-bank space, and pacs is the interbank space. The number after the prefix identifies the specific message, and a version suffix follows, for example pain.001.001.09.

pain.001: the instruction from customer to bank

The pain.001, formally the CustomerCreditTransferInitiation, is how a payer instructs its bank to make one or more credit transfers. A corporate treasury system typically generates a pain.001 file containing a group header, one or more payment information blocks (grouping payments that share a debit account and execution date), and the individual credit transfer transactions with the beneficiaries.

Key characteristics of pain.001:

pacs.008: the transfer between banks

The pacs.008, formally the FIToFICustomerCreditTransfer, is the interbank message that actually carries the payment from the debtor's bank to the creditor's bank, usually through a clearing system or market infrastructure. When your bank receives your pain.001, it decides which rail to use and generates the corresponding pacs.008 to move the money.

Key characteristics of pacs.008:

How they chain together

Picture a corporate paying a supplier abroad. The flow looks like this:

One customer intention (pain.001) can therefore spawn many interbank transactions (pacs.008), one for each payment in the batch. The debtor and creditor identity data carries through, but the sender and receiver of the message change from customer-to-bank to bank-to-bank.

Why the distinction matters in practice

Mixing these up leads to real bugs. If you are building a corporate payment integration, you produce and consume pain messages; you generally never emit a pacs.008 unless you are a bank or a payment institution connected to a clearing system. If you are building scheme connectivity, you live in the pacs world and must handle the Business Application Header, settlement fields, and interbank status messages. Knowing which side of the customer-bank boundary you sit on tells you exactly which messages you own.

Key takeaways

See these rails in motion

KibiPay connects UK Faster Payments, Bacs, CHAPS, Mojaloop mobile money and Solana behind one API, with ISO 20022 messaging and real-time fraud & AML screening.

Open the live console How it works