// the find
svapnil/iso20022.js
Create ACH, SEPA, FedNow, SWIFT, RTP payment initiations and process bank statements. Used in production to move hundreds of thousands of dollars a month.
A TypeScript library for generating and parsing ISO 20022 payment messages — SEPA, ACH, RTP/FedNow, SWIFT, and CAMT cash management files. If you're integrating directly with a bank's API that speaks ISO 20022 XML and you don't want to hand-roll XSD-compliant XML, this is the library for it. Aimed at fintech developers who need to produce payment initiations without going through a payment abstraction layer.
The test fixtures from real banks (Goldman Sachs, ING, Nordea, ABN AMRO, Cross River) are the most valuable thing here — they let you validate against XML the library actually generates versus what those banks produce. Amounts as smallest decimal unit (cents/pence) avoids floating point disasters in payment code. The XSD schemas are bundled alongside the source, so validation isn't just 'it looks right'. The generic `getISO20022Implementation(type)` factory is a clean escape hatch when you need to handle message types dynamically.
FedWire is marked in-progress, which is a problem if that's your use case — it's one of the four main US payment rails. The libxmljs vulnerability in test dependencies is a known open issue; it's test-only, but it's been sitting there long enough that it signals maintenance bandwidth. Documentation for what fields each bank actually requires versus what the standard allows is missing — ISO 20022 is notoriously flexible, and the difference between a valid message and one your bank accepts can be a dozen required optional fields. No support for direct debit (pain.008) despite the XSD schema being in the repo, so you can only push payments, not pull them.