In short
An issued invoice is never changed or deleted. You issue a new document with its own number that refers to the original: a cancellation when the whole invoice no longer applies, a partial cancellation when only lines, quantities or amounts no longer apply, and a correction when details were wrong. Cancellations and corrections of an e-invoice are e-invoices themselves, in the same format.
The principle: never change, always add
Once issued, an invoice is an accounting record. The GoBD require that records are not changed in a way that loses the original content (sec. 146 (4) AO). Besides, your customer already has the invoice and may have booked it.
So you fix mistakes with a new document. It gets its own number, names the number and date of the original (field BG-3, “preceding invoice reference”, in the e-invoice) and reverses its amounts in full or in part.
The terms
| Term | What it is | Typical reason |
|---|---|---|
| Cancellation (Stornorechnung) | Reverses the whole invoice | charged twice, order cancelled |
| Partial cancellation | Reverses single lines, quantities or amounts | an item returned, a price reduction on one line |
| Correction (Rechnungsberichtigung) | Replaces a wrong invoice with a correct one | wrong address, wrong price, missing mandatory detail |
| Gutschrift under German VAT law | The recipient of the supply bills (self-billing) | commissions, revenue shares; not a cancellation |
Don’t call it “Gutschrift”
In everyday German, a cancellation is often called “Gutschrift”. Under VAT law, however, a Gutschrift is something else: a self-billed invoice. So call the document “Stornorechnung” (cancellation invoice). Quittio titles it that way in Germany automatically.
Which document for which case?
| Situation | Document |
|---|---|
| Invoice sent twice | Cancellation |
| Order called off after invoicing | Cancellation |
| Customer returns one of three items | Partial cancellation (quantity); not required for VAT |
| Subsequent discount, early payment discount or reduction for a defect | No correction needed; a partial cancellation (amount) is possible |
| Service differs from what was invoiced, e.g. changed measurements | Correction (at least of the description of the service) |
| Wrong address or missing customer VAT ID | Correction |
| Wrong price, wrong date of supply | Correction |
| Invoice to the wrong customer | Cancellation and a new invoice to the right customer |
If the consideration is reduced after invoicing, for example by an early payment discount, a reduction after a complaint about a defect or the return of an item, no invoice correction is required for VAT. Output and input VAT are then adjusted under sec. 17 UStG (Federal Ministry of Finance letter of 15 October 2025, no. 51a). A partial cancellation is still allowed and often practical for accounting. If the scope of the service changes instead, for example through changed measurements, the invoice must be corrected, at least the description of the service (no. 51b).
Signs and type codes: 380, 381, 384
Every e-invoice carries a type code (BT-3). There are two common ways to represent cancellations and corrections:
| Representation | Type code | Amounts |
|---|---|---|
| Cancellation as credit note (Quittio default) | 381 (credit note) | positive; the direction follows from the type. UBL writes a separate CreditNote document |
| Cancellation as negative invoice | 380 (invoice) | negative |
| Corrected invoice | 384 (corrected invoice) | positive, complete new content |
Both cancellation variants are allowed in Germany. Some receiving systems expect the negative invoice, which is why the strategy is configurable. A cancellation of a credit note (381) is always an invoice (380) with positive amounts.
// config/quittio.php
'corrections' => [
'cancellation_strategy' => null, // credit_note (381) | negative_invoice (380); null = country pack
],
// config/quittio-managed.php
'correction' => [
'strategy' => null, // cancel_and_reissue | corrected_invoice (384); null = country pack
],Cancelling with Quittio open source
Even without Managed, Quittio creates the cancellation document. It is built from the data of the original, in the same format and with a note referring to the original:
// from a rendered result, in the same formats
$cancellation = $result->cancel('ST-2026-0001', reason: 'Charged twice');
// from stored invoice data (e.g. InvoiceData::fromJson())
$cancellation = Quittio::make(
Quittio::cancellation($original, 'ST-2026-0001', reason: 'Charged twice')
)->render();
// as a negative invoice (type code 380)
$cancellation = $result->cancel('ST-2026-0001', reason: 'Charged twice', strategy: 'negative_invoice');With lines: you cancel part of an invoice, by whole lines, quantities or amounts:
$part = $result->cancel('ST-2026-0002', lines: [
['line' => '1', 'quantity' => '1'], // 1 unit of line 1
['line' => '2', 'amount' => '50.00'], // €50.00 of line 2
]);When an invoice is cancelled in several parts, pass the earlier parts as history:. Only then can Quittio align the VAT of all parts with the original (see below). Without Managed, you keep track of numbers and history yourself.
With Quittio Managed
Managed keeps the history itself, assigns the numbers and sets the status of the original. Three methods cover every case:
// full cancellation
$cancellation = $invoice->cancel(reason: 'Charged twice');
// partial cancellation
$cancellation = $invoice->cancelPartially([
['line' => '3'], // whole line or what is left of it
['line' => '1', 'quantity' => 1], // 1 of 3
['line' => '2', 'amount' => '50.00'], // amount, e.g. a price reduction
], reason: 'Partial return');
// correction: a draft with the data of the original
$draft = $invoice->correct();
$draft->updateData(fn (InvoiceBuilder $b) => $b->updateLine('2', netPrice: '80.00'));
$draft->issue();- The original only gets a new status:
partially_cancelledorcancelled. It is never changed. - Every cancellation states in a note which invoice it cancels and why.
- More than was invoiced cannot be cancelled, not even by concurrent processes.
- If issuing fails, no number is used up and the original stays unchanged.
- A cancellation cannot be dated before the original.
For corrections there are two strategies:
| Strategy | How it works |
|---|---|
cancel_and_reissue (default in Germany) | The original is cancelled completely, then the correction is issued as a new invoice. Two numbers are used. |
corrected_invoice | The correction is issued with type code 384 (“Rechnungskorrektur”) and replaces the original, which is marked as cancelled. |
Both steps run in one transaction: either both documents exist or neither does.
VAT on partial cancellations
VAT is rounded per document and rate. If each partial cancellation rounds on its own, all parts together often don’t add up to exactly the VAT of the original. An example with three lines at 19 %:
| Net | VAT rounded per part | VAT aligned cumulatively | |
|---|---|---|---|
| Original | €29.00 | €5.51 | €5.51 |
| Partial cancellation 1 | €9.67 | €1.84 | €1.84 |
| Partial cancellation 2 | €9.67 | €1.84 | €1.83 |
| Partial cancellation 3 | €9.66 | €1.84 | €1.84 |
| Sum of cancellations | €29.00 | €5.52 (1 cent too much) | €5.51 |
So Quittio rounds cumulatively: each partial cancellation carries the VAT due after all cancellations so far, minus what was already cancelled. The last part aligns exactly with the original. A single document deviates by at most one cent, which rule BR-CO-17 of EN 16931 allows; the document says so in a note.
Under review
The defaults for cancellations (381 with positive amounts) and corrections (cancel and reissue), and the one-cent alignment, are currently being reviewed with a tax adviser. Both strategies are configurable.
Cancellations and corrections are e-invoices
If the original was an e-invoice, cancellations and corrections are e-invoices too. The Federal Ministry of Finance letter of 15 October 2025 deals with correcting e-invoices specifically (nos. 51a and 51b). Quittio therefore creates both documents in the same format, profile and language as the original and validates them like any other invoice.