Your Wero QR code, so guests can pay you back without your phone number or IBAN.
A pure JavaScript QR code with no external dependency, a copy-link button to share the payment link and a full screen view.
Highlights
- QR code generated in pure JS
- Copy-link button
- Tap for full screen
- Visual editor
- Mini card on one row, its QR opening the full card
Cards
type: custom:wero-cardInstall
- 1Open the repository in the Marketplace with the Add to Marketplace button above, or add
github.com/juju35/ha-wero-cardas a custom repository (category Dashboard). - 2Download it from the Marketplace.
- 3Reload the browser and add the card from the dashboard editor.
Gallery 3
Documentation
From the README Features
Features
- QR code generated in pure JS (embedded Reed-Solomon algorithm), with a spec-compliant quiet zone
- Wero logo in the header (can be disabled)
- Two cards:
wero-cardand its mini versionwero-mini-card(logo, title and payee on one row with a QR thumbnail that opens the full screen QR code; a detail button shows the full card) - Copy-link button to share the payment link by message (the result is also announced to screen readers)
- Tap the QR code to show it fullscreen (tap again or press Escape to close)
- Visual editor: add and configure the card from the dashboard UI, no YAML needed
- Fully compatible with Home Assistant dark mode and sections dashboards (6 columns by default and at least, so the title stays readable)
- Keyboard friendly: visible focus on the copy button and the QR code, Enter or Space opens the QR code fullscreen
- English, French, German, Spanish, Serbian (Cyrillic and Latin), Italian, Dutch, European Portuguese, Polish, Romanian, Danish, Swedish, Bulgarian, Russian, Ukrainian, Hungarian, Slovak, Czech, Slovenian, Latvian and Greek, auto-detected
- Ready for the Marketplace, single file (~55 KB)
Prerequisites
Prerequisites
Home Assistant 2024.8 or later, and:
A Wero payment link, generated by your bank:
Getting your Wero link#
There is no public format to build a Wero QR code from a phone number or an IBAN: the card re-encodes the link that your bank generates.
- In your banking app (or the Wero app), open Wero and generate your QR code / payment link.
- Either use the app's share option to copy the link, or scan the QR code with a generic QR reader (not a banking app) and copy the URL.
- The link looks like
https://share.weropay.eu/p/1/c/XXXXXXXXXX.
Check that the link is still valid after a few days before printing it or relying on it: its lifetime depends on how your bank generated it.
Configuration
Configuration
Visual editor#
Edit your dashboard → Add card → search for Wero QR Card (or Wero QR mini card). Every option below can be set from the form; switch to the code editor if you prefer YAML.
Minimal#
type: custom:wero-card
url: https://share.weropay.eu/p/1/c/XXXXXXXXXX
Full options#
type: custom:wero-card
url: https://share.weropay.eu/p/1/c/XXXXXXXXXX
title: Refund
name: Alex
logo: true
qr_size: 176
language: en
Mini card#
type: custom:wero-mini-card
url: https://share.weropay.eu/p/1/c/XXXXXXXXXX
name: Alex
zoom: true
The mini card takes the same options as the full card, plus zoom. It shows the logo, the title and the payee name on one row, with a small QR thumbnail on the right. A tap on the thumbnail opens the QR code full screen, like the big one of the full card. The detail button (top right) switches to the full card; the button, or a click anywhere outside the card, brings the compact view back. The copy button sits under the detail button, so the thumbnail lines up with the other mini cards; on a card 200 px wide or less the thumbnail gets smaller and the copy button gives way (the full card keeps it).
Options reference#
| Option | Required | Default | Description |
|---|---|---|---|
url |
✅ | — | The https:// link encoded in your Wero QR code |
title |
❌ | Auto (i18n) | Card title |
show_title |
❌ | true |
Show the title in the header (e.g. false under a section heading of your own) |
name |
❌ | — | Payee name, shown under the QR code |
logo |
❌ | true |
Show the Wero logo in the header (false shows a generic icon) |
qr_size |
❌ | 176 |
QR code size in pixels (quiet zone included); shrinks to fit a narrower card |
zoom |
❌ | true |
Mini card only: detail button at the top right that switches to the full card and back (a click outside the card brings the compact view back) |
language |
❌ | Auto | Force language: en, fr, de, es, sr, sr-Latn, it, nl, pt, pl, ro, da, sv, bg, ru, uk, hu, sk, cs, sl, lv or el (auto-detects from HA settings) |
How it works
How it works
The card encodes url as-is into a QR code (error correction level M). Scanning it with a Wero-enabled banking app, or with the phone camera, opens the Wero payment flow for the payee behind the link.
The logo is kept out of the QR code on purpose: overlaying a logo on the modules makes scanning unreliable.
Disclaimer
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by EPI Company. Wero and the Wero logo are trademarks of EPI Company, used here only to identify the payment method.
Changelog
All 34 versions 1.12.0Nov 12, 2026Latest
Features
show_titleoption (also in the visual editor) hides the header's title, for a card placed under a section heading of its own (asked in juju35/ha-vehicle-card#72).
1.11.1Nov 9, 2026
Fixes
- Translations: the cards are defined once the page's language file has arrived (at most 1.5 s; Home Assistant builds a card when its element gets defined), so the first render is already translated instead of English then redrawn; until a language file is in, a missing text reads the English one wherever the card has no fallback of its own.
1.11.0Nov 9, 2026
Performance
- Translations load on demand: the bundle keeps English only (58 KB → 44 KB) and each other language is its own
wero-card.i18n.<lang>.jsfile next to it, fetched the first time a card needs it. Home Assistant loads every dashboard resource on every dashboard, so each page used to download and parse all 22 languages to use one. Until a language file has arrived (a few milliseconds), texts fall back to English, and the cards redraw once it is there.
Maintenance
- Build:
scripts/i18n-split.mjssplits the built bundle and rebuilds every table from the split files to check them (the build fails on any difference);src/keeps every language as before. - Release: every file of
dist/is attached. Manual installation copies the translation files too.
1.10.1Nov 8, 2026
Fixes
- The full screen QR code no longer shows a focus ring around it (a dark outline drawn by the browser, on phones in particular); Escape still closes it and the focus still returns to the QR code.
1.10.0Nov 8, 2026
What's new
- The QR code image's screen reader label is translated in the 22 languages of the card and follows a language change.
- The main card's name and description in the card picker are shown in the language of Home Assistant, like the mini card's.
- Mini card: the copy button moves under the detail button in the top right corner, so the QR thumbnail sits right next to that column and lines up with the other mini cards (such as the Wi-Fi one).
1.9.2Nov 7, 2026
Fixes
- Accessibility: the QR code inside the clickable "Enlarge QR code" area is hidden from screen readers, so the button is announced once by its own label; the full screen QR stays an image.