財務担当者、支払オペレーション、エンジニア、監査人のための率直な回答です。質問は、実際に尋ねられる形で表現しています。より深い技術的詳細は技術リファレンスをご覧ください。
財務・経理責任者の方へ#
pain.001 とは何ですか?一段落で教えてください。
pain.001 は、顧客が振込を開始するために銀行へ送信する ISO 20022 メッセージであり、SWIFT MT101 や国内のフラットファイルといった形式の XML 版後継です。銀行は受理する前に、スキーマとスキームルールブックに対してこれを検証します。Pain001(本ソフトウェア)は、既にお持ちのデータからこれらのファイルを生成し、提出前に有効であることを証明します。
pain.001 と pain.008 の違いは何ですか?
資金の流れる方向です。pain.001 は振込を開始します — 資金を送り出す側です。pain.008 は口座振替を開始します — マンデート(委任)に基づいて債権を回収する側です。Pain001 は両方を生成します:pain.001 の 10 バージョン(.001.03 から .001.12)と pain.008.001.02 です。
まだ MT101 ファイルを送信しています。移行はどれほど急務ですか?
急務です。SWIFT は 2025 年 11 月に、クロスボーダーの銀行間支払指図における MT カテゴリー 1、2、9 のメッセージを廃止しました。MT をまだ受け付けている企業向けチャネルは、各銀行の裁量による猶予期間中の対応にすぎません。MT101 ローダーは、既存の MT101 フローを、再入力なしで検証済みの pain.001 に変換します。
2026 年 11 月の構造化住所の期限は、当社にとって何を意味しますか?
2026 年 11 月末以降、CBPR+ のクロスボーダー決済では、完全に非構造化の住所は受け付けられなくなります。住所は構造化またはハイブリッドでなければなりません — 自由記述の行ではなく、都市名()や国()といった個別の要素が必要です。マスターデータが住所を一括テキストとして保持している場合、対応すべきはデータそのものであり、銀行との接続ではありません。そこから着手してください。2026 年ブリーフィングでタイムラインを詳しく解説しています。
Pain001 の費用はいくらですか?
無料です。コアは Apache-2.0 / MIT のデュアルライセンスで、コンパニオンパッケージは Apache-2.0 です。商用利用、改変、再配布のすべてが許可されています。規模感の参考として、SWIFT の変換 SDK だけでも年間 €10,000–30,000 の価格が提示されています。
支払オペレーション担当者の方へ#
銀行はなぜ支払ファイルを拒否するのですか?
繰り返し発生する原因は 4 つです:スキーマ違反(誤った要素、誤ったバージョン、誤った名前空間)、不正な識別子(IBAN チェックサムの失敗、不正な形式の BIC)、コントロールトータルの不整合(NbOfTxs / CtrlSum が取引と一致しない)、および ISO 20022 ラテン文字セット外の文字です。Pain001 は、ファイルが存在する前に 4 つすべてを検査します:レコードごとの JSON Schema 検証、mod-97 IBAN および ISO 9362 BIC の検査、コントロールトータルの再計算、文字セットの翻字、そしてレンダリングされた XML の最終 XSD 検証です。
何も生成せずにファイルを検証できますか?
できます — pain001 --dry-run(または validate サブコマンド、あるいは POST /api/v1/validate)をご利用ください。終了コード 0 は有効、1 はフィールドレベルのエラーを伴う検証失敗を意味します。CI や提出前チェックリストに組み込んでください。
どの SEPA ルールブックに対応していますか?
5 つのスキームルールブックが組み込みで提供されています:SEPA Credit Transfer(sepa-sct)、SEPA Instant(sepa-inst)、SEPA Direct Debit Core(sepa-sdd)、SEPA B2B(sepa-b2b)、クロスボーダー送金(xborder-ct)です。--scheme を使うと、合格・不合格となったすべてのルールを確認できます。
データは Excel にあります。何が問題になりますか?
Excel は IBAN のような文字列を暗黙のうちに数値へ変換してしまいます。Excel ローダーは .xlsx/.xlsm を直接読み取り、IBAN 列に数値セルが含まれている場合は即座に停止します — データ破損は銀行ではなく、読み込み時点で検出されます。
500,000 行のバッチはどのように処理されますか?
--streaming は、入力をメモリ制限付きのチャンク(デフォルト 1,000 トランザクション)で処理し、各チャンクは正しく再計算されたコントロールトータルを持つ独立した XML ファイルとして出力されます。同じ理由で、REST API はジョブポーリング付きの POST /api/v1/generate/async を提供しています。
エンジニア・アーキテクトの方へ#
どのように統合すればよいですか — ライブラリ、CLI、それとも API ですか?
3 つすべてが第一級のインターフェースとして存在します:型付きの Python API、CI に適した終了コードを持つ CLI、そして同期・非同期ジョブ・ヘルスチェック・Prometheus メトリクスの各エンドポイントを備えた FastAPI マイクロサービス(pain001 serve)です。基盤の検証パイプラインは同一のため、インターフェース間で結果が食い違うことはありません。
XML 生成は浮動小数点の丸め誤差に対して本当に安全ですか?
金額は、生成とスキーム検証を通じて一貫して decimal.Decimal です — 正確な十進数として解析し、正確な十進数として合計し、浮動小数点表現を使わずにレンダリングします。コントロールトータルは検証済みレコードから再計算され、入力を信頼することは決してありません。
セキュリティ体制はどうなっていますか?
すべての XML 解析は defusedxml を経由します(XXE およびエンティティ展開攻撃をブロックします)。依存関係ツリーに lxml はありません。入力はパストラバーサルバリデーターを通過します。Docker イメージは非 root で実行されます。コアリリースでは CycloneDX SBOM が生成され、サードパーティ製プラグインの検出は PAIN001_DISABLE_PLUGINS=1 で完全に無効化できます。
品質はどのように担保されていますか?
コアでは、100% のラインおよびブランチカバレッジが厳格な CI ゲートとして課されています(検証可能な数値:3,828 行、926 ブランチが 100%)。加えて、厳格な mypy、100% の docstring カバレッジ、Bandit と pip-audit によるセキュリティリンティング、CodeQL スキャンがあります。コンパニオンパッケージも同じ 100% カバレッジの規律を維持しています。
独自形式に対応するよう拡張できますか?
できます — 4 つのプラグインエントリポイントグループ(pain001.loaders、pain001.validators、pain001.schemes、pain001.writers)があります。Excel ローダー自体が公開プロトコルを使用するプラグインであるため、リファレンス実装も兼ねています。
監査・コンプライアンス担当者の方へ#
前四半期に生成されたファイルを再現できますか?
できます。パッケージのバージョンを固定し、同じ入力を再実行すれば、出力は決定的です。ツールチェーンがオープンソースであるため、監査証跡はベンダーの証明書にとどまらず、コードパスそのものにまで及びます。
支払データが当社の環境の外に出ることはありますか?
ありません。すべてのコンポーネント — CLI、ライブラリ、REST API、MCP サーバー、LSP — はローカルで実行されます。テレメトリーも、SaaS へのコールバックも、外部検証サービスもありません。MCP サーバーは stdio のみで通信し、その 17 のツールはすべて読み取り専用かつ冪等であると注釈されています。
Pain001 は誰がメンテナンスしていますか?
ロンドンを拠点とするフィンテックエンジニアリングリーダーの Sebastien Rousseau が、コミュニティのコントリビューターとともにメンテナンスしています。開発は GitHub 上で公開され、リリースは PyPI に公開され、チェンジログはリリースごとにバージョン管理されています。