About payqr
payqr is a local MCP server for generating and reading European payment QR codes, along with text, Wi-Fi, and vCard codes. It supports SPAYD and EPC/GiroCode and keeps QR processing on-device.
Key features
- 01Create SPAYD and EPC/GiroCode payment QRs
- 02Generate text, Wi-Fi, and vCard QRs
- 03Decode QR codes from images
- 04Return QR images and encoded text
- 05Process QR data locally
Use cases
- 01Prepare a bank-transfer QR from payment details
- 02Read payment fields from an existing QR image
- 03Share Wi-Fi access or contact details as a QR
MCP support
Exposes QR generation and decoding tools to MCP clients, including payment, text, Wi-Fi, vCard, and image-reading operations.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://payqr.cz-agents.dev/mcpclaude mcp add --transport http dev-cz-agents-payqr https://payqr.cz-agents.dev/mcp{"mcpServers":{"dev-cz-agents-payqr":{"type":"http","url":"https://payqr.cz-agents.dev/mcp"}}}Open in Cursor{"servers":{"dev-cz-agents-payqr":{"type":"http","url":"https://payqr.cz-agents.dev/mcp"}}}Open in VS Code{"mcpServers":{"dev-cz-agents-payqr":{"type":"http","url":"https://payqr.cz-agents.dev/mcp"}}}{"mcpServers":{"dev-cz-agents-payqr":{"serverUrl":"https://payqr.cz-agents.dev/mcp"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
6| Parameter | Type | Required | Description |
|---|---|---|---|
| bic | string | No | Optional BIC for EPC/GiroCode line 5. Ignored with a warning for SPAYD. |
| iban | string | Yes | Recipient IBAN. Validated with the IBAN mod-97 checksum. |
| amount | number | No | Optional payment amount. |
| message | string | No | Optional payment message or EPC remittance text. |
| currency | string | No | Optional ISO 4217 currency code. Defaults to CZK for SPAYD and EUR for EPC. |
| standard | enum | No | Payment QR standard. Defaults to auto detection.spayd | epc | auto |
| recipient_name | string | No | Recipient name. Required for EPC/GiroCode. |
| constant_symbol | string | No | Optional Czech constant symbol for SPAYD. |
| variable_symbol | string | No | Optional reference: goes to remittance (line 11) for EPC, to X-VS for SPAYD. |
Details
From the project README@czagents/payqr
European payment QR codes — generate and read SPAYD (CZ/SK) and EPC/GiroCode (Eurozone) payment QR, plus standard QR (text, WiFi, vCard). Scan with any banking app to pre-fill a transfer. Runs locally, no data leaves your device. Free.
Deterministically create SPAYD (Czech/Slovak) and EPC / GiroCode (SEPA) payment QR codes, plus plain-text, Wi-Fi and vCard QR codes — and decode QR codes back from an image.
Free, MIT-licensed, no AI and no paid API. Everything is computed locally; nothing is sent anywhere.
💡 Prefer a browser? The same engine runs as a free web app at https://qr.cz-agents.dev — type the details or drop a payment screenshot / QR code, all client-side.
Why
Copying an IBAN, amount and variable symbol from a broker deposit instruction (Revolut, Trading 212, XTB, an invoice…) into a banking app by hand is slow and error-prone — one wrong digit sends money to the wrong account. This server turns those details into a scannable payment QR your bank app reads directly, and can also read an existing payment QR back into structured fields.
Install
Add it to your MCP client (e.g. Claude Desktop claude_desktop_config.json):
{
"mcpServers": {
"payqr": {
"command": "npx",
"args": ["-y", "@czagents/payqr"]
}
}
}
Or run directly:
npx -y @czagents/payqr # stdio transport
Tools
Each example is an MCP tool-call argument object.
qr_payment— creates a payment QR, selecting SPAYD for CZ/SK IBANs and EPC/GiroCode for other SEPA IBANs. Do not use it from payment details extracted from an image until the user has checked the read-back fields; EPC also requiresrecipient_name. Example:{"iban":"CZ6508000000192000145399","amount":1500,"currency":"CZK","variable_symbol":"1234567890","message":"Invoice 2026-001"}.qr_text— creates a QR containing plain text. Do not use it for a structured payment, Wi-Fi configuration, or contact when the dedicated tool is appropriate. Example:{"text":"https://cz-agents.dev"}.qr_wifi— creates a Wi-Fi network QR for WPA, WEP, or an open network. Do not use it to share credentials with someone who should not receive network access. Example:{"ssid":"Office WiFi","password":"correct-horse-battery-staple","security":"WPA","hidden":false}.qr_vcard— creates a vCard 3.0 contact QR. Do not use it when the contact has not agreed to share the included personal details. Example:{"name":"Ada Lovelace","phone":"+420123456789","email":"[email protected]","org":"Analytical Engines"}.qr_read— decodes and classifies an existing base64 PNG/JPEG QR image. Do not use it to verify a QR generated by this server, which is already self-verified; do not treat a failed decode as a verified payment. Example:{"image_data":"data:image/png;base64,iVBORw0KGgoAAAANSUhEUg..."}.qr_payment_batch(paid; available when x402 is configured) — generates and verifies up to 50 payment QRs in one invoice-run call. Do not use it for a single payment, or before obtaining the x402 payment terms. Example:{"payments":[{"ref":"INV-001","iban":"CZ6508000000192000145399","amount":1500,"currency":"CZK","variable_symbol":"2026001"}]}.
Each generating tool returns both a rendered QR image and a text block with the encoded payload, the chosen standard and any warnings — so clients display the QR natively and you can verify exactly what it encodes.
Optional IBANforge referral
Successful qr_payment responses, and paid batch responses that generate at least one QR, can include
an optional next_steps referral. It is disabled by default. To enable it, set all three variables:
IBANFORGE_REFERRAL_ENABLED=true
IBANFORGE_REFERRAL_URL=https://ibanforge.com/?src=payqr
IBANFORGE_REFERRAL_RELATIONSHIP=unpaid_partner # or affiliate
The URL must use HTTPS and belong to ibanforge.com (or one of its subdomains). Invalid enabled
configuration stops the server at startup. The referral URL never contains IBAN, amount, reference,
or other payment data. Free non-payment tools, failed payments, and unpaid x402 responses never carry
the referral. Affiliate relationships are identified in the returned copy.
Payment-from-image workflow
When you paste a screenshot or photo of payment details, the assistant reads the IBAN, amount,
currency, recipient and reference from the image and calls qr_payment. Before showing the QR it
echoes the extracted fields back for you to verify against the source — a misread digit sends real
money to the wrong place — and only then presents the code.
Standards
- SPAYD (
SPD*1.0*…) — the Czech/Slovak "QR Platba" string format read by Czech and Slovak bank apps. - EPC / GiroCode (
BCD…) — the SEPA Credit Transfer QR standard (EPC069-12), EUR-only, widely used in Germany, Austria and across the euro area. Requires a recipient name.
Privacy
No telemetry, no network calls for QR generation, no AI. Pure local computation.
License
MIT © cz-agents
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.