Câu trả lời thẳng thắn cho thủ quỹ, đội vận hành thanh toán, kỹ sư và kiểm toán viên. Các câu hỏi được diễn đạt đúng theo cách mọi người thường hỏi. Để tìm hiểu kỹ thuật sâu hơn, xem Tài liệu kỹ thuật.
Dành cho lãnh đạo ngân quỹ và tài chính#
pain.001 là gì, tóm gọn trong một đoạn?
pain.001 là thông điệp ISO 20022 mà khách hàng gửi đến ngân hàng của mình để khởi tạo chuyển khoản tín dụng — phiên bản XML kế thừa các định dạng như SWIFT MT101 và tệp phẳng nội địa. Ngân hàng của quý vị xác thực nó theo một lược đồ và một bộ quy tắc scheme trước khi chấp nhận. Pain001 (phần mềm) tạo ra các tệp đó từ dữ liệu quý vị sẵn có và chứng minh chúng hợp lệ trước khi quý vị nộp.
pain.001 và pain.008 khác nhau như thế nào?
Khác ở chiều của dòng tiền. pain.001 khởi tạo chuyển khoản tín dụng — quý vị đẩy tiền đi. pain.008 khởi tạo ghi nợ trực tiếp — quý vị thu về khoản tiền được nợ theo một uỷ nhiệm. Pain001 tạo cả hai: mười phiên bản pain.001 (từ .001.03 đến .001.12) và pain.008.001.02.
Chúng tôi vẫn gửi tệp MT101. Việc di trú cấp bách đến mức nào?
Rất cấp bách. SWIFT đã ngừng các thông điệp MT nhóm 1, 2 và 9 cho chỉ thị thanh toán liên ngân hàng xuyên biên giới vào tháng 11 năm 2025; các kênh doanh nghiệp còn chấp nhận MT chỉ theo quyết định riêng của từng ngân hàng và trong thời gian còn lại rất ngắn. Bộ nạp MT101 chuyển các luồng MT101 hiện có thành pain.001 đã xác thực mà không phải nhập lại bất cứ dữ liệu nào.
Hạn chót địa chỉ có cấu trúc tháng 11 năm 2026 có ý nghĩa gì với chúng tôi?
Từ cuối tháng 11 năm 2026, địa chỉ bưu chính hoàn toàn phi cấu trúc không còn được chấp nhận trong thanh toán xuyên biên giới CBPR+; địa chỉ phải có cấu trúc hoặc dạng lai — các phần tử riêng biệt như thành phố () và quốc gia () thay cho các dòng văn bản tự do. Nếu dữ liệu chủ của quý vị lưu địa chỉ dưới dạng khối văn bản, việc cần làm nằm ở dữ liệu của quý vị, không phải ở kết nối ngân hàng. Hãy bắt đầu từ đó. Bản tóm lược 2026 trình bày chi tiết lộ trình.
Pain001 có giá bao nhiêu?
Không mất phí. Phần lõi được cấp phép kép Apache-2.0 / MIT; các gói đồng hành theo Apache-2.0. Sử dụng thương mại, chỉnh sửa và phân phối lại đều được phép. Để hình dung quy mô, riêng SDK dịch chuyển đổi của SWIFT đã niêm yết ở mức €10,000–30,000 mỗi năm.
Dành cho vận hành thanh toán#
Vì sao ngân hàng từ chối tệp thanh toán?
Bốn nguyên nhân lặp lại: vi phạm lược đồ (sai phần tử, sai phiên bản, sai không gian tên), định danh sai (lỗi số kiểm tra IBAN, BIC sai định dạng), tổng kiểm soát sai lệch (NbOfTxs / CtrlSum không khớp với các giao dịch), và ký tự nằm ngoài bộ Latinh ISO 20022. Pain001 kiểm tra cả bốn trước khi tệp tồn tại: xác thực JSON Schema cho từng bản ghi, kiểm tra IBAN mod-97 và BIC ISO 9362, tính lại tổng kiểm soát, chuyển tự bộ ký tự, và xác thực XSD cuối cùng cho XML đã kết xuất.
Chúng tôi có thể xác thực một tệp mà không tạo ra gì không?
Có — pain001 --dry-run (hoặc lệnh con validate, hoặc POST /api/v1/validate). Mã thoát 0 nghĩa là hợp lệ; 1 nghĩa là xác thực thất bại kèm lỗi ở cấp trường. Hãy đưa vào CI hoặc danh sách kiểm tra trước khi nộp.
Những bộ quy tắc SEPA nào được hỗ trợ?
Năm bộ quy tắc scheme được tích hợp sẵn: SEPA Credit Transfer (sepa-sct), SEPA Instant (sepa-inst), SEPA Direct Debit Core (sepa-sdd), SEPA B2B (sepa-b2b) và chuyển khoản tín dụng xuyên biên giới (xborder-ct). Dùng --scheme để xem từng quy tắc đạt hay không đạt.
Dữ liệu của chúng tôi nằm trong Excel. Có điều gì cần lưu ý?
Excel âm thầm chuyển các chuỗi giống IBAN thành số. Bộ nạp Excel đọc trực tiếp .xlsx/.xlsm và dừng ngay nếu cột IBAN chứa ô kiểu số — lỗi hỏng dữ liệu được phát hiện lúc nạp, không phải tại ngân hàng.
Công cụ xử lý một lô 500,000 dòng như thế nào?
--streaming xử lý dữ liệu đầu vào theo các khối giới hạn bộ nhớ (mặc định 1,000 giao dịch), mỗi khối được xuất thành một tệp XML riêng với tổng kiểm soát được tính lại chính xác. REST API cung cấp POST /api/v1/generate/async với cơ chế thăm dò tác vụ vì cùng lý do đó.
Dành cho kỹ sư và kiến trúc sư#
Chúng tôi tích hợp bằng cách nào — thư viện, CLI hay API?
Cả ba đều là bề mặt hạng nhất: Python API có kiểu tĩnh, CLI với mã thoát thân thiện CI, và vi dịch vụ FastAPI (pain001 serve) với các điểm cuối đồng bộ, tác vụ bất đồng bộ, kiểm tra hoạt động và số liệu Prometheus. Cùng một quy trình xác thực bên dưới, nên kết quả không bao giờ khác nhau giữa các bề mặt.
Việc tạo XML có thực sự an toàn trước sai số làm tròn dấu phẩy động không?
Số tiền là decimal.Decimal từ đầu đến cuối trong quá trình tạo và xác thực scheme — được phân tích như số thập phân chính xác, cộng như số thập phân chính xác, kết xuất mà không qua biểu diễn dấu phẩy động. Tổng kiểm soát được tính lại từ các bản ghi đã xác thực, không bao giờ tin vào dữ liệu đầu vào.
Tình trạng bảo mật ra sao?
Mọi thao tác phân tích XML đều đi qua defusedxml (chặn tấn công XXE và bung thực thể); không có lxml trong cây phụ thuộc. Dữ liệu đầu vào phải qua bộ kiểm tra chống vượt đường dẫn. Ảnh Docker chạy không dùng quyền root. Một SBOM CycloneDX được tạo cho các bản phát hành lõi, và có thể tắt hẳn việc phát hiện plugin bên thứ ba bằng PAIN001_DISABLE_PLUGINS=1.
Chất lượng được bảo đảm như thế nào?
Bao phủ 100% dòng và nhánh là cổng CI bắt buộc trên phần lõi (có thể kiểm chứng: 3,828 dòng, 926 nhánh ở mức 100%), mypy nghiêm ngặt, bao phủ docstring 100%, kiểm tra bảo mật Bandit và pip-audit, và quét CodeQL. Các gói đồng hành tuân thủ cùng kỷ luật bao phủ 100%.
Chúng tôi có thể mở rộng cho một định dạng độc quyền không?
Có — bốn nhóm điểm vào plugin (pain001.loaders, pain001.validators, pain001.schemes, pain001.writers). Bộ nạp Excel tự thân là một plugin dùng giao thức công khai, nên nó đồng thời là một bản triển khai tham chiếu.
Dành cho kiểm toán và tuân thủ#
Chúng tôi có thể tái lập một tệp đã tạo trong quý trước không?
Có. Ghim phiên bản gói, chạy lại cùng dữ liệu đầu vào, và kết quả là tất định. Vì bộ công cụ là mã nguồn mở, dấu vết kiểm toán mở rộng vào chính đường dẫn mã — không chỉ là một xác nhận của nhà cung cấp.
Dữ liệu thanh toán có rời khỏi môi trường của chúng tôi không?
Không. Mọi thành phần — CLI, thư viện, REST API, máy chủ MCP, LSP — đều chạy cục bộ. Không có đo từ xa, không có kết nối ngược về SaaS, không có dịch vụ xác thực bên ngoài. Máy chủ MCP chỉ giao tiếp qua stdio và toàn bộ 17 công cụ của nó được chú thích là chỉ đọc và luỹ đẳng.
Ai duy trì Pain001?
Sebastien Rousseau, một lãnh đạo kỹ thuật fintech tại London, cùng các cộng tác viên cộng đồng. Việc phát triển công khai trên GitHub, các bản phát hành được xuất bản lên PyPI, và nhật ký thay đổi được đánh phiên bản theo từng bản phát hành.