DEV Community

PatrickPi1312
PatrickPi1312

Posted on • Originally published at api.installateur1210.at

Add a scan-to-pay SEPA QR code (EPC/Girocode) to your invoices

Across the SEPA area, banking apps can scan an EPC QR code (a.k.a. Girocode) to pre-fill a bank transfer — recipient, IBAN, amount, reference. Putting one on your invoices or payment pages measurably speeds up getting paid. Here's how to generate one with a single request.

The one-liner

curl "https://api.installateur1210.at/v1/epc-qr?key=demo\
&name=ACME%20GmbH&iban=DE89370400440532013000\
&amount=99.50&remittance=Invoice%202026-001" -o qr.png
Enter fullscreen mode Exit fullscreen mode

That's a spec-compliant EPC069-12 QR as PNG (or format=svg). The IBAN is validated server-side (mod-97), so you get a clear error instead of a broken code.

Embed it directly in HTML

No backend needed — it's just an image URL:

<img alt="Pay by bank transfer"
  src="https://api.installateur1210.at/v1/epc-qr?key=demo&name=ACME%20GmbH&iban=DE89370400440532013000&amount=99.50&remittance=Invoice%202026-001">
Enter fullscreen mode Exit fullscreen mode

Node.js

const p = new URLSearchParams({
  key: "demo", name: "ACME GmbH", iban: "DE89370400440532013000",
  amount: "99.50", remittance: "Invoice 2026-001",
});
const res = await fetch(`https://api.installateur1210.at/v1/epc-qr?${p}`);
await require("fs/promises").writeFile("qr.png", Buffer.from(await res.arrayBuffer()));
Enter fullscreen mode Exit fullscreen mode

Validate an IBAN separately

curl "https://api.installateur1210.at/v1/iban/DE89370400440532013000?key=demo"
Enter fullscreen mode Exit fullscreen mode

Free demo key demo, EU-hosted, nothing stored. Handy for invoicing tools, clubs, utilities and checkout flows in the euro area.

Top comments (0)