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 bill projects in Dynamics 365 Project Operations without Dynamics 365 Finance and invoice German customers, the invoice usually takes two passes. Time, expenses and milestones flow into a draft invoice, the project manager reviews it, and someone rebuilds it in Word or an accounting tool to add an invoice number, the VAT breakdown and the service period. From January 2027, German businesses with more than €800,000 turnover in the previous year have to send invoices to German business customers as structured e-invoices. Smaller ones can wait until 2028, but only for work done in 2027: an invoice for 2026 work that goes out in 2027 has to be an e-invoice whatever your turnover. A PDF rebuilt in Word won’t count.

Our WBS Invoice Accelerator for Dynamics 365 works on the Project Operations invoice itself and turns it into an invoice you can send to your customer. For German business customers, that includes the e-invoice, created from the same record as XRechnung or ZUGFeRD. It’s meant for Project Operations Core, the deployment without Dynamics 365 Finance. If your Project Operations is integrated with Finance, the legal invoice comes from Finance, and the accelerator doesn’t replace that. It extends Microsoft’s Dynamics 365 apps, today Project Operations and Sales, and is installed as a managed Dataverse solution in the same environment, so there’s no separate invoicing system and no sync. Project Operations stays in charge of the invoice lifecycle. The accelerator adds what Project Operations Core leaves out: an invoice number assigned at issue, VAT per line, a branded invoice document, cancellation invoices (Stornorechnung) with their own number, and the e-invoice module for XRechnung or ZUGFeRD.

How Project Operations handles invoices

This post is about Project Operations Core, which Microsoft describes as “a Dataverse-only deployment of Project Operations” (Microsoft Learn, Deploy Project Operations Core). Microsoft’s URLs for it say “lite”.

  • Manual invoices. Create Invoice on a project contract invoices every transaction with the status Ready to Invoice (Microsoft Learn, Proforma project invoices).
  • Invoice runs. A recurring batch job creates draft invoices from the invoice schedules on contract lines (Microsoft Learn, Set up automatic invoice creation).
  • Confirmation. “When you select Confirm, the invoice becomes read only and creates billed sales actuals from each invoice line detail for each invoice line.” (Microsoft Learn, Proforma project invoices)
  • Corrections. A confirmed invoice can be revised for changes or credits agreed with the customer. The Revise action (formerly Correct this invoice) works only on invoices that are confirmed or paid, milestones are always credited in full, and product-based lines can’t be revised and are adjusted through journals instead (Microsoft Learn, Revise (correct) project invoices). When the corrective invoice is confirmed, Project Operations reverses the original billed actuals and puts credited work back to unbilled.

If your hours come from Field Service work orders, Field Service and Project Operations, natively connected explains how those actuals reach the project.

Where the Dataverse invoice stops

“Dynamics 365 Project Operations Core isn’t designed to generate customer-facing invoices,” Microsoft says. Two of the reasons listed: it “Does not contain tax information” and it “Cannot correctly format invoices for printing.” The suggested route is “a financial or accounting system to create customer-facing invoices that use the information in generated invoice proposals” (Microsoft Learn, Proforma project invoices).

§ 14 UStG asks for a sequential invoice number that the issuer assigns only once, the time of supply, and the net amount per tax rate with the rate and the tax amount, or a note that the supply is exempt. The proforma Invoice ID is “generated automatically when a proforma invoice is created”, so it numbers drafts before anyone decides to issue them. Tax on an invoice line detail is “Set by default from the source actual. You can edit this field.” (Microsoft Learn, Manage a proforma project invoice) Even with Finance, Microsoft keeps two numbers: the proforma ID becomes the invoice proposal number, and Finance assigns the customer invoice number at posting (Microsoft Learn, Manage project invoice proposals).

With Finance, the project accountant formats, posts and prints the customer invoice (Microsoft Learn, Invoicing process overview), and Finance has its own German XRechnung localization (Microsoft Learn, Customer electronic invoices in Germany). Without Finance, that job falls to you, and that’s the case the accelerator covers.

What the accelerator adds at each step

  • Invoice run or Create Invoice. Invoices created the Project Operations way are picked up automatically. The accelerator marks each one as a project invoice and sets the invoice type (Rechnung), the issue date, the brand profile and its defaults, such as the VAT rate. When the invoice is finalised, the accelerator fills in the service period (Leistungszeitraum, § 14 Abs. 4 Satz 1 Nr. 6 UStG) from the first and last transaction date on the invoice line details, unless someone has entered one by hand. The period prints on the invoice and goes into the structured data of the e-invoice.
  • Legal invoice number. Until it’s issued, the invoice carries only the draft ID that Project Operations generates when the invoice is created, for example ENTWURF-01053; we set the prefix during the implementation. The legal number is assigned at finalisation, when you set the invoice’s status to Active or confirm it in Project Operations. It’s sequential and unique, and it comes from configurable sequences per invoice type and brand profile in formats such as RG-26-0001. Two people finalising at once get two consecutive numbers, so no number is issued twice. German tax guidance allows gaps and separate ranges, as long as each number can be clearly assigned to its range and stays unique, for example by giving each range its own prefix (UStAE 14.5 Abs. 10 and 11).
  • Confirmation. Finalising in the accelerator runs Microsoft’s own confirmation, which creates the billed actuals. If someone uses the Confirm button in Project Operations instead, the accelerator assigns the legal number during that confirmation.
  • VAT per line. An invoice-level rate with per-line overrides, for example 19%, 7% or no VAT. Each rate is set up in the app with its EN 16931 VAT category. An exempt or reverse-charge rate also carries the exemption reason or the reverse-charge note (Steuerschuldnerschaft des Leistungsempfängers); if it’s missing, no e-invoice is created.
  • Storno. Cancelling (Stornieren) a confirmed invoice uses Microsoft’s own corrective invoice, the one its Revise action creates, so Microsoft’s limits for Revise apply. The accelerator types it as a Stornorechnung that refers to the original, and it gets its own legal number when it’s finalised. When it’s confirmed, Microsoft’s logic reverses the billed actuals, the work becomes billable again and the original is marked cancelled.
  • Revised invoices. Project Operations’ Revise action works as well. When the revised invoice is finalised, the accelerator sets its type from the result. A full reversal becomes a cancellation invoice, a partial credit becomes a credit note (Gutschrift on German-language invoices) and a revision that bills more becomes a regular invoice, each with a reference to the original. For VAT, such a credit note isn’t a Gutschrift in the sense of § 14 Abs. 2 Satz 5 UStG, which means self-billing by the customer; UStAE 14.3 Abs. 2 Satz 5 says a cancellation or correction doesn’t count as one.
  • E-invoice. The accelerator creates an XRechnung or a ZUGFeRD file from the invoice, one format per invoice, and supports the Leitweg-ID for public-sector buyers. ZUGFeRD is a PDF/A-3 with the XML embedded, in the EN 16931 profile. In a hybrid invoice like this, the XML counts for VAT if it differs from the PDF (BMF FAQ). WBS runs the small Azure Function that renders the file, in Germany (Azure region Germany West Central, Frankfurt) under a data processing agreement. It has read-only access to invoices, orders, customers, products and the accelerator’s settings in your environment. You send the file yourself; the accelerator doesn’t connect to Peppol or to public-sector portals.
  • Checks. Before a file is created, the invoice data is checked against the EN 16931 rules, and for an XRechnung also against the XRechnung rules. If a check fails, no file is created. A Check e-invoice button on the invoice form runs the same checks and shows the result without storing a file. In our testing the XRechnung output passed the KoSIT validator and the ZUGFeRD PDF passed veraPDF PDF/A-3b checks.
  • Record keeping. Project Operations makes a confirmed invoice read-only, and the accelerator also blocks deleting an issued invoice, as GoBD-style record keeping expects (GoBD: the German rules for digital bookkeeping). Each e-invoice file is stored as a note on its invoice, together with an issue record (number, format, time, user and a SHA-256 hash of the file). The accelerator blocks deleting either one, and it blocks changes to the issue record and to the stored file.

For day-to-day work, the accelerator comes with an invoice editor and an invoice overview, both inside its model-driven app, WBS Invoice Accelerator. The editor shows the invoice laid out the way your customer will get it, with the Project Operations transactions behind each line. Logo, colours, legal name, VAT ID and bank details come from a brand profile, and you can keep one profile per brand or company you bill under. Invoices in a foreign currency show the exchange rate and the total in your base currency, and the document prints in German or English, for customers in Germany and abroad. Your accounting system then books the finished invoices.

The same product also works on Dynamics 365 Sales invoices, such as one created from an order, with the same numbering and VAT (see ZUGFeRD and XRechnung from Dynamics 365 Sales).

Confirmation and corrections stay with Project Operations

The accelerator works on the Project Operations invoice in the same Dataverse environment. The invoice isn’t synced to a second system and back, and billed and unbilled actuals come from Microsoft’s own confirmation and correction. Microsoft notes that “General ledger integration systems can use this reversal to reverse project work in progress (WIP) for accounting purposes” (Microsoft Learn, Proforma project invoices), and those reversals are created as usual. Because confirmation and correction stay with Microsoft, their updates reach your invoices too.

E-invoicing deadlines for Project Operations teams in Germany

The Wachstumschancengesetz of March 2024 changed the invoicing rules in § 14 UStG. The dates, from § 27 Abs. 38 UStG and the BMF FAQ:

  • Since 1 January 2025. Every domestic business must be able to receive e-invoices, with no transition period. An email inbox is enough.
  • Until 31 December 2026. Invoices for supplies made in 2025 and 2026 that are issued by 31 December 2026 can still go out on paper, or as a PDF if the recipient agrees.
  • From 1 January 2027. Domestic B2B invoices for supplies made in 2025 or 2026 have to be e-invoices, whatever your turnover. For supplies made in 2027, the same applies to businesses with more than €800,000 total turnover in the previous year. Smaller businesses can keep using paper, or PDF with consent, for 2027 supplies if the invoice is issued by 31 December 2027. EDI outside EN 16931 stays allowed with consent until the end of 2027.
  • From 1 January 2028. Every domestic B2B invoice has to be an e-invoice, apart from exceptions such as invoices up to €250 gross, invoices from small businesses under the Kleinunternehmer rule and many VAT-exempt supplies.

The issue date counts too. A time-and-material invoice schedule cuts off transactions the day before the run date (Microsoft Learn, Create invoice schedules on a project contract line), so a run on 1 January 2027 bills December 2026 work. By the wording of § 27 Abs. 38 UStG, those invoices already have to be e-invoices, whatever your turnover: paper and PDF for 2025 and 2026 supplies are only allowed until 31 December 2026, and the relief for smaller businesses covers only supplies made in 2027 (Nr. 1 and 2; BMF letter of 15 October 2024, Rn. 63 and 64). The BMF also accepts EDI with the recipient’s consent until the end of 2027, including for 2026 supplies (Rn. 65); § 27 Abs. 38 Nr. 3 UStG itself covers only supplies made in 2027. Domestic means both you and your customer are established in Germany (§ 14 Abs. 2 UStG). A VAT registration alone doesn’t count (BMF FAQ, question 3).

The BMF accepts XRechnung, and ZUGFeRD from version 2.0.1 except the MINIMUM and BASIC-WL profiles. All mandatory details, including the time of supply, must sit in the structured data. A time-sheet breakdown can travel as a PDF attached inside the e-invoice. The accelerator doesn’t add such attachments, so if your customer wants the breakdown, send it alongside. The calendar month is allowed as the time of supply, so a monthly collective invoice works.

Public-sector buyers follow separate rules: suppliers to federal authorities have had to send e-invoices since 27 November 2020 under the E-Rechnungsverordnung, with the buyer’s Leitweg-ID in BT-10, the Buyer reference (E-Rechnung Bund FAQ). The Sales-side view is in our post on e-invoicing from Dynamics 365 Sales.

Where we come in

We’re a Dynamics 365 Project Operations and Field Service partner in Würzburg, and we build the accelerator ourselves. The people who review your contract lines, billing methods and invoice schedules also set up your number sequences and VAT rates. We start in a sandbox copy of your environment and run one real cycle from invoice run to Storno, with the XRechnung output checked in the KoSIT validator before go-live.

If you invoice German customers from Project Operations and want to see your own invoices come out as XRechnung, book a free scoping call. Bring two or three of this month’s invoices and we’ll show you what the accelerator would change.

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