ISO 20022 詳解

什麼是 pain.001?ISO 20022 貸記轉帳發起訊息

企業向往來銀行發送、用於發起貸記轉帳的 ISO 20022 報文:它是什麼、如何構成、應使用哪個版本,以及一個可通過官方結構描述驗證的完整範例。

pain.001 是企業向其銀行傳送、用以發起一筆或多筆貸記轉帳的 ISO 20022 訊息。其全名為 Customer Credit Transfer Initiation(客戶貸記轉帳發起):"pain" 代表付款發起訊息系列,.001 是訊息編號,後綴(例如 pain.001.001.09)代表版本。它採用 XML 格式,依官方結構描述(XSD)驗證,並取代各銀行自訂的 CSV 格式與 SWIFT MT101 文字訊息。

一分鐘認識 pain.001#

  • 由誰傳送:企業(付款人,或代表其行事的代理人)將其傳送給自己的銀行(付款人代理行)。
  • 包含什麼:一個或多個貸記轉帳批次,每個批次包含一個付款人帳戶、一個指定執行日期,以及任意筆數給收款人的付款。
  • 回覆什麼:銀行以 pain.002(客戶付款狀態報告)回覆,使用 ISO 原因代碼接受或拒絕整個檔案或個別交易。
  • 之後會發生什麼:一經受理,銀行會將每筆指示轉換為 pacs.008 等銀行間訊息,企業不會看到這些訊息。
  • 使用情境:遵循 EPC 規則手冊的 SEPA 貸記轉帳、在 Swift 上遵循 CBPR+ 的跨境付款(pain.001.001.09),以及許多國內支付制度。Pain001 的範例語料庫涵蓋 17 個市場的 42 個情境。

pain.001 訊息的結構#

所有版本在 <CstmrCdtTrfInitn> 元素內都採用相同的三層架構。

層級 元素 包含內容
1 <GrpHdr> 群組標頭 訊息 ID、建立時間戳記、交易筆數(NbOfTxs)、控制總額(CtrlSum)、發起方
2 <PmtInf> 付款資訊 一個批次:付款方式、指定執行日期、付款人、付款人帳戶及代理行、費用負擔方
3 <CdtTrfTxInf> 貸記轉帳交易 一筆付款:端對端參考編號、金額與幣別、收款人、收款人帳戶及代理行、匯款資訊

一個檔案可包含多個 <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 ISO 於 2026 年 3 月 19 日發布;新增選用的唯一交易識別碼(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 會在檔案送達銀行之前檢查前三層,並明確說明第四層須由銀行確認。

如何建立 pain.001 檔案#

  • 從試算表:從 Excel 到 pain.001 可將 Excel 或 CSV 付款清單轉換為經驗證的檔案。
  • 在瀏覽器中:示範會在本機產生並驗證檔案,無須上傳。
  • 透過程式碼或命令列:安裝開源的 pain001 函式庫並執行:
pain001 -t pain.001.001.09 -d payments.csv -o out/

技術參考涵蓋所有選項,常見問題解答了財務、營運與工程團隊最常提出的問題。

資料來源#