The problem
Romanian B2B and B2G transactions must be reported to the ANAF e-Factura platform inside statutory deadlines. The obligation is not a reporting nicety — an invoice that never reaches ANAF, or that is rejected and never corrected, exposes the legal entity to penalties and leaves the customer without a valid fiscal document. On top of that sits e-Transport, which requires goods movements above the reporting thresholds to be declared and carry a valid UIT code before the truck leaves.
Standard Dynamics 365 Finance & Operations gives you a well-structured invoice, tax posting and an Electronic reporting engine. What it does not give you out of the box is a supervised, closed-loop integration with ANAF: OAuth-based access to the SPV endpoints, a queue that survives token expiry, a place to see which of last week's 900 invoices are still sitting in in prelucrare, or an operational alert when an upload silently stops working after a certificate rotation. Teams that try to bridge that gap with spreadsheets and manual portal uploads end up doing exactly the reconciliation work the mandate was supposed to remove.
What ECOSIRE builds
ECOSIRE builds a dedicated e-Factura extension for your Dynamics 365 Finance & Operations environment. It is written as X++ extension code — event handlers, chain-of-command, extension tables and new forms — with no overlayering, so it deploys cleanly through your own LCS or Azure DevOps pipeline and survives Microsoft's service updates.
Document generation
Sales invoices, free text invoices, project invoices and credit notes are mapped to the RO_CIUS UBL 2.1 profile. The mapping covers legal entity registration data, customer fiscal codes, VAT breakdown by rate and exemption reason code, unit-of-measure translation, discount and charge lines, and payment means. Where your business needs it, we drive the XML through the Electronic reporting framework so your finance team can adjust a format configuration without a code deployment; where the transformation is genuinely structural, it lives in X++ where it can be unit tested.
Transmission and status
A transmission service handles OAuth token acquisition and refresh, the upload call, the message index and the download of the signed response. Every document gets a record in a new journal table holding the upload id, the ANAF index, the returned status, the signed XML and any error list. A batch job — running on the standard F&O batch framework with a configurable recurrence and batch group — sweeps for pending documents and polls until each reaches a terminal state. Retries are bounded and idempotent: re-running a batch never produces a duplicate upload for the same invoice.
Corrections and monitoring
Rejected documents surface in a workspace with the ANAF error text attached to the offending invoice, so an AP or AR clerk can see why line 14 failed rather than reading raw XML. A monitoring tile shows the count of documents approaching their statutory deadline, and an alert can be raised into the F&O alerts framework or by email when the pending queue stops draining — that is the control that actually prevents penalties.
e-Transport
Where e-Transport is in scope, we extend the same pattern to goods movements: declaration built from the shipment or transfer order, UIT code retrieved and stored back on the source document, and the code made visible to warehouse staff so nothing leaves the dock without it.
Data and integration surface
We expose the status data as data entities so it is available over OData and through the Data management framework for your own reporting, and — where you already run a Power Platform layer — we can add a model-driven view or a Power BI dataset over the same entities rather than building a second reporting stack.
Who this is for
Groups running one or more Romanian legal entities on F&O, especially where invoice volume makes portal upload untenable, where several legal entities must be handled with different registration data in one environment, or where an existing partial solution has left the team reconciling statuses by hand.
How delivery works
ECOSIRE does not sell a shrink-wrapped download. Every build starts with a scoping call where we walk your invoice types, legal entities, tax setup and any existing localisation you already run. You get a fixed quote against a written scope. We then build the extension against your version of F&O, deliver a deployable package and install it in your test or sandbox environment first, where we run it against your real document shapes with you. Only after you have signed off does it move to production through your normal release pipeline. A support window follows go-live, covering defects in what we built and adjustments where ANAF changes a schema or an endpoint.
Lead time is typically one working week from a signed quote, depending on how many document types and legal entities are in scope and how quickly a sandbox is made available.