URA EFRIS compliance for Manager.io, built for Ugandan small businesses.
Open source (MIT) and free to use. A project of The Tukei Hope Initiative's Economic Empowerment programme, helping Ugandan micro and small enterprises formalise and become tax compliant.
EFRISConnect is a small self-hostable web app (a Node.js relay + a browser UI) that bridges Manager.io and URA EFRIS. It runs on Windows, macOS, and Linux - anywhere Node.js runs.
- Fiscalise receipts and invoices to URA EFRIS directly from your Manager.io documents; the FDN, verification code, and QR are written back onto the record.
- Configure goods and services against URA's commodity classification and units.
- Print branded fiscal receipts/invoices carrying the QR and fiscal document number.
- Multi-currency, offline queueing, credit notes.
- Goods and Services Configurator mode: if you turn EFRIS off, the extension becomes a pure goods/services configurator for Manager (classify items against URA commodity codes and units, branded receipts) without any fiscalisation - useful for businesses not yet on EFRIS, or for preparing your catalogue first.
- Offline resilience: if the connection to URA drops mid-sale, receipts are queued and submitted automatically once it returns. For true offline fiscal document numbers, EFRISConnect can also work with URA's separate Offline Mode Enabler (optional; see "Offline Enabler" in docs/self-hosting.md).
- Open source (this repository): the entire application - the relay
(
backend/), the UI (frontend/), and the data files. MIT licensed. You can read, run, modify, and redistribute all of it, for free, with no account and without contacting anyone. - Optional paid services: The Initiative offers optional paid training and setup. This is never required - everything needed to install and run EFRISConnect yourself is in this repository and documented below.
EFRISConnect is under active testing. If you are helping test (including URA VAT testers), use a test setup only:
- A URA EFRIS sandbox account, device, and digital keys - never production credentials.
- A separate Manager.io test business, not your live company file.
- Test/dummy data only - do not fiscalise real sales or real customer data.
Keep Sandbox mode ON in the app until you have verified everything end to end. Going live is a separate URA step: it needs its own production device, thumbprint registration, and digital keys, and URA must approve/activate you for live e-invoicing. Only switch to production credentials once URA has activated you and your testing is complete.
You need Node.js 18+ and a URA-provisioned EFRIS device. No cloud account, no payment, and no contact with The Tukei Hope Initiative.
URA prerequisites (obtained from URA, not from EFRISConnect). Before using EFRISConnect you must already be set up on URA EFRIS:
- Be registered for EFRIS / e-invoicing with URA.
- Have a registered device on the EFRIS portal, with the device (thumbprint) registration completed, giving you a Device Number (DSN).
- Have generated your EFRIS digital keys (the private key/PEM) for that device.
This applies to both sandbox and production. Sandbox uses a URA test account, device, and keys. Going live (production) is a separate URA step: it needs its own production device, thumbprint registration, and digital keys, and URA must approve/activate you for live e-invoicing. EFRISConnect uses whatever credentials and keys URA issues for the mode you are in; it does not register your device or grant go-live approval - only URA does that.
Install Node.js 18 or newer from https://nodejs.org (LTS is fine). Verify:
node --version
git clone https://github.com/The-Tukei-Hope-Initiative/EFRISConnect.git
cd EFRISConnect/backend
npm install
- macOS / Linux:
(or
./start.shnode server.jsfrom thebackendfolder) - Windows: double-click
windows\EFRISConnect.bat, or runnode server.jsin thebackendfolder from a terminal.
The app serves at http://localhost:3000 (and, once the local HTTPS cert is set up, https://localhost:5443/extension).
Manager custom buttons load over HTTPS. Generate a locally-trusted certificate:
- Windows:
windows\EFRISConnect.bat-> option for HTTPS setup. - macOS / Linux: see
docs/self-hosting.mdfor themkcert/openssl steps (a one-line script generates a self-signed cert forlocalhost).
In Manager: Settings -> Custom Buttons -> New Custom Button
- Label:
EFRISConnect - Source:
Url - Address:
https://localhost:5443/extension(your own instance) - Placements (add the ones you need):
- Fiscalise receipts / invoices / credit notes:
/receipts,/sales-invoices(button on the list pages) and/receipt-form,/sales-invoice-form(button on a single open document, which opens that exact record ready to fiscalise). Credit notes are raised from inside the extension against an existing invoice/receipt, so they use these same placements - no separate credit-note placement is needed. - Goods / services configuration:
/inventory-items,/non-inventory-items(item list pages) and/inventory-item-form,/non-inventory-item-form(a single item, to configure/register it).
- Fiscalise receipts / invoices / credit notes:
Enter your business details, EFRIS device credentials (TIN, device number, password, private key), and your Manager API access token. Keep Sandbox mode ON and rehearse with test data until you are satisfied, before switching to production. See SECURITY.md for exactly how these credentials are stored.
Full step-by-step notes, including the macOS/Linux HTTPS steps, are in
docs/self-hosting.md.
Each release is published as a Git tag / GitHub Release here (e.g. v1.0.0), and
the VERSION file records the current release (e.g. 1.0.0). Check out
a tag to run or inspect that exact release.
Credentials never live in the browser; the relay encrypts them at rest with
AES-256-GCM. On a desktop/single self-hosted install the relay runs on your
own machine and the encryption key is stored locally, protected by file
permissions (so encryption mainly guards the file from casual copying, not from
someone with full access to that machine). On a shared or cloud server, set
VAULT_MASTER_KEY so the key is one you control. Full details - what is
transmitted, stored, encrypted, logged, backed up, and how to delete it - are in
SECURITY.md.
backend/ Node.js/Express relay (server.js), EFRIS crypto, data files, vault.js
frontend/ Browser UI (index.html), printable receipt (receipt.html), theme
windows/ Optional Windows launcher + local-HTTPS helper scripts
docs/ Self-hosting and setup notes
start.sh macOS/Linux launcher
MIT - free to use, modify, and share. Copyright (c) 2026 The Tukei Hope Initiative.
EFRISConnect is built and given away free so that Uganda's smallest businesses can become tax compliant without paying for software they cannot afford. If it has helped you, please consider giving back - a donation of any size, a partnership, or sponsoring the setup of a business that cannot afford it keeps this tool free for the next person.
Donate or partner with us: outreach@tukeihopeinitiative.org