Poland runs a national e-invoicing system called KSeF (Krajowy System e-Faktur). Business-to-business invoices are submitted to a government API in a schema called FA(3), and the system hands back an official confirmation of receipt. If you sell software to Polish companies, you will meet it.
The Ministry of Finance publishes official SDKs for Java and .NET. There is nothing for JavaScript.
A full client is a real project: authentication, session handling, certificates, XML signing. But a large share of rejected invoices have nothing to do with any of that. They are structural. A tax ID with a bad checksum. Net plus VAT that does not add up to gross. A date that does not exist. Those are worth catching on your side, before you build a session with anyone.
So I pulled that layer out of a product I work on, rewrote it standalone, and published it: ksef-invoice-validate. Zero dependencies, no network calls, runs in the browser.
npm i ksef-invoice-validate







