If you use Dynamics 365 Project Operations without Dynamics 365 Finance and you invoice customers in Germany, a deadline is coming. From 1 January 2027, most invoices between German businesses have to be e-invoices. A PDF you put together in Word won’t count any more.
This guide explains what changes, why Project Operations can’t create a legal e-invoice on its own, and how our WBS Invoice Accelerator for Dynamics 365 closes the gap natively, on top of Microsoft’s standard Project Operations billing processes, without adding a second invoicing system.
The short version
- 2027: Most invoices between German businesses must be e-invoices. Smaller companies get one extra year, but only for work done in 2027.
- 2028: Almost every invoice between German businesses must be an e-invoice.
- The gap: Project Operations Core (without Finance) creates draft invoices. It doesn’t give you a legal invoice number, the VAT details German law asks for, or an e-invoice file.
- The fix: The WBS Invoice Accelerator adds those parts natively inside Project Operations. It builds on Microsoft’s standard billing processes, so your team keeps billing the way it does today.
What is an e-invoice?
An e-invoice isn’t a PDF sent by email. It’s a structured data file that your customer’s software can read on its own, without anyone typing numbers in again. In Germany it has to follow the European standard EN 16931. Two formats cover almost every case:
- XRechnung is a pure data file (XML). You need a viewer to read it, but software handles it easily. Public-sector buyers usually ask for it.
- ZUGFeRD is a normal-looking PDF with the same data file embedded inside it. People read the PDF, software reads the data. If the two ever differ, the data is what counts for VAT. It has to be version 2.0.1 or later, and not the MINIMUM or BASIC-WL profiles.
Every detail the law requires, including the date or period of the service, has to be in the data part, not just printed on the PDF.
When the rules apply to you
The rules come from Germany’s Growth Opportunities Act (Wachstumschancengesetz) of March 2024, which changed the German VAT Act (UStG). The Federal Ministry of Finance (BMF) has published guidance on how they apply. Here’s the timeline:
| When | What it means for you |
|---|---|
| Since 1 Jan 2025 | Every German business must be able to receive e-invoices. An email inbox is enough. |
| Until 31 Dec 2026 | You can still send paper invoices, or PDFs if your customer agrees, for work done in 2025 and 2026. |
| From 1 Jan 2027 | If your total turnover in the previous year was over €800,000, you must send e-invoices. If it was €800,000 or less, you can keep using paper or PDF for work done in 2027, as long as the invoice goes out by 31 Dec 2027. |
| From 1 Jan 2028 | Almost every invoice between German businesses must be an e-invoice. Exceptions include small invoices up to €250 gross, invoices from businesses under the small-business VAT scheme (Kleinunternehmer) and many VAT-exempt services. |
Until the end of 2027 you can also bill through an existing EDI connection instead, if your customer agrees.
Who counts as a German business?
The rules apply when both you and your customer are established in Germany, meaning a head office, management or a branch involved in the sale is there. Just having a German VAT number isn’t enough.
Watch out for your January 2027 invoice run
In Project Operations, a time-and-material invoice run bills work up to the day before the run date. So a run on 1 January 2027 bills December 2026 work.
Paper and PDF are only allowed for 2025 and 2026 work if the invoice goes out by 31 December 2026. The extra year for smaller companies only covers work done in 2027. Going by the wording of the law, those January invoices therefore have to be e-invoices, even if your turnover is under €800,000. Plan for your first e-invoices in January 2027, not 2028.
Public-sector customers
If you bill German federal authorities, e-invoices have generally been required since 27 November 2020. You add the authority’s Leitweg-ID, a routing ID they give you, in the Buyer reference field (BT-10). Between private businesses, no Leitweg-ID is needed.
How Project Operations creates invoices today
This guide is about Project Operations Core, the version that runs only on Dataverse, without Dynamics 365 Finance. Microsoft’s documentation also calls it “lite”. Billing works like this:
- Work waits in the billing backlog. Approved time, expenses, materials and milestones sit there until someone bills them.
- The project manager picks what to bill and marks it Ready to Invoice.
- A draft invoice is created. You can do this for one contract, for several contracts at once, from the Billing hub, or automatically through a scheduled invoice run.
- Someone reviews and confirms it. Confirm locks the invoice and records the work as billed.
- Mistakes are fixed with Revise. Revise creates a corrective invoice for an invoice that’s already confirmed or paid.
If your hours come from Field Service work orders, Field Service and Project Operations, natively connected explains how they reach the project.
Where Project Operations stops
Microsoft says plainly that Project Operations Core “isn’t designed to generate customer-facing invoices”. One of the reasons it gives: it “does not contain tax information”. Microsoft suggests a separate finance or accounting system for the actual customer invoice.
That’s why many teams copy each confirmed draft into Word or an accounting tool. It works, but everything gets typed twice, and from 2027 the Word version isn’t a valid invoice for German business customers anyway.
German VAT law (§ 14 UStG) asks for a few things the draft doesn’t cover. Here are the main gaps:
| What the law asks for | Project Operations Core | With the WBS Invoice Accelerator |
|---|---|---|
| A unique, sequential invoice number | A number is given the moment a draft is created, before anyone decides to send it | The legal number is given only when you issue the invoice |
| Date or period of the service | Only on the individual transactions | Filled in from the first and last transaction dates |
| VAT rate and amount for each rate | “Does not contain tax information” (Microsoft) | VAT per line, for example 19%, 7% or 0%, with the reason for any exemption |
| Clean cancellations and corrections | Revise creates a corrective invoice | Cancellation invoice or credit note with its own number, linked to the original |
| E-invoice file | Not available | XRechnung or ZUGFeRD, checked before the file is created |
| Record keeping | Confirmed invoices are read-only | Issued invoices can’t be deleted, and each file is stored with a locked record and checksum |
With Dynamics 365 Finance, it works differently. Finance creates and posts the customer invoice and has its own support for German XRechnung. If you use Finance, you don’t need the accelerator for this. Without Finance, the customer invoice is your job, and that’s the case we built the accelerator for.
Why native integration matters
This is the biggest difference from a separate invoicing tool. The accelerator doesn’t copy invoices out of Project Operations. It works on the same invoice record, in the same Dataverse environment, and plugs straight into Microsoft’s standard billing processes:
- Your billing setup stays as it is. Contract lines, billing methods (time and material or fixed price), invoice schedules, the billing backlog and the Billing hub keep working the way Microsoft designed them.
- Billed actuals stay correct. Confirm and Revise are Microsoft’s own actions, so billed and unbilled actuals, and the reversals your general ledger integration relies on, are created exactly as usual.
- Nothing to sync, nothing to reconcile. There’s no export, no second customer list and no second copy of the invoice that can drift out of step.
- Microsoft’s updates reach you. Because the accelerator builds on the standard processes instead of replacing them, new Project Operations features and fixes flow straight into your invoicing.
- One app for the whole team. Project managers, billing and finance work in the same place, with the Project Operations transactions visible behind every invoice line.
For project-oriented organizations, this is the point: you get compliant e-invoices while still using everything Project Operations already does out of the box, instead of rebuilding billing somewhere else.
How the WBS Invoice Accelerator fills the gap
The accelerator is an add-on for Microsoft’s Project Operations and Sales apps, installed as a managed Dataverse solution in your existing environment. Here’s what changes, step by step.
1. Create invoices the way you do today
Every route works: Create Invoice on a contract, Create Project Invoices for several contracts, the Billing hub and scheduled invoice runs. We tested each one live. The accelerator picks up every new invoice and fills in the invoice type, issue date, brand profile and default VAT rate.
2. Drafts keep a draft number
Until you issue it, an invoice only has a draft number, such as DRAFT-01053. We set the prefix during setup. Drafts you throw away never use up a real invoice number.
3. Issue the invoice and get a real number
When you issue the invoice, by setting it to Active or clicking Confirm in Project Operations, it gets its legal number, for example RG-26-0001. Numbers come from ranges you set up per invoice type and brand. Even if two people issue invoices at the same moment, no number is used twice. German tax rules allow separate ranges, as long as each one has its own prefix so every number stays unique.
Issuing also confirms the invoice in Project Operations, so billed work is recorded exactly as before. If nobody entered a service period, the accelerator fills it in from the first and last transaction dates.
4. Get the VAT right on every line
Set a VAT rate for the invoice, then change it on single lines where needed, for example 19%, 7% or no VAT. For every rate without VAT you store the reason: the exemption, or the reverse-charge note German law requires (“Steuerschuldnerschaft des Leistungsempfängers”, meaning the customer pays the VAT). If the reason is missing, the accelerator won’t create an e-invoice.
5. Cancel or correct cleanly
To cancel a confirmed invoice, the accelerator uses Microsoft’s own Revise action. The result is a cancellation invoice (Stornorechnung) with its own number that refers to the original. Once it’s confirmed, the work becomes billable again and the original is marked as cancelled.
For a partial correction, the accelerator creates a credit note if the amount goes down, or a new invoice if it goes up, both linked to the original. Two Microsoft limits apply: milestones are always credited in full, and product-based contract lines are corrected through journals instead.
Cancelled something by mistake? As long as the cancellation invoice hasn’t been issued, you can simply delete it. Nothing has been reversed yet.
6. Create the e-invoice
For each invoice, you create the e-invoice in the format your customer needs:
- XRechnung, including the Leitweg-ID for public-sector customers
- ZUGFeRD in the EN 16931 profile (also called COMFORT): a PDF/A-3 with the data embedded
Before any file is created, the invoice is checked against the EN 16931 rules, and an XRechnung also against the rules from KoSIT, the German public body that maintains the format. If a check fails, you get a message and no file. A Check e-invoice button runs the same checks without creating a file. In our tests, the XRechnung files passed the KoSIT validator and the ZUGFeRD files passed veraPDF’s PDF/A-3b checks. Want to test a file of your own? Try our free e-invoice validator.
7. Stored safely, sent by you
The finished file is saved on the invoice, together with a record of who issued it, when, in which format, and a checksum (SHA-256) of the file. Both are locked against changes and deletion, and issued invoices can’t be deleted either.
You send the file to your customer yourself, by email or through a public-sector invoice portal. The accelerator doesn’t connect to Peppol or to government portals.
Where your data is processed
The e-invoice file is created by a small Azure Function that WBS runs for you in Germany (Azure region Germany West Central, Frankfurt), under a data processing agreement. It only has read access to your Dataverse environment.
A few more things it does
- Your branding. Logo, colours, legal name, VAT ID and bank details come from a brand profile. Keep one for each brand or company you bill under.
- German or English. Invoices print in either language, for customers in Germany and abroad.
- Foreign currencies. Invoices show the exchange rate and the total in your base currency.
- Invoice editor. See each invoice the way your customer will, with the Project Operations transactions behind every line.
- Field Service. Work orders billed through Project Operations follow the same steps.
- Dynamics 365 Sales. Sales invoices get the same numbering and VAT, plus down payment, progress, partial and final invoices. More in ZUGFeRD and XRechnung from Dynamics 365 Sales.
Your accounting system then books the finished invoices, just as before.
How we get you started
We’re a Dynamics 365 Project Operations and Field Service partner based in Würzburg, Germany, and we build the accelerator ourselves. The team that builds it also sets it up for you:
- We review your contract lines, billing methods and invoice schedules.
- We set up your number ranges, VAT rates and brand profiles.
- We run a full billing cycle in a sandbox copy of your environment, from invoice run to cancellation.
- Before go-live, we check your XRechnung output in the KoSIT validator.
Invoicing German customers from Project Operations? Book a free scoping call and bring two or three of this month’s invoices. We’ll show you what the accelerator would change.
Frequently asked questions
Between German businesses, a plain PDF only works during the transition periods in the timeline above. A ZUGFeRD file is also a PDF, but it counts as an e-invoice because of the data embedded in it.
No. With Finance, the customer invoice comes from Finance, which has its own support for German e-invoices. The accelerator is for Project Operations Core without Finance.
Yes. Since 1 January 2025, every German business must be able to receive e-invoices. An email inbox is enough.
Yes. The accelerator doesn’t embed attachments in the e-invoice, so send the timesheet breakdown alongside it. Monthly invoices are fine too, because the calendar month counts as the service period.
No. It creates, checks and stores the file. You send it by email or through your customer’s invoice portal.
Sources
- Microsoft Learn: Deploy Project Operations Core
- Microsoft Learn: Proforma project invoices
- Microsoft Learn: Create proforma project invoices with Billing hub
- Microsoft Learn: Set up automatic invoice creation
- Microsoft Learn: Manage a proforma project invoice
- Microsoft Learn: Revise (correct) project invoices
- Microsoft Learn: Create invoice schedules on a project contract line
- Microsoft Learn: Invoicing process overview
- Microsoft Learn: Customer electronic invoices in Germany
- Bundesgesetzblatt: Wachstumschancengesetz, BGBl. 2024 I Nr. 108
- Gesetze im Internet: § 14 UStG
- Gesetze im Internet: § 14a UStG
- Gesetze im Internet: § 27 UStG (para. 38, transition rules)
- Federal Ministry of Finance: BMF letter of 15 October 2024 on mandatory e-invoicing, BStBl I p. 1320 (transition rules in Rn. 62 to 65)
- Federal Ministry of Finance: BMF letter of 15 October 2025 (PDF)
- Federal Ministry of Finance: E-invoicing FAQ
- Federal Ministry of Finance: VAT Application Decree (UStAE), consolidated version (PDF)
- E-Rechnung Bund: FAQ
- KoSIT / XStandards Einkauf: XRechnung
- FeRD: ZUGFeRD
Keep reading
Building something in the Power Platform?
We design and ship the systems behind these posts. Tell us what you are working on.