Show HN: Iso20022.js – Create payments in 3 lines of code

Overview of iso20022.js

  • Typescript/Node library to create ISO 20022 payment messages, primarily PAIN (payment initiation) XML.
  • Main value: exposes ISO 20022 models in a typed, developer-friendly way, rather than dealing with raw XML/XSD.
  • Output is an XML payload that can be uploaded to banks (typically via SFTP or other bank-specific channels).

“3 Lines of Code” Debate

  • Landing page claims “create payments in 3 lines of code.”
  • Several people argue it’s really “3 steps” plus large configuration objects, so the claim feels marketing‑stretched.
  • Others consider it fair: import, instantiate, call; the long bits are data, not extra API calls.
  • Consensus: wording could be more precise, but the ergonomics still look good.

What the Library Does and Does Not Do

  • It is an ISO 20022 XML builder/encoder, not a payment processor.
  • It does not handle:
    • Bank connectivity (SFTP, SWIFT, VPNs).
    • Authentication, signing, or encryption.
    • Certification with payment schemes.
    • Status feedback (pain.002, webhooks-equivalent) yet, though ingesting status reports is on the roadmap.

ISO 20022 Context and Use Cases

  • ISO 20022 is a broad XML standard for financial messaging: cross-border, high-value, retail, real-time payments, statements, etc.
  • Widely used in SEPA and increasingly mandated in other systems (Fed networks mentioned).
  • Typical users are institutions doing high-volume bank transfers (payroll, insurance, treasury), not small apps replacing Stripe.

Complexity of Payments vs. Message Formatting

  • Multiple commenters stress that generating valid ISO 20022 XML is the easy part.
  • The hard parts: fraud/risk, error handling, reversals/refunds, reconciliation, accounting, audit logging, atomicity, retries, and multi-bank quirks.
  • Bank integrations often involve strict rulebooks, test environments, security setups, and per-bank differences in limits and schemas.

Standards, Variants, and XML Discussion

  • ISO 20022 is large (hundreds of message types) and extensible; banks frequently add custom fields or bespoke flavors.
  • This extensibility both enables evolution and causes interoperability pain.
  • Some note that XSD-to-code generation already exists in many languages; value here is developer ergonomics in the JS/TS ecosystem.

Security, Stack, and Dependencies

  • Concerns raised about using Node/NPM for finance due to ecosystem culture, dependency-chain risks, and JS number handling.
  • Others note the package has a relatively small dependency tree, but dependency auditing remains critical.