A build-to-order AL extension that produces validated OIOUBL documents from posted Business Central sales invoices and credit memos and exchanges them over Nemhandel/Peppol, with rejection handling and a compliant archive. 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 produces validated OIOUBL documents from posted Business Central sales
invoices and credit memos and exchanges them over Nemhandel/Peppol, with rejection handling and a compliant archive.
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.
Selling to Danish public-sector buyers means every invoice has to arrive as a valid OIOUBL document delivered over Nemhandel — not a PDF attached to an email. Teams that try to satisfy this from stock Business Central usually end up with a hybrid process: the invoice is posted in BC, then a finance user exports data to a spreadsheet, re-keys it into an access point portal or a bureau's web form, and manually files whatever acknowledgement comes back. Every hand-off is a place where the EAN/GLN receiver identifier, the buyer's reference (cbc:BuyerReference), the contract or order reference, or a VAT code can drift from what was actually posted. Business Central ships electronic-document plumbing and a Peppol-flavoured export, but a Danish OIOUBL profile with the country-specific identifier rules, the Nemhandel delivery path, the acknowledgement and rejection loop, and an auditable archive of exactly what was sent is not something you get by ticking a setup checkbox.
What we build is a per-tenant AL extension (or an AppSource-packaged app where you prefer that governance model) that treats the posted document as the single source of truth. Table and page extensions add the Danish e-invoicing fields where finance already works — GLN/EAN and Nemhandel registration on the Customer card, buyer reference and requisitioner on the sales order and posted invoice, and a document-status FactBox showing where each transmission stands. Codeunits build the OIOUBL XML from Sales Invoice Header/Sales Cr.Memo Header and their lines, mapping VAT posting setup, unit codes and item identifiers from your existing master data rather than from a parallel table you have to maintain. An event subscriber on the posting flow queues the document; a schema and business-rule validation pass runs before anything leaves the tenant, so a missing receiver identifier or an unmapped tax category is a clear error on the document, not a silent rejection days later.
Delivery runs through your chosen Nemhandel/Peppol access point over a configurable HTTP endpoint, driven by job queue entries so transmission, status polling and retries happen unattended with exponential back-off and a bounded retry count. Every attempt is logged: request, response, transport identifier, timestamp and user. The same posting produces both the machine format and the human-readable document your customer expects, so nobody has to reconcile two independent renderings. When an acknowledgement comes back negative, the extension records the reason codes against the document, moves it to a rejected state, and drives a correction workflow — correct and re-send, or credit and re-issue — with the full chain visible on the posted record. Sent XML and responses are retained in a compliant archive with an audit trail you can hand to an auditor, and the transmission log is exposed through API pages (REST API v2.0 / OData v4) so Power BI, a Power Automate flow, or a Dataverse-connected app can report on it without anyone opening the client.
Delivery is build-to-order. You request a quotation, we run a scoping call to confirm your Business Central deployment (SaaS or on-premises), your release wave, your access point, your document types and the localisation apps already installed. From confirmed scope, typical delivery is 2-4 weeks: we build on a sandbox copy of your environment, ship dedicated permission sets and telemetry, run UAT with your finance team against real transactions, then install into production with a rollback plan. You receive the AL source, a git repository handover, technical documentation and a user guide, plus a training session and a post-go-live support window. Nothing is downloaded from AppSource and nothing is pre-built on a shelf — the extension is built for your tenant, your data and your process.
Owns the invoice-to-cash cycle and is accountable for OIOUBL compliance on public-sector sales. Needs invoices to leave Business Central validated and delivered without a re-keying step, and needs to see at a glance which documents are sent, acknowledged or rejected.
Handles the day-to-day sending and the fallout when a document is rejected. Needs plain reason codes on the document, a clear correct-and-resend path, and confidence that a resend will not create a duplicate at the receiver.
Responsible for keeping the tenant upgrade-safe across release waves. Wants event-subscriber-based integration rather than base-app modification, dedicated permission sets, credentials in isolated storage, telemetry, and the AL source in a repository they control.
Needs to prove that what was transmitted matches what was posted. Relies on the immutable archive, the timestamped transmission log and the audit trail linking each posted document to its exact payload and response.
| Criterion | ECOSIRE | Custom Build | Competitor | Dynamics 365 Business Central Native |
|---|---|---|---|---|
| Danish OIOUBL profile coverage | Built to your document types and validated against the OIOUBL profile agreed in scoping | Depends entirely on how well your developer researches the profile | Broad Peppol coverage with Danish specifics varying by vendor | Generic Peppol-flavoured export; no full Danish OIOUBL profile |
| Nemhandel delivery | Integrated with your chosen access point over a swappable configured endpoint | You build and maintain the access point integration yourself | Usually tied to the vendor's own access point and contract | No Nemhandel transmission; export the file and send it elsewhere |
| Rejection and correction workflow | Reason codes on the document, rejected state, correct-and-resend or credit-and-reissue paths | Commonly deferred to phase two and handled by email in practice | Portal-side status list; correction often happens outside BC | No feedback loop — a rejection surfaces only when the customer chases payment |
| Tax and master-data mapping | Driven from your VAT Posting Setup and item master with per-customer overrides | Often hardcoded to today's chart of accounts and brittle when it changes | Vendor mapping tables you maintain in parallel to BC master data | Limited mapping; gaps are filled manually per document |
| Audit archive | Immutable payload and response archive with timestamps, user and transport identifiers | Whatever logging was budgeted for, typically thin | Archive lives in the vendor's portal, exported on request | No archive of transmitted documents inside Business Central |
| Upgrade safety across release waves | Event subscribers and extensions only; no base-app modification, with a compatibility pass per wave | Risk depends on the developer's discipline; base-app edits are common | Vendor handles it, on the vendor's release schedule | Microsoft-maintained, but the functional gap remains after every upgrade |
| Source code and ownership | Full AL source plus git repository handover — no runtime-only lock-in | You own it, and you also own every future fix | Runtime package only; behaviour changes require a vendor ticket | Base application; not yours to extend without an extension |
| Commercial model | One build-to-order fee, then optional maintenance; access point contracted separately by you | Open-ended development cost plus permanent internal maintenance | Per-tenant or per-document subscription, often bundled with transmission | Included in your BC licence, with the compliance gap unaddressed |
This is a build-to-order extension, not an AppSource download. Typical delivery is 2-4 weeks from confirmed scope. The clock starts once the scoping call has settled your Business Central deployment type and release wave, your access point, the document types in scope and any localisation apps already installed — not from the day you request a quotation.
No. The extension transmits through your chosen Nemhandel/Peppol access point over a configurable endpoint, and we integrate against that provider's API during the build. If you have not selected a provider yet, we will scope against a candidate and keep the endpoint configuration swappable so switching later is a setup change, not a rebuild.
Every engagement includes a post-go-live support window for defect fixes and configuration adjustments on the delivered scope. Beyond that, you can take a maintenance agreement covering Business Central release-wave compatibility testing, OIOUBL profile updates and access point API changes — or maintain it yourself, since you receive the full AL source and the git repository.
The extension integrates exclusively through event subscribers, table and page extensions, and API pages — no base application objects are modified. That is what keeps it upgrade-safe. We still recommend a release-wave compatibility pass twice a year, because Microsoft can change event signatures and the OIOUBL profile itself is versioned by the Danish authorities.
Yes. We support current release waves for both. SaaS deployments receive a per-tenant extension (or an AppSource-packaged app where your governance requires it); on-premises deployments receive the same AL source built for your version, with outbound network access to the access point configured on your infrastructure. The deployment model is confirmed during scoping because it affects credential storage and telemetry setup.
Yes. You receive the complete AL source for your version plus a git repository handover with commit history and build notes. There is no runtime-only package and no vendor lock — your team or another partner can maintain the extension without us.
Negative acknowledgements are captured against the posted document with the returned reason codes, and the document moves to a rejected state visible in the status FactBox. From there the workflow branches: correct the underlying data and re-send with a new transmission record, or credit and re-issue. Both paths keep the original payload in the archive, so the audit chain stays intact.

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 produces validated OIOUBL documents from posted Business Central sales invoices and credit memos and exchanges them over Nemhandel/Peppol, with rejection handling and a compliant archive. ECOSIRE scopes, builds, installs and supports it for your tenant and release wave.