ISO 20022 をやさしく解説

pain.001とは?ISO 20022 送金指図メッセージを解説

企業が送金を指図するために取引銀行へ送る ISO 20022 メッセージ。その概要、構造、使うべきバージョン、そして公式スキーマで検証できる完全な実例を紹介します。

pain.001は、企業が取引銀行に1件以上の送金を指図するためのISO 20022メッセージです。正式名称はCustomer Credit Transfer Initiationです。"pain"は支払指図(payment initiation)のメッセージ群、.001はメッセージ番号、pain.001.001.09のような末尾はバージョンを表します。形式はXMLで、公式スキーマ(XSD)に照らして検証され、銀行ごとに異なるCSV形式やSWIFTのMT101テキストメッセージに代わるものです。

1分でわかるpain.001#

  • 送信者:企業(支払人、またはその代理人)が自社の取引銀行(支払人側銀行)に送信します。
  • 内容:1つ以上の送金バッチ。各バッチには支払口座、希望実行日、そして任意の件数の受取人への支払が含まれます。
  • 返ってくるもの:銀行はpain.002(Customer Payment Status Report)で応答し、ファイルまたは個々の取引をISO理由コード付きで受理または拒否します。
  • その後:受理されると、銀行は各指図をpacs.008などの銀行間メッセージに変換します。企業がこれを目にすることはありません。
  • 利用範囲:EPCルールブックに基づくSEPA送金、CBPR+に基づくSwift上のクロスボーダー決済(pain.001.001.09)、そして多くの国内決済スキーム。Pain001のサンプルコーパスは17市場・42シナリオをカバーしています。

pain.001メッセージの構造#

すべてのバージョンは、<CstmrCdtTrfInitn>要素の中に同じ3階層の骨格を持ちます。

階層 要素 内容
1 <GrpHdr> グループヘッダー メッセージID、作成日時、取引件数(NbOfTxs)、コントロール合計(CtrlSum)、指図当事者
2 <PmtInf> 支払情報 1バッチ分:支払方法、希望実行日、支払人、支払人の口座と銀行、手数料負担区分
3 <CdtTrfTxInf> 送金取引 1件の支払:エンドツーエンド参照、金額と通貨、受取人、受取人の口座と銀行、送金情報

1つのファイルには複数の<PmtInf>バッチを含めることができ、各バッチには多数の<CdtTrfTxInf>支払を含められます。NbOfTxsとCtrlSumはファイル単位とバッチ単位の両方に現れ、対象となる支払と一致していなければなりません。これは銀行がファイルを拒否する最も一般的な理由の一つです。

pain.001の完全なサンプル#

これはpain.001.001.09による単一のSEPA送金で、Pain001のサンプルコーパスからそのまま引用したものです。公式のISO 20022 XSDによる検証に合格しています。当事者、IBAN、BICはすべて架空のものです。

<?xml version='1.0' encoding='UTF-8'?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
  <CstmrCdtTrfInitn>
    <GrpHdr>
      <MsgId>OML-SCT-20260921</MsgId>
      <CreDtTm>2026-09-21T12:00:00</CreDtTm>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <InitgPty>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </InitgPty>
    </GrpHdr>
    <PmtInf>
      <PmtInfId>SCT-20260921-IT-01</PmtInfId>
      <PmtMtd>TRF</PmtMtd>
      <BtchBookg>false</BtchBookg>
      <NbOfTxs>1</NbOfTxs>
      <CtrlSum>2200.00</CtrlSum>
      <PmtTpInf>
        <SvcLvl>
          <Cd>SEPA</Cd>
        </SvcLvl>
      </PmtTpInf>
      <ReqdExctnDt>
        <Dt>2026-09-22</Dt>
      </ReqdExctnDt>
      <Dbtr>
        <Nm>Officine Meccaniche Lombarde SpA</Nm>
        <PstlAdr>
          <PstCd>20123</PstCd>
          <TwnNm>Milano</TwnNm>
          <Ctry>IT</Ctry>
          <AdrLine>Via Torino 15</AdrLine>
        </PstlAdr>
      </Dbtr>
      <DbtrAcct>
        <Id>
          <IBAN>IT48T78971134594OGDKY5VXE41</IBAN>
        </Id>
      </DbtrAcct>
      <DbtrAgt>
        <FinInstnId>
          <BICFI>TLAOIT60</BICFI>
        </FinInstnId>
      </DbtrAgt>
      <ChrgBr>SLEV</ChrgBr>
      <CdtTrfTxInf>
        <PmtId>
          <EndToEndId>OML-2026-0921-01</EndToEndId>
        </PmtId>
        <Amt>
          <InstdAmt Ccy="EUR">2200.00</InstdAmt>
        </Amt>
        <CdtrAgt>
          <FinInstnId>
            <BICFI>MHXHITI0</BICFI>
          </FinInstnId>
        </CdtrAgt>
        <Cdtr>
          <Nm>Fonderia Bresciana Srl</Nm>
          <PstlAdr>
            <PstCd>25121</PstCd>
            <TwnNm>Brescia</TwnNm>
            <Ctry>IT</Ctry>
          </PstlAdr>
        </Cdtr>
        <CdtrAcct>
          <Id>
            <IBAN>IT23J14887404856NF3794IGWXN</IBAN>
          </Id>
        </CdtrAcct>
        <RmtInf>
          <Ustrd>Fattura 117/2026</Ustrd>
        </RmtInf>
      </CdtTrfTxInf>
    </PmtInf>
  </CstmrCdtTrfInitn>
</Document>

ご自身のデータでブラウザデモをお試しください。CSVからpain.001ファイルを作成し、データを端末の外に出すことなく公式スキーマで検証します。

pain.001のバージョン#

ISOはメッセージモデルが変わると新しいバージョンを公開します。銀行やスキームはそれぞれ特定のバージョンを受け付けるため、送信すべきバージョンは取引銀行のチャネル資料に記載されたものです。

バージョン 備考
pain.001.001.03 長年使われてきたSEPAとCGIの定番バージョン。銀行を<BIC>で識別
.04, .05, .06, .07, .08 特定のチャネルで使われる保守バージョン
pain.001.001.09 CBPR+がSwift向けに採用した2019年版。銀行を<BICFI>で識別し、LEIとUETRの伝達に対応
.10, .11, .12 2019年以降の改良版
pain.001.001.13 2026年3月19日にISOが公開。任意項目の一意取引識別子(UnqTxIdr)を追加

互換性マトリクスで、Pain001が生成・検証・相互移行できるバージョンを確認できます。

メッセージ 方向 目的
pain.001 企業から取引銀行へ 送金を指図(資金を送り出す)
pain.002 銀行から企業へ pain.001またはpain.008の状態を通知:受理、一部受理、拒否。理由コード付き
pain.008 企業から取引銀行へ 口座振替を指図(委任に基づき資金を回収)
pacs.008 銀行から銀行へ pain.001の指図が変換される銀行間送金
MT101 企業または銀行、Swift経由 pain.001が置き換える旧来のテキストメッセージ"Request for Transfer"。Swiftは2026年8月、銀行間MT101リレーの廃止を延期しました(Swift)。MT101からpain.001へを参照

用語集では、その他のISO 20022用語をわかりやすく解説しています。

銀行がpain.001ファイルを拒否する理由#

ファイルは整形式のXMLであっても拒否されることがあります。チェックは次の層で積み重なります。

  1. スキーマ:ファイルは、そのバージョンの公式XSDによる検証に合格しなければなりません。
  2. データ品質:IBANのチェックディジットが正しく、BICの形式が正しく、日付と金額が有効で、NbOfTxsとCtrlSumが支払と一致していること。
  3. スキームのルール:SEPA、CBPR+、国内スキームは、使用可能な文字セットや構造化住所など、独自の制約を追加します。
  4. 取引銀行のプロファイルとチャネル:各銀行は、スキームに加えて独自の利用ガイドラインを公開しています。

Pain001は、ファイルが銀行に届く前に最初の3層をチェックし、4層目は銀行が確認するものであることを明示しています。

pain.001ファイルの作成方法#

  • スプレッドシートから:Excelからpain.001へは、ExcelやCSVの支払リストを検証済みのファイルに変換します。
  • ブラウザで:デモは、アップロードなしでローカルにファイルを生成・検証します。
  • コードまたはコマンドラインから:オープンソースのpain001ライブラリをインストールして、次を実行します。
pain001 -t pain.001.001.09 -d payments.csv -o out/

技術リファレンスですべてのオプションを、よくある質問でトレジャリー、オペレーション、エンジニアリングの各チームから多い質問を確認できます。

出典#