ERP & treasury cutover · SWIFT MX/CBPR+ · 14 Nov 2026
Twenty years of freeform addresses. One hard deadline.
Your ERP has emitted address_line_1 mush for two decades. On November 14, 2026 the SWIFT MX/CBPR+ cutover makes the fully-unstructured form of <PstlAdr> rejectable. iso-compliant restructures that data into structured ISO 20022 in-flight, validates it against the receiving bank’s implementation guide, and emits the file — with no customer-side schema migration.
The field-shape change itself is trivial: the unstructured <AdrLine> form is no longer accepted; the structured form — <StrtNm>, <BldgNb>, <PstCd>, <TwnNm>, <Ctry> — is required. The hard part is that your customer, vendor, and payroll tables hold freeform strings, and every debtor and creditor party block needs those strings split into structured fields before your next batch run.
→
Every party block is in scope. Dbtr, Cdtr, UltmtDbtr, UltmtCdtr, InitgPty — each has its own <PstlAdr>, and each needs the structured form.
→
A reject can halt a whole batch. Some bank IGs reject the entire <PmtInf> block when one creditor address is malformed. The operational cost scales with batch size.
→
A migration project doesn’t fit the timeline. A clean backfill of twenty years of address data is a quarter of work. The cutover is a date, not a phased rollout.
Restructure at emission. Don’t migrate the database.
The rescue lane is a deterministic token-mapper at /v1/address/restructure with an explicit confidence-plus-caveats contract. It splits legacy text into structured fields and tells operators exactly what to review; the core then validates the output against the receiving bank IG. One integration, no schema migration on your side.
01
Lint your existing address data
Run the structured-address lint over your customer / vendor / payroll tables — pure browser-side in the widget, or as the agent-tier isocompliant.structured_address_lint tool in CI. Output is the set of rows that will reject, with the specific missing field per row.
02
Restructure freeform → structured
POST failing rows to /v1/address/restructure. The restructurer is deterministic (a token-mapper today; a DistilBERT variant is on the Phase-2 roadmap) and returns an explicit confidence label (high / medium / low) plus caveats. Route high-confidence into structured columns; queue medium / low for human review.
03
Validate against the receiving bank IG
The core validates the structured output against the receiving bank rule pack before the file leaves the pipeline. Pin your bank; the pain.001 / pacs.008 that comes out passes that bank’s implementation-guide checks. You keep your EBICS / SFTP / API channel.
01
No customer-side schema migration
You do not have to alter twenty years of address_line_1 columns or block your next batch on a perfect data migration. The restructure happens at emission; your source schema stays as it is.
02
Confidence is explicit, not hidden
Operators see exactly which rows were restructured with high confidence and which need eyes. No silent guesses going to the bank — the caveat list is part of the contract.
03
Hybrid is a documented survival path
Fully-unstructured addresses become rejectable on Nov 14. A hybrid address — structured town plus country, even with incomplete street detail — survives the cutover. Where street parsing is genuinely ambiguous, we do not block the payment on perfection.
What you integrate
Two endpoints. Your channel stays.
The restructurer and the pain.001 builder are plain HTTP. The file that comes back is XML you pipe straight to the EBICS / SFTP client you already run. We never hold your bank credentials or EBICS keys, and we never sit in the funds flow.
•POST /v1/address/restructure — freeform in, structured + confidence out.
•POST /v1/iso20022/pain.001 — structured payload in, bank-validated XML out.
•Or the same calls via the MCP server, for IDE / CI-driven bulk remediation.
100 documents per month free, no card. Test the restructurer against your real data and run a UAT against your bank’s test environment before November 14.