"EPC QR API: Generate SEPA Payment QR Codes with One HTTP Call"
The problem: invoicing tools skip the QR code
SEPA Credit Transfer QR codes (EPC standard) are on millions of European invoices. Every major EU bank app can scan one and pre-fill the payment form. Yet most invoicing tools, accounting SaaS products, and freelance platforms still don't include them — because generating a compliant EPC QR image requires knowing an obscure spec and wiring up a QR library.
The EPC QR API solves this with a single HTTP GET.
How it works
GET https://c.pixeldev.eu/epc-api/v1/qr
?iban=DE89370400440532013000
&name=Acme+GmbH
&amount=49.99
&remittance=INV-2026-042
&format=png
You get a PNG (or SVG) back. Embed it in an invoice PDF, an email, a web page — wherever.
POST also works with a JSON body, which is cleaner for programmatic use:
curl -X POST https://c.pixeldev.eu/epc-api/v1/qr \
-H 'Content-Type: application/json' \
-d '{"iban":"DE89370400440532013000","name":"Acme GmbH","amount":49.99}' \
--output payment.png
Parameters
| Parameter | Required | Description |
|---|---|---|
iban |
✅ | Beneficiary IBAN (any valid EU IBAN) |
name |
✅ | Beneficiary name (max 70 chars) |
amount |
— | Amount in EUR (min 0.01) |
remittance |
— | Payment reference (max 140 chars) |
bic |
— | BIC/SWIFT (optional within SEPA) |
purpose |
— | 4-letter purpose code (optional) |
format |
— | png (default) or svg |
size |
— | Image size in px (default 400) |
ecc |
— | Error correction: L / M / Q / H (default M) |
What's EPC v002?
The European Payments Council defines a standard QR payload format (EPC v002) for SEPA Credit Transfers. It's plain text, newline-separated:
BCD ← service tag
002 ← version
1 ← character set (UTF-8)
SCT ← identification
← BIC (optional in SEPA)
Acme GmbH ← beneficiary name
DE89370400440532013000 ← IBAN
EUR49.99 ← amount
← purpose
INV-2026-042 ← remittance reference
This payload is what gets encoded into the QR. All major EU banking apps (Sparkasse, ING, Revolut, N26, Wise, etc.) recognise it.
No keys, no limits (with fair-use guardrails)
The API is completely open — no account, no API key, no credit card. It's designed to be used directly from browser-side code, server-side scripts, PDF generation pipelines, whatever you need.
Fair-use rate limiting is in place: 300 requests per 15-minute window per IP. For production integrations that need higher throughput, a premium tier with higher limits is on the roadmap.
Response headers tell you where you stand:
X-RateLimit-Limit: 300
X-RateLimit-Remaining: 298
X-RateLimit-Window: 900
CORS enabled
The API responds with Access-Control-Allow-Origin: *, so you can call it directly from browser JavaScript — no proxy needed.
Try it live
The live playground lets you fill in IBAN, name, amount, and reference, then see the QR code render in real time. It also shows the generated API URL so you can copy it into your code.
Available at c.pixeldev.eu/epc-api. Part of the c.pixeldev.eu toolbox.