The problem
Moving from selling a product once to selling it as a service changes what the ERP has to do every month. Instead of an order and an invoice, you now have a contract that bills on a cycle, sometimes in advance and sometimes in arrears, often with a usage component metered outside the ERP, frequently with customers adding seats on the eleventh of the month and expecting a prorated charge. Then somebody downgrades mid-term, somebody else pauses for two months, and a fourth customer needs a single consolidated invoice covering forty sites across three legal entities.
Dynamics 365 Finance & Operations gives you recurring free text invoices and subscription handling in the project module, and for a flat monthly fee against a fixed customer list, that is enough. It stops being enough when proration, usage rating, mid-term plan changes, credit for a downgrade, and automated dunning enter the picture. The common outcome is a billing operator running a monthly spreadsheet, calculating proration by hand, and a growing gap between what the contract says and what the invoice charges.
ECOSIRE builds a billing engine inside F&O so the recurring invoice run is generated from contract data, with the arithmetic visible on every line.
What ECOSIRE builds
All code is X++ extension code in your own model and package. No overlayering, so platform updates stay routine. The scope is driven by the pricing models you actually operate.
Billing contracts and schedules
A contract header holds the customer, legal entity, billing currency, payment terms and the billing calendar; contract lines hold the billable elements. Each line carries a billing frequency (monthly, quarterly, annual or a custom cycle), a billing mode (advance or arrears), a term with start and end dates, and its own renewal behaviour. Schedules are generated ahead of time so both finance and the customer can see what will be invoiced and when, rather than discovering it after the run.
Recurring, usage-based and milestone charges on one contract
Three charge types are supported on the same contract. Fixed recurring charges bill a set amount per cycle. Usage-based charges rate consumption records against a tariff — flat rate per unit, tiered, volume-banded, or with an included allowance and overage. Usage is imported through the data management framework or posted to a staging entity over OData from your metering platform, then rated during the billing run rather than pre-rated on the way in, so a tariff correction can be applied by re-rating instead of re-importing. Milestone charges bill on completion of a defined event, integrated with project milestones where your delivery lives in the project module.
Proration and mid-term changes
Proration is the feature that decides whether a billing engine is usable. Quantity increases, plan upgrades and downgrades, additions and cancellations mid-cycle are all calculated on a configurable basis — daily, or by a fixed proration calendar — with the credit and the new charge shown as separate lines so the customer can read the invoice without calling. Upgrades can bill immediately or at the next cycle depending on your policy. Pauses and reactivations shift the schedule rather than corrupting it.
Invoice generation
The billing run is a RunBaseBatch job schedulable in the F&O batch framework. It selects due schedule lines, rates usage, applies proration, and generates customer invoices through the standard sales or free text invoice posting path, so tax calculation, ledger dimensions, posting profiles and customer aging all behave exactly as they do for the rest of your AR. Invoice consolidation rules can group multiple contracts, sites or child accounts onto one document while retaining per-contract detail underneath. Runs are logged, previewable before posting, and idempotent so a re-run does not double-invoice.
Renewals, escalations and expiry
Contracts can auto-renew, renew on notice, or expire. Price escalation clauses — a fixed percentage or an indexed uplift at renewal — apply automatically and are visible on the contract before they hit an invoice. A renewal workflow can be routed through the F&O workflow system so a commercial owner approves increases above a threshold.
Dunning and collections
Overdue contracts drive a configurable dunning sequence: escalating reminders on a defined schedule, optional service suspension flags on the contract, and a collections worklist for the AR team. Reminders integrate with F&O collections data so the same customer is not chased twice by two processes.
Multi-entity and reporting
Contracts are legal-entity aware, so a group billing the same customer from several entities keeps the ledger clean while presenting consolidated documents where the customer requires it. Data entities are published through the data management framework and OData covering contract value, scheduled billings, usage detail and churn events, so Power BI can report recurring revenue movement directly from the ledger rather than from an export.
Who this is for
Organisations on Dynamics 365 Finance & Operations that bill on a recurring or consumption basis: software and platform vendors, equipment providers with service contracts, managed service and maintenance businesses, and any company shifting a product line to a subscription model. It fits best where the billing volume or the pricing complexity has already outgrown recurring free text invoices, and where somebody is currently calculating proration by hand.
If you issue a small number of identical monthly invoices with no usage component and no mid-term changes, the standard recurring invoice functionality is likely sufficient and we will say so during scoping.
How delivery works
This is a build-to-order application. There is no instant download and no trial, because the engine is built around your pricing model and your billing calendar.
1. Scoping call. We go through your price book, contract templates, billing calendar, current invoice examples, how usage data reaches you today, your proration policy and your dunning process. Real invoices are more useful than a requirements list — they show the edge cases.
2. Fixed quote and specification. You get a written functional specification covering every charge type, proration rule, consolidation rule, renewal behaviour and dunning step to be built, with the data entities and reports, at a fixed price with a delivery date. Approval comes before any development.
3. Build. Development happens in our F&O environment on your target version, with checkpoints. Scope changes are handled as written change requests against the fixed quote.
4. Install in your test environment. We deliver the deployable package and deploy it into your sandbox through LCS or your Azure DevOps pipeline, or guide your team. Then we load a representative set of real contracts and run a full billing cycle in parallel with your current process, comparing invoice by invoice. Differences are resolved before anything moves.
5. Production. After sandbox sign-off the same package promotes to production through your release pipeline. We are on hand for the first live billing run, which is the run that matters.
6. Support window. A defect support period is included, covering anything not behaving as specified. New pricing models and additional charge types are quoted as follow-on work.
Typical lead time is one working week from specification sign-off, depending on how many charge types, proration rules and integrations are in scope.