A build-to-order AL extension that fiscalizes Business Central sales invoices, credit memos and service invoices through ZRA Smart Invoice, then stores the returned fiscal data on the posted document. ECOSIRE scopes, builds, installs and supports it for your tenant and release wave. 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 fiscalizes Business Central sales invoices,
credit memos and service invoices through ZRA Smart Invoice, then stores the returned fiscal data on the posted document.
ECOSIRE scopes, builds, installs and supports it for your tenant and release wave.
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.
Zambian VAT-registered businesses must transmit sales documents to the Zambia Revenue Authority's Smart Invoice service and print the returned fiscal identifiers on the customer's copy. Dynamics 365 Business Central posts a clean Sales Invoice Header with VAT posting setup, currency and dimensions all correct — and then stops. There is no field to hold a Smart Invoice reference, no verification QR data, no retry when the ZRA endpoint or the local Smart Invoice device is unreachable, and no way to tie a posted credit memo back to the fiscal reference of the invoice it corrects. Finance teams end up keying the same invoice a second time into a separate ZRA portal or VSDC utility, reconciling two sets of numbers at month end, and discovering mismatches only when an auditor asks.
ECOSIRE builds a Business Central AL extension that closes that gap inside the ERP. Table extensions on Sales Invoice Header, Sales Cr.Memo Header and Service Invoice Header carry the fiscal state: Smart Invoice number, ZRA-assigned identifiers, device/branch reference, signature or verification payload, transmission timestamp and status. An event subscriber on the posting codeunits (OnAfterPostSalesDoc and equivalents) enqueues the document rather than blocking the user, so posting stays as fast as it is today. A dedicated transmission codeunit builds the ZRA payload from your master data — item classification and tax-type codes held on Item and Item Category, TPIN and branch codes on Company Information and Customer — signs and posts it to the Smart Invoice API or local device endpoint, and writes the response back onto the posted document.
Because the ZRA service will reject payloads, rejection is a first-class flow, not an error log. A Smart Invoice Log table records every attempt with request, response, HTTP status and error code, and a Fiscalization Worksheet page lets a finance user filter failed documents, read the ZRA message in plain language, correct the underlying master data, and re-submit — with an idempotency key so a retry can never produce a duplicate fiscal record. A job queue entry drains the pending queue on your chosen interval and escalates aged failures; credit memos carry the originating invoice's fiscal reference so ZRA sees a correction rather than an unrelated document. The same posting produces both outputs the regulation expects: the human-readable invoice report, extended with the fiscal block and verification QR, and the machine payload retained for the statutory archiving period in a locked, non-editable log.
Everything ships as versioned AL source with permission sets separating who may post, who may re-transmit, and who may only read the log. Setup lives on a dedicated Smart Invoice Setup page with per-environment endpoints, so sandbox and production never share credentials, and secrets are held in isolated storage rather than plain setup fields. API pages expose fiscal status over REST API v2.0 / OData v4 for Power BI reporting or a Power Automate alert, and Dataverse virtual tables are available where a wider Power Platform estate needs the same data. The extension targets your current Business Central release wave and runs on SaaS online tenants as a per-tenant extension or AppSource-track app, and on-premises where you host it yourself.
This is build-to-order, not a marketplace download. You request a quotation, we run a scoping call to confirm your document types, VAT and tax-type mapping, branch/device topology and ZRA registration status, and we quote a fixed scope. Typical delivery is 2-4 weeks from confirmed scope. We build against your Business Central version, deploy to your sandbox first for UAT against the ZRA test environment, then promote to production with a documented rollback. You receive the AL source and a git repository so the extension remains yours.
Owns VAT filing accuracy and the ZRA relationship. Needs every posted invoice fiscalized once, visible failures surfaced daily rather than at month end, and a defensible audit trail linking each Business Central document to its Smart Invoice record.
Issues the invoices and answers when a customer says their copy is not valid. Needs the fiscal number and verification QR on the printed document straight from posting, and a self-service worksheet to fix and resubmit a rejection without raising an IT ticket.
Accountable for the tenant, extension estate and monthly Microsoft update waves. Needs a per-tenant or AppSource-track extension with clean object ranges, permission sets, isolated-storage credentials and no unsupported base-app modifications.
Runs Zambian entities alongside operations elsewhere. Needs Smart Invoice compliance enabled only for the Zambian companies and branches, with fiscal status readable over API pages for group-level Power BI reporting.
| Criterion | ECOSIRE | Custom Build | Competitor | Dynamics 365 Business Central Native |
|---|---|---|---|---|
| Fit to your Business Central setup | Built against your version, item mapping and branch topology from a scoping call | Fits exactly, but you specify it yourself from scratch | Generic configuration; your edge cases become change requests | No Smart Invoice concept exists in the base product |
| Fiscal data on the posted document | Table extensions store the ZRA number, identifiers and status on each posted header | Achievable, but the schema and upgrade path are your design decision | Usually present, sometimes held in a separate app-owned table | Nowhere to store it; teams resort to a spreadsheet or the ZRA portal |
| Rejection and correction handling | Worksheet page with plain-language errors, guided correction and idempotent resubmit | Often the last thing built, and the first thing that hurts at month end | Varies widely; some expose only a raw error log | Not applicable — no transmission to reject |
| Delivery timeline | 2-4 weeks from confirmed scope, sandbox UAT before production | Depends on your AL capacity; usually longer once testing is counted | Install in a day, then weeks of configuration and gap discovery | Available now, but the compliance gap stays open |
| Source code and ownership | Full AL source plus a private git repository handed over to you | You own it entirely, and you own every future fix | Compiled app only; changes require a vendor request | Microsoft base app, no extension to own |
| Update-wave resilience | Extension model with event subscribers, no base-app modification | Depends on the discipline of whoever wrote it | Vendor-maintained, on the vendor's release schedule | Fully Microsoft-maintained |
| Reporting and Power Platform access | API pages over REST API v2.0 / OData v4, Dataverse virtual tables on request | Buildable, but usually skipped in the first release | Often limited to in-product pages and a fixed report | Standard Business Central APIs only, with no fiscal data to expose |
| Support model | Named post-go-live support window, then renewable or self-maintained | Internal team or contractor availability | Annual subscription tied to continued licensing | Microsoft support covers the base product, not local compliance |
This is a build-to-order extension, not an existing AppSource download. Typical delivery is 2-4 weeks from confirmed scope — that clock starts once the scoping call has settled your document types, tax-type and item mapping, branch/device topology and ZRA registration details, and the quotation is accepted. Sandbox deployment and UAT sit inside that window; production promotion is scheduled with you.
Both. On a SaaS online tenant it installs as a per-tenant extension, or on the AppSource track if you prefer that governance model. On-premises it installs into your own service tier. It is built as a standard AL extension with table, page and report extensions plus event subscribers — no base-app modification — so it survives Microsoft's monthly and release-wave updates the supported way.
Posting is never blocked. The document posts, the fiscalization attempt is queued, and every attempt is written to the Smart Invoice Log with the request, response and ZRA error code. Failures land on the Fiscalization Worksheet with plain-language error text; a user corrects the underlying master data and resubmits. Each posted document carries an idempotency key, so a retry or a concurrent job queue run cannot produce a duplicate fiscal record.
Whichever your ZRA registration uses — the setup supports API endpoints and local Smart Invoice device (VSDC-style) endpoints, and the endpoint is selectable per branch so a multi-site operation can mix them. We confirm which applies to you during scoping, and configure sandbox against the ZRA test environment before anything reaches production.
A post-go-live support window is included in every quotation: defect fixes, help with configuration, and adjustments for ZRA endpoint or payload-schema changes encountered during that window. After it ends you can renew support, or maintain the extension yourself — you hold the AL source and the git repository, so you are never locked to us. Business Central release-wave compatibility work is quoted separately when a new wave requires code changes.
Yes. API pages expose fiscal status and log summaries over REST API v2.0 / OData v4, which Power BI, Power Automate and custom integrations can consume directly. Where you run a wider Power Platform estate, we can expose the same data as Dataverse virtual tables. Scope that during the scoping call so the API contract is designed once rather than retrofitted.
Your ZRA taxpayer registration and Smart Invoice enrolment details (TPIN, branch codes, device or API credentials), a sandbox Business Central environment we can deploy to, your current item and VAT posting setup for the mapping workshop, and a named finance owner for UAT sign-off. If any of these are still in progress we can build against the ZRA test environment and defer the production cutover.

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 fiscalizes Business Central sales invoices, credit memos and service invoices through ZRA Smart Invoice, then stores the returned fiscal data on the posted document. ECOSIRE scopes, builds, installs and supports it for your tenant and release wave.