A build-to-order AL extension that registers your Business Central sales invoices and credit memos with the Uganda Revenue Authority EFRIS service and returns the FDN, verification code and QR back onto the posted document. ECOSIRE scopes, builds, installs and supports it — it is not an AppSource download. Built to order by ECOSIRE for Dynamics 365 BC (build-to-order) — indicative price from $499.00 USD; request a quote for a scoped proposal.
Illustrative previewA build-to-order AL extension that registers your Business Central sales invoices and credit memos with the
Uganda Revenue Authority EFRIS service and returns the FDN, verification code and QR back onto the posted document.
ECOSIRE scopes, builds, installs and supports it — it is not an AppSource download.
No DIY setup — a working app, built, installed and supported by ECOSIRE.
Start with a one-time build price. We scope it with you at kickoff.
ECOSIRE builds, configures and installs it on your Dynamics 365 Business Central.
You go live in about 2–4 weeks, with a post-launch support window.
Finance teams invoicing in Uganda face a hard split between where the sale actually happens and where it becomes legal. The revenue is recognised in Dynamics 365 Business Central, but the fiscal document only exists once the Uganda Revenue Authority EFRIS service has accepted it and issued a Fiscal Document Number, a verification code and a QR payload. The usual workaround is the EFRIS web portal or an offline client: an accountant re-keys the customer TIN, the line items, the commodity codes and the tax categories a second time, pastes the FDN back into a spreadsheet, and hopes nobody edits the invoice in between. Every re-key is a chance for the posted Sales Invoice Header in Business Central and the fiscal record at URA to disagree — and the disagreement is only discovered at audit, when the two sets of numbers are compared.
Business Central out of the box has no concept of any of this. Its VAT posting setup, VAT statements and electronic-document framework are built around EU/UK-style reporting and the generic e-document connectors; there is no EFRIS T-code client, no AES/RSA envelope handling, no goods-and-services registration against the URA commodity dictionary, no credit-note approval state, and nothing on the invoice page to hold an FDN. You can post a perfectly correct invoice in Business Central and still be non-compliant, because compliance in Uganda is defined by what URA has on file, not by what your ledger says.
What ECOSIRE builds is an AL extension that closes that gap inside the system you already run. Table and page extensions add the fiscal fields — FDN, verification code, invoice issuing status, URA reference, QR data and the raw response envelope — to the sales invoice and credit memo, posted and unposted, plus an EFRIS Setup page holding the taxpayer TIN, device number, environment endpoint and key material in Isolated Storage rather than in a plain setup table. A dedicated communication codeunit assembles the EFRIS T-code payloads (login/session, goods and services upload, invoice upload, invoice query, credit note application and approval query), applies the AES content encryption and RSA signature the service expects, and posts over HttpClient. Event subscribers on the posting routines create the fiscal request the moment a document is posted, so nobody has to remember a second step, and a Job Queue Entry drains the queue with bounded retries — an EFRIS timeout never blocks the posting transaction or leaves a half-posted document behind. Mapping is driven from your existing master data: item and G/L account mapping to URA commodity codes and unit-of-measure codes, VAT posting groups to EFRIS tax categories, and customer TIN/NIN validation on the Customer card, so the payload is derived from records your team already maintains rather than a parallel list.
Rejections are treated as a first-class workflow, not an error log. Every attempt is written to an EFRIS Transaction Log with the request, the response, the URA return code and a human-readable reason, and a rejected document lands in a correction queue with the offending field identified — a missing commodity code, a TIN that fails validation, a rounding difference on tax. The user corrects and resubmits from the document page; nothing is silently retried into a duplicate registration, because submissions are keyed idempotently on the posted document number. Credit memos follow the two-step reality of EFRIS: the application is filed, the document sits in a pending state, and a background query promotes it once URA approves or surfaces the rejection reason. Both the human-readable output (the invoice report layout carries the FDN, verification code and QR image so the printed or emailed document is the compliant one) and the machine format (the archived signed envelope) come from the same posting — you never generate two versions that can drift. Archived envelopes and log entries are retained with a defined retention policy, exposed through an API page (REST API v2.0 / OData v4) so an auditor request, a Power BI reconciliation or a Power Automate flow can read the fiscal state without a developer.
This is a build-to-order engagement, not an instant download. We start with a scoping call, confirm your Business Central deployment (SaaS online or on-premises), your release wave, whether you need a per-tenant extension or an AppSource-track app, your EFRIS taxpayer and device registration status, and the specific document flows in scope — standard sales, POS-style receipts, credit notes, exports and exempt supplies each carry different tax categories. From confirmed scope, typical delivery is 2-4 weeks: we build against your sandbox, run UAT with your finance team on the EFRIS test environment, then install into production with a rollback plan and a support window. You receive the AL source, the git repository, technical and user documentation and a training session — the extension is yours, on your tenant, and it can be extended later by us or by your own team.
Owns the VAT return and the audit relationship with URA. Needs every posted sales invoice in Business Central to have a matching, accepted EFRIS record with an FDN, and needs to be able to prove it at any point without exporting spreadsheets. Cares most about the reconciliation view, the rejection queue never silently accumulating, and the archived envelopes.
Runs the daily invoicing cycle and currently re-keys documents into the EFRIS portal. Needs registration to happen automatically at posting, the FDN and QR to appear on the document that is emailed to the customer, and a clear, self-serve way to fix a rejected invoice without raising a ticket.
Responsible for the tenant, extensions and upgrade path. Needs a per-tenant extension that survives release-wave updates, uses supported event subscribers rather than base-app modification, keeps credentials out of setup tables, and ships with permission sets and job queue configuration they can actually administer.
Runs Uganda alongside other jurisdictions and wants Uganda's compliance handled inside the same Business Central instance and the same close process as everywhere else, with a consistent audit trail and no country-specific side system or standalone portal for one entity.
| Criterion | ECOSIRE | Custom Build | Competitor | Dynamics 365 Business Central Native |
|---|---|---|---|---|
| EFRIS invoice registration | Automatic at posting via event subscriber; FDN, verification code and QR written back onto the posted document | Achievable, but you build and maintain the T-code client, encryption and write-back yourself | Usually supported, though write-back scope and which document types are covered vary by vendor | Not present — Business Central has no EFRIS client or fiscal document concept |
| Fit to your master data | Mapping workshop plus initial commodity code, UoM and VAT category load as part of delivery | Whatever your team has time to model; usually the part that slips | Generic mapping tables you populate yourself after purchase | VAT posting setup only; no URA commodity or tax-category concept |
| Rejection handling | Logged with URA return code, correction queue with the offending field flagged, idempotent resubmit | Typically an error log; the correction workflow is the piece most in-house builds skip | Commonly a status field and a retry button; correction guidance depends on the vendor | Not applicable |
| Credit notes | Two-phase application and approval, pending state tracked, reconciled by background query | Requires deliberate state modelling; easy to build as a one-shot call and get stuck | Generally covered, but approval-state visibility differs between products | Posts a credit memo with no fiscal linkage |
| Upgrade and release-wave path | Extension-only design; recompiled and tested against your target wave, handled under support | You own the regression testing on every wave | Vendor-controlled; you follow their release calendar and their support window | Upgrades cleanly — because it does nothing for EFRIS |
| Source code and ownership | Full AL source and private git repository handed over; your team can extend it | You own it entirely, along with all of its maintenance | Closed source; changes require a vendor request and their prioritisation | Microsoft base application; not modifiable |
| Audit and archiving | Signed envelopes archived with retention policy, full transaction log, exposed via API page for Power BI or Power Automate | Depends how much of the audit surface got budgeted | Log screens are standard; programmatic API access is not always exposed | Standard document history only; no fiscal envelope to archive |
| Cost and delivery model | Fixed quote from confirmed scope, typically 2-4 weeks, includes UAT, training and a support window | Developer time plus an open-ended specification-tracking commitment | Fast to license, then per-user or per-company subscription plus your own configuration effort | No extra cost, and no compliance |
This is build-to-order: typical delivery is 2-4 weeks from confirmed scope. The clock starts once we have agreed the document flows in scope, your Business Central version and deployment type, and your EFRIS taxpayer and device registration details — not at the moment of enquiry. The scoping call itself is short (about 30 minutes). Complex scope, such as POS receipt flows, multi-branch device registration or a heavy master-data mapping backlog, can extend that, and we tell you before you commit rather than afterwards.
No. Nothing is downloadable today. We build the extension for your environment, against your Business Central release wave, and install it for you. That is deliberate: EFRIS behaviour depends on your taxpayer registration, your device configuration, the document types you actually issue and how your item and VAT master data is set up. By default we deliver a per-tenant extension; if you need an AppSource-track app for your own distribution, say so at scoping and we build to that packaging instead.
Rejections are a workflow, not a silent failure. The submission is logged with the URA return code and a plain-language reason, the document lands in a correction queue with the offending field flagged, and a user corrects and resubmits from the document page. Nothing is silently retried into a duplicate registration — submissions are idempotent on the posted document number. If the service is unreachable, documents queue and drain automatically on recovery, with the backlog count visible; the job queue retry has bounded backoff so a URA outage never blocks posting or fills your logs.
Both. We build against your current release wave and target either cloud or on-premises. The design is cloud-safe throughout — supported event subscribers instead of base application modification, `HttpClient` for outbound calls, `Isolated Storage` for key material, and job queue entries for background work — so the same codebase runs online. On-premises installations additionally need outbound network access to the URA endpoints from the service tier, which we confirm during scoping.
Every engagement includes a post-go-live support window agreed at scoping, covering defect fixes, URA response-code questions and configuration adjustments. Beyond that we offer an ongoing support and maintenance agreement that keeps the extension current with Business Central release waves and with EFRIS specification changes — URA does revise T-code payloads and validation rules, and that is exactly the kind of change you want handled before it fails in production. You also receive the source and the git repository, so your own AL developers can maintain it if you prefer.
That is the point of building it as a proper AL extension. We use table and page extensions, event subscribers on documented publishers, and no base-application modification, which is what makes an extension upgradeable. We test the app against your target release before you move, and under a support agreement we handle the recompile and any breaking-change remediation as part of your upgrade cycle rather than leaving you to discover it at cutover.
It reads from it rather than duplicating it. Items, resources and G/L accounts are mapped once to URA commodity codes and unit-of-measure codes, and your VAT posting groups are mapped to EFRIS tax categories, including zero-rated, exempt and export treatments. The submission payload is then derived from the posted document, so what you invoice and what URA receives come from the same source. We run a mapping workshop and load the initial mappings as part of delivery, and the extension checks mapping completeness before a document is submitted rather than after it is rejected.

Configurable, rule-based approval matrices for every Business Central document type, with per-workflow approvers, amount limits, delegation, and email/mobile responses. Built and installed by ECOSIRE as a per-tenant AL extension.

A build-to-order AL extension that brings Adyen's 150+ global payment methods and unified settlement reconciliation into Business Central accounts receivable, complementing the first-party D365 Commerce Adyen connector.

A build-to-order Business Central extension that registers affiliates and referrers, attributes sales to referral codes and links, calculates tiered commission, and posts payouts as vendor invoices — installed per-tenant and supported by ECOSIRE.

A build-to-order AL extension that adds localized, multi-country African payroll to your Business Central tenant — per-country PAYE and statutory deductions, multi-currency multi-entity runs, statutory filing exports, and employee self-service payslips.
A build-to-order AL extension that registers your Business Central sales invoices and credit memos with the Uganda Revenue Authority EFRIS service and returns the FDN, verification code and QR back onto the posted document. ECOSIRE scopes, builds, installs and supports it — it is not an AppSource download.