Dynamics 365

E-Invoicing for Dynamics 365 Project Operations

Share
E-invoicing for Dynamics 365 Project Operations: invoice number at issue, VAT per line, Storno, XRechnung or ZUGFeRD

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:

  1. Work waits in the billing backlog. Approved time, expenses, materials and milestones sit there until someone bills them.
  2. The project manager picks what to bill and marks it Ready to Invoice.
  3. 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.
  4. Someone reviews and confirms it. Confirm locks the invoice and records the work as billed.
  5. 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:

  1. We review your contract lines, billing methods and invoice schedules.
  2. We set up your number ranges, VAT rates and brand profiles.
  3. We run a full billing cycle in a sandbox copy of your environment, from invoice run to cancellation.
  4. 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

Can I still send PDF invoices after 2027?

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.

Do I need the accelerator if I use Dynamics 365 Finance?

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.

Do I also have to receive e-invoices?

Yes. Since 1 January 2025, every German business must be able to receive e-invoices. An email inbox is enough.

Can I still send timesheets with my invoices?

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.

Does the accelerator send the e-invoices for me?

No. It creates, checks and stores the file. You send it by email or through your customer’s invoice portal.

Sources

Keep reading

Building something in the Power Platform?

We design and ship the systems behind these posts. Tell us what you are working on.

Book a meeting All posts