100 documents / month. Full validation, no SLA. Attribution footer on the iso-compliant.com/qrbill renderer.
Start free →Prove your bank files will be accepted — outbound and inbound.
Generate pain.001 / pain.008, validate structured addresses for the SWIFT Nov 14 mandate, and reconcile the camt.053 statements that come back — keyed to your internal invoice ID. Per-document pricing, never a percentage of the wire.
- Inbound camt.053 reconciliation, keyed to your invoice ID — evidence for the files you send
- Structured-address enforcement: fully-unstructured addresses become rejectable on 14 Nov 2026
- Deterministic XML emission — no LLM in the request path
api.iso-compliant.com/v1/iso20022/pain.001UBS · 2026.06 · public IGa46abb42f463…Validator
Demo · sample payloadsCatch the malformed field before the bank does.
The same kinds of checks the engine enforces behind POST /v1/iso20022/*, run client-side on these example payloads. Every error carries the offending XPath, the bank-IG section it violated, and the corrected payload. No generic parser exceptions — every rejection is actionable.
legacy payload — broken<?xml version="1.0" encoding="UTF-8"?>
<Document xmlns="urn:iso:std:iso:20022:tech:xsd:pain.001.001.09">
<CstmrCdtTrfInitn>
<GrpHdr>
<MsgId>PAY-2026-06-001</MsgId>
<CreDtTm>2026-06-03T08:15:00</CreDtTm>
<NbOfTxs>1</NbOfTxs>
<CtrlSum>4250.00</CtrlSum>
<InitgPty>
<Nm>ACME Payroll AG</Nm>
<PstlAdr>
<AdrLine>Bahnhofstrasse 12, 8001 Zürich CH</AdrLine>
</PstlAdr>
</InitgPty>
</GrpHdr>
<PmtInf>…</PmtInf>
</CstmrCdtTrfInitn>
</Document>ruleset ubs@2026.06AdrLine is not permitted under InitgPty.PstlAdr per the SWIFT MX/CBPR+ structured-address mandate effective 2026-11-14. Replace with the structured fields below.
POST /v1/iso20022/pain.001Coverage matrix
What ships today. What lands next. What is on the roadmap.
Three tiers, no vapor. Tier 1 is the deterministic ISO 20022 primitives wired into apps/api/src/lib/ and exercised by the live endpoints. Tier 2 is the first two banks in active UAT preparation — the goal is a signed bank attestation before either pack is promoted to "shipped." Tier 3 lists the next banks on the roadmap; none have rule-pack code yet. The moat is the flywheel of UAT-accepted fixtures, and that flywheel only compounds after the first signed attestation lands.
Tier 1 — Shipped
Shipped4 capabilities · deterministic, in production| Capability | Spec / behaviour | Evidence | Status |
|---|---|---|---|
| Swiss QR-bill | SPC v0200 — deterministic PDF / SVG / payload renderer | apps/api/src/lib/spc.ts | Shipped |
| SEPA pain.001 credit transfer | Deterministic XML builder · structured-address enforcement | apps/api/src/lib/pain001-builder.ts | Shipped |
| camt.053 inbound reconciliation | Bank-statement parser keyed back to invoice / EndToEndId | apps/api/src/lib/camt053-parser.ts | Shipped |
| pain.002 HITL classifier | Auto-retry-safe vs HITL-required code table | apps/api/src/lib/pain002-classifier.ts | Shipped |
Tier 2 — In Development
In Development2 bank rule packs · UAT preparation, target 2026-Q3| Bank | Scope | Target | Status |
|---|---|---|---|
| UBS Switzerland | pain.001.001.09.ch.03 profile + SEPA credit transfer | 2026-Q3 | In Development |
| PostFinance Switzerland | pain.001.001.09.ch.03 profile + SEPA credit transfer | 2026-Q3 | In Development |
Tier 3 — Planned (Phase 2)
PlannedIndicative roadmap · no rule-pack code yet| Bank | Country | Status |
|---|---|---|
| Deutsche Bank | DE | Planned |
| BNP Paribas | FR | Planned |
| ING | NL | Planned |
| Crédit Agricole | FR | Planned |
| HSBC | UK | Planned |
| JPMorgan Chase | US | Planned |
| Citigroup | US | Planned |
| Bank of America | US | Planned |
| DBS | SG | Planned |
| ANZ | AU | Planned |
No rule-pack code ships for the Tier-3 banks yet. The ranking is indicative — drop a request to fixtures@iso-compliant.com to prioritise yours.
MCP server
Inside the IDE prompt that closes the window.
@iso-compliant/mcp-server is the distribution lever — MIT-licensed schema, free local tools, gated tools proxying to api.iso-compliant.com under a bearer token. Resolve when a developer in Cursor / Claude Desktop / Continue prompts “Swiss QR-bill” or “SEPA pain.008.”
Free tools — no key, pure-local
isocompliant.validate_ibanISO 13616 mod-97 checksumisocompliant.qrr_checksumSwiss QRR mod-10 (Lührmann)isocompliant.scor_checksumISO-11649 RF mod-97isocompliant.iso20022_schema_docspain.001 / .008 / camt.053 / .002 field referenceisocompliant.structured_address_lintSWIFT 2026 hybrid/structured-address check
Gated tools — ISOCOMPLIANT_API_KEY
isocompliant.qrbill.generatePDF / PNG / SVG / payloadisocompliant.sepa.credit_transferpain.001 XMLisocompliant.sepa.direct_debitpain.008 XMLisocompliant.camt053.parsereconciled JSONisocompliant.pain002.parseclassified rejectionsisocompliant.address.restructuredeterministic stub; DistilBERT in Phase 2
{
"mcpServers": {
"iso-compliant": {
"command": "npx",
"args": ["-y", "@iso-compliant/mcp-server"],
"env": { "ISOCOMPLIANT_API_KEY": "iso_live_..." }
}
}
}Pricing
Per-document, on a volume curve.
Per-call paid tier scales down to half a cent for high-volume payroll batches. Enterprise customers pay a flat annual fee. Never a percentage of transaction volume — that's a structural commitment, not a campaign.
Volume curve down to half a cent per doc. Webhooks, idempotency, SLA 99.9%, audit retention 7y. Never a percentage of transaction volume.
Get an API key →Dedicated UAT support to land your bank rule pack. mTLS, custom SLA, on-prem / VPC-private deployment. SOC2 / ISO 27001 evidence pack.
Talk to us →Six-month ship discipline
The SWIFT window closes
14 November 2026.
Get an API key, point your existing SDK at api.iso-compliant.com, and ship a structured-address-compliant pain.001 to your bank's UAT channel today.
Free tier: 100 docs/mo. No card. Full validation. SDK shape identical to the paid tier.