The problem
Singapore's InvoiceNow network runs on Peppol. A compliant document is not a PDF and not a plain XML dump of a sales invoice — it is a Peppol BIS Billing 3.0 UBL instance that must satisfy the Singapore country rules, carry the correct participant identifiers for both sender and receiver, and be handed to a certified access point for delivery. IRAS reporting expectations add a second constraint: the GST treatment recorded in your ledger has to line up with what leaves the building on the invoice, and it has to stay traceable when a credit note or an adjustment is issued months later.
Dynamics 365 Finance & Operations gives you an electronic reporting engine and a strong tax posting model, but it does not ship a turnkey Singapore InvoiceNow path for the local access-point model. Teams end up bridging the gap with spreadsheet exports, a portal someone logs into manually, or a middleware layer that nobody in finance can audit. Each of those breaks the moment volume rises, a legal entity is added, or a document is rejected downstream and nobody can say which invoice it was.
What ECOSIRE builds
ECOSIRE builds a Singapore InvoiceNow extension for your F&O environment. Nothing here is pre-packaged and waiting for download — the app is written for your legal entity structure, your access point provider, your tax setup and your document flows, then delivered into your own pipeline.
Document generation
The extension maps posted customer invoices, credit notes and free text invoices onto Peppol BIS Billing 3.0 UBL. Mapping is driven by configuration you can see and change: legal entity registration details, customer participant identifiers, tax code to UBL tax category mapping, unit of measure translation, and allowance/charge handling for line and header level discounts. Generation runs off the posted document, not the sales order, so what you transmit is exactly what you booked.
Exchange with your access point
Outbound delivery is implemented as a service integration against the access point you contract with. The extension handles authentication, request construction, submission, and the asynchronous acknowledgement that comes back — status is written onto the source document so a collections clerk can see delivery state without leaving the invoice. Inbound supplier documents are received, parsed, validated and staged for vendor invoice matching, with rejections captured rather than silently discarded.
Tax and GST alignment
Sales tax codes, tax groups and item tax groups are mapped to the tax categories and reason codes the Singapore rules expect. Where a document carries zero-rated, exempt or out-of-scope treatment, the mapping is explicit and the resulting UBL carries the correct category and exemption reason. Ledger dimensions posted on the invoice remain intact — the extension reads them, it does not rewrite them.
Platform mechanics
- Written as X++ extensions with event handlers, extension classes and Chain of Command. No overlayering, so your one-version upgrade path is not affected.
- Data entities exposed for the InvoiceNow configuration, the transmission log and the document status, available over OData for reporting or an external monitoring tool.
- Batch framework jobs for outbound submission, status polling and inbound retrieval, each with its own batch group so you can throttle them independently.
- Retry with backoff on transport failures, and a manual resubmit action for documents that failed validation and have been corrected.
- Number sequence and file archival for the transmitted payload, so an auditor can be shown the exact bytes that left the system.
Who this is for
Singapore-registered entities on Dynamics 365 Finance & Operations that invoice other businesses and need to be on InvoiceNow — either because a customer requires it or because the entity falls inside the GST-registered scope. It suits groups running Singapore alongside other countries in one F&O instance, where the Singapore requirement must be isolated to the Singapore legal entities without disturbing the rest.
It also suits shared service centres processing Singapore billing on behalf of an operating company, where the finance team needs delivery status visible inside F&O rather than in a provider's portal.
How delivery works
1. Scoping call. We walk your legal entities, invoice types, tax setup, access point contract and volume. We confirm which document flows are in scope — customer invoices, credit notes, free text, project invoices — and whether inbound receipt is required.
2. Fixed quote. You get a written scope with the mappings, the batch jobs, the entities and the acceptance criteria, at a fixed price. No hourly drift.
3. Build. ECOSIRE develops the extension in a development environment on the same platform version you run. Unit testing covers the mapping layer; schema validation runs against the Peppol BIS Billing rule set.
4. Install in test. The deployable package goes through your LCS/sandbox pipeline into your test environment. We run the end-to-end cycle with your access point's test endpoint against your own data, and hand you a test script to sign off.
5. Production. After sign-off the same package is promoted to production through your pipeline. We are on the call for the first live transmissions.
6. Support. A defined support window follows go-live for defect fixes and configuration questions, with the source code in your hands throughout.
Lead time and honesty
This app does not exist yet as a shrink-wrapped product. It is built for you, typically over one working week from signed quote to test environment, depending on how many document flows and legal entities are in scope. There is no trial download and no instant install, because there is nothing generic to install — the value is in the mapping and the exchange path being correct for your setup.