pacs008 logo pacs008

Trust Centre

This page is generated from the same registries the product is built from, so it cannot drift from what the software actually does. Everything below is verified as of 2026-07-28.

At a glance

Licence Apache-2.0
Current version 0.0.8
Ruleset version 2026.11.0
Ruleset hash sha256:a27fe2e7a04f36e9645310984e7142e58d2d5467490207479e689dd6fbbb668f
Minimum Python 3.10 (tested on 3.10, 3.11, 3.12)
Source https://github.com/sebastienrousseau/pacs008
Package PyPI
Last verified 2026-07-28
Next review due 2026-08-28

Who maintains this

pacs008 is maintained by Sebastien Rousseau. It is an open-source project with a small maintainer base — at present, effectively one person.

We state that plainly because it is material to an adoption decision. A single maintainer means limited review redundancy and no guaranteed response time outside the published policy. If you are evaluating pacs008 for production payment workflows, weigh that alongside the licence and the validation limitations below, and consider pinning a known version.

What each interface can validate

Validation is layered. A result from one layer says nothing about the others, and no interface reports a layer it did not run.

Layer Python CLI REST Browser
Input Safety & Parsing (Layer 0) Stable Stable Stable Beta
Input Schema Validation (Layer 1) Stable Stable Stable Stable
Identifier & Format Verification (Layer 2) Stable Stable Stable Stable
XML Syntax & Namespace Validation (Layer 3) Stable Stable Stable Stable
XSD Sequence & Cardinality Checks (Layer 4) Stable Stable Stable Beta
ISO Semantic Consistency (Layer 5) Stable Stable Stable Not implemented
Scheme Profile Rules — CBPR+, CHAPS (Layer 6) Stable Stable Stable Beta
Effective-Date Rules — 14 Nov 2026 (Layer 7) Stable Stable Stable Beta
Organisation Policy Packs (Layer 8) Not implemented Not implemented Not implemented Not implemented

Published limitations

These are the layers the browser Workbench does not evaluate. It is marked beta for this reason.

Layer Browser status Why
Input Safety & Parsing (Layer 0) Beta CSV/JSON parsing present; no file-size or MIME enforcement implemented (no MAX_FILE_SIZE in static/js)
XSD Sequence & Cardinality Checks (Layer 4) Beta libxml2 compiled to WebAssembly, run in a Web Worker against 22 schemas served from this origin, covering pacs.008, pain.001/002/007/008 and camt.110/111. Beta because the schema set is a snapshot and any message type without a published schema reports 'not evaluated' rather than a pass
ISO Semantic Consistency (Layer 5) Not implemented No control-sum, transaction-count or cross-field consistency checks in static/js
Scheme Profile Rules — CBPR+, CHAPS (Layer 6) Beta Postal address classified as fully structured / hybrid / unstructured, plus LEI format (ISO 17442); no wider profile rule set
Effective-Date Rules — 14 Nov 2026 (Layer 7) Beta The 2026 deadline is hardcoded in the address classifier; there is no selectable effective date
Organisation Policy Packs (Layer 8) Not implemented Not implemented in any interface

A passing result in the Workbench is not a statement about the layers above. For XSD and ISO-semantic checks, use the Python library, CLI or REST service.

Browser XSD validation

The browser now performs real XSD validation, using libxml2 compiled to WebAssembly and run in a Web Worker. It checks element order, cardinality and datatypes — constraints that well-formedness parsing cannot see.

It is marked beta because the published schema set is a snapshot. Any message type without a schema here reports not evaluated, never a pass. Every result names the schema and its SHA-256 hash, so a report says exactly what it was checked against.

Message family Versions available
camt.110 01
camt.111 01, 02
pacs.008 13
pain.001 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13
pain.002 03, 12, 14, 15
pain.007 13
pain.008 02, 12

Note what this does and does not mean for pain and camt: the browser can check whether such a message is structurally valid, which covers reading an incoming camt.110. The package still cannot generate or parse them. Validating a message is not the same as supporting it, and the message coverage table above is the one that describes support.

If the engine or the schema fails to load, the result is not evaluated with the reason shown. That is deliberate — a validator that quietly reports success when it did not run is worse than one that does not run at all.

The engine and schema are about 850 KB and download only when you ask for validation, not on page load.

Schemas are served from this origin under the ISO 20022 terms of use, which state the material is intended to be used and reproduced freely. See the attribution below.

Still not evaluated in the browser: ISO semantic consistency, such as whether a control sum matches the sum of its transactions. Use the Python library, CLI or REST service for that. The full record is in DECISIONS.md (D-003).

Message coverage

Verified against the templates shipped in the package.

Family Name Versions Count
pacs.008 FI to FI Customer Credit Transfer pacs.008.001.01 - .13 13
pacs.002 FI to FI Payment Status Report pacs.002.001.12 1
pacs.003 FI to FI Customer Direct Debit pacs.003.001.09 1
pacs.004 Payment Return pacs.004.001.11 1
pacs.007 FI to FI Payment Reversal pacs.007.001.11 1
pacs.009 Financial Institution Credit Transfer pacs.009.001.10 1
pacs.010 Financial Institution Direct Debit pacs.010.001.05 1
pacs.028 FI to FI Payment Status Request pacs.028.001.05 1

Not implemented

We list these because their absence is easy to assume away.

Family Status Note
pain.* Not implemented The package cannot generate or parse pain messages. The browser workbench can now validate pain.001, pain.002, pain.007 and pain.008 against their XSDs. Structural validation only. Scoped in sebastienrousseau/pacs008#13. Tracked
camt.* Not implemented The package cannot generate or parse camt messages. The browser workbench can now validate camt.110 and camt.111 against their XSDs, which covers the November 2026 receive-and-consume obligation for reading an incoming camt.110 — but structural validation is not the same as support. Scoped in sebastienrousseau/pacs008#12. Tracked
head.001 Not implemented Business Application Header not shipped as a standalone template.

Scheme profiles

  • SWIFT CBPR+ (cbpr-plus) — stable, effective 2026-11-14
  • Bank of England CHAPS (chaps-uk) — stable, effective 2026-11-14
  • Eurosystem T2 RTGS (t2-rtgs) — stable, effective 2026-11-14
  • US Federal Reserve Fedwire (fedwire) — stable, effective 2025-03-10
  • HVPS+ High-Value Payments (hvps-plus) — stable, effective 2026-11-14
  • SEPA Instant Credit Transfer (sct-inst) — stable, effective 2025-01-01

Rule sources

ID Publisher Document Effective Verified
SWIFT-ADDR-2026 S.W.I.F.T. SC SWIFT CBPR+ Removal of Unstructured Address Guidelines 2026-11-14 2026-07-28
BOE-CHAPS-2026 Bank of England Policy Statement — Mandating ISO 20022 Enhanced Data in CHAPS 2026-11-14 2026-07-28
ISO-20022-PACS008-13 ISO 20022 Registration Authority Financial Innovation & Transfer — pacs.008.001.13 Message Definition 2025-01-01 2026-07-28

ISO 20022 attribution

pacs008.com is not the official ISO 20022 website. The sole source of up-to-date materials and information on ISO 20022 message standards and the Repository is https://www.iso20022.org/.

ISO 20022 material is used under the ISO 20022 Intellectual Property Right Policy, which states that the material is intended to be used and reproduced freely by all interested users. That policy also requires the statement above, because the Repository changes frequently and only the official site is current.

Verified against the published terms on 2026-07-29.

Security and release integrity

  • Vulnerability disclosuresecurity.txt. Report privately; do not open a public issue.
  • Software bill of materialsCycloneDX SBOM, generated each build.
  • LicenceApache-2.0. The Apache Software Foundation publishes the licence in English only and does not recognise translations, so the English text is the only legally binding version.
  • Security architecture — see Security.

Data handling

The browser Workbench processes data locally in the page. Payment payloads are not sent to pacs008.com, not retained, and not included in analytics — there are no analytics. Every script is served from pacs008.com itself, and the Content-Security-Policy restricts script-src and connect-src to 'self'. See Privacy.

You remain responsible for following your own organisation's data-handling policy. Prefer synthetic data when evaluating.

What this project is not

  • Not a bank, and not affiliated with SWIFT, the Bank of England, or any scheme operator.
  • Does not transmit, route, or settle payments.
  • Scheme names are used descriptively to identify the rules implemented.
  • A passing validation result does not guarantee acceptance by any counterparty or production system. Validate against your own contractual and scheme obligations.