---
title: "GermanInvoice – API-Referenz · Quittio"
description: "German special cases of an invoice, reached with the builder macro de():"
canonical_url: "https://quittio.dev/docs/api/Quittio/Country/DE/Builder/GermanInvoice"
locale: de
meta:
  "og:description": "German special cases of an invoice, reached with the builder macro de():"
  "og:image": "https://quittio.dev/og/quittio-de.jpg"
  "og:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
  "og:image:height": "630"
  "og:image:type": image/jpeg
  "og:image:width": "1200"
  "og:title": "GermanInvoice – API-Referenz · Quittio"
  "twitter:image": "https://quittio.dev/og/quittio-de.jpg"
  "twitter:image:alt": "Quittio: E-Rechnungen für PHP und Laravel. Rechtssicher, validiert, archiviert, mit geprüfter Beispielrechnung."
---

> Index of every page on this site: [llms.txt](https://quittio.dev/llms.txt)

[API reference](https://quittio.dev/docs/api) / [Quittio](https://quittio.dev/docs/api/Quittio) \\ [Country](https://quittio.dev/docs/api/Quittio/Country) \\ [DE](https://quittio.dev/docs/api/Quittio/Country/DE) \\ [Builder](https://quittio.dev/docs/api/Quittio/Country/DE/Builder)

# GermanInvoice

final readonly class in quittio/country-de

`Quittio\Country\DE\Builder\GermanInvoice` · [Source](https://github.com/Quittio/quittio/blob/v0.7.1/packages/country-de/src/Builder/GermanInvoice.php#L42)

German special cases of an invoice, reached with the builder macro de():

InvoiceBuilder::make()->de()->smallAmount()->number(…) Quittio::invoice()->de()->deductAdvance($advanceInvoice)->…

Every method returns the builder, so the chain continues there. The $locale of the notes selects their language; locales without a text of the pack get the German text.

## Constants \#

| Constant | Value | Description |
| --- | --- | --- |
| `ADVANCE_TYPES` | `[\Quittio\Core\Enums\InvoiceTypeCode::CommercialInvoice, \Quittio\Core\Enums\InvoiceTypeCode::PrepaymentInvoice, \Quittio\Core\Enums\InvoiceTypeCode::PartialInv …` | Type codes of documents that can be deducted as advance invoices: invoices that request a payment, not credit notes, debit notes, corrected invoices or final invoices. |
| `PREPAID` | `'prepaid'` | deductAdvance(): the advance payment reduces the amount due (BT-113). |
| `RECEIVED_IN_FULL` | `'full'` | deductAdvance(): the advance invoice was paid in full. |
| `REMAINDER` | `'remainder'` | deductAdvance(): a negative line per VAT rate, the invoice shows the VAT of the remainder. |

## Methods \#

| Method | Description |
| --- | --- |
| `->__construct()` | |
| `->advance()` | Prepayment invoice (type code 386): the note "Anzahlungsrechnung. Die Leistung wird voraussichtlich am … / im … erbracht." with the expected date or, as "2027-03", month of the service (section 14.8 (4) sentence 3 UStAE). Without one, the note that the date is not agreed yet (serviceDateOpen()). A payment already received is stated with its date: the note "Die Anzahlung wurde am … vereinnahmt." and the VAT point date BT-7, to which the mapping table of KoSIT and FeRD assigns the date of receipt (section 14 (4) sentence 1 no. 6 UStG). |
| `->consumerDefaultNotice()` | Notice that a consumer is in default 30 days after the due date (section 286 (3) BGB). |
| `->deductAdvance()` | Final invoice (section 14 (5) sentence 2 UStG) that deducts an advance invoice with the net amounts and VAT received per rate. Only advance payments actually received are deducted: |
| `->discountAgreement()` | Reference to an agreed reduction of the consideration whose amount is not known when the invoice is issued, e.g. a bonus or rebate agreement (section 14 (4) no. 7 UStG): the note LegalTexts::DISCOUNT\_AGREEMENT naming $agreement, e.g. "der Bonusvereinbarung vom 01.01.2026". Naming the agreement is enough if its documents can be shown at short notice (section 14.5 (19) UStAE). A cash discount (Skonto) is stated in the payment terms instead. |
| `->newVehicle()` | Intra-community supply of a new vehicle (section 14a (4) UStG): the vehicle details are the line attributes (DE-USTG-07), the lines use VatPreset::IntraCommunitySupply (DE-USTG-13). |
| `->propertyRelatedService()` | Service in connection with a property to a non-business buyer, with the retention note (section 14 (4) no. 9 UStG). |
| `->selfBilled()` | Self-billed invoice (type code 389) with the note "Gutschrift" (section 14 (4) no. 10 UStG). Self-billing must be agreed with the supplier beforehand (section 14 (2) sentence 2 UStG); Quittio cannot check the agreement, which is not stated on the document. |
| `->serviceDateOpen()` | Prepayment invoice whose date of the service is not agreed yet: the note LegalTexts::SERVICE\_DATE\_OPEN, and DE-USTG-03 does not warn about the missing date (section 14.8 (4) sentence 5 UStAE). |
| `->smallAmount()` | Small amount invoice of at most 250 EUR gross (section 33 UStDV; the limit of the supply date). |
| `->smallBusinessId()` | Invoice of a small business that states its small business identification number (Kleinunternehmer-Identifikationsnummer, suffix "EX") instead of the tax number (section 34a sentence 1 no. 2 UStDV). The number is no VAT identifier: it goes to the seller's tax registration (BT-32), not to BT-31. Sets the small business flag. |
| `->ticket()` | Ticket for the carriage of passengers (section 34 UStDV): it may always be issued as other invoice, DE-EINVOICE-01 and -02 do not apply. |

### `__construct()`#

```
public function __construct(TBuilder $builder)
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$builder` | `Quittio\Country\DE\Builder\TBuilder` | |

### `advance()`#

```
public function advance(
    Date|DateTimeInterface|string|null $expectedService,
    Date|DateTimeInterface|string|null $receivedOn = null,
    string $locale = 'de',
): TBuilder
```

Prepayment invoice (type code 386): the note "Anzahlungsrechnung. Die Leistung wird voraussichtlich am … / im … erbracht." with the expected date or, as "2027-03", month of the service (section 14.8 (4) sentence 3 UStAE). Without one, the note that the date is not agreed yet (serviceDateOpen()). A payment already received is stated with its date: the note "Die Anzahlung wurde am … vereinnahmt." and the VAT point date BT-7, to which the mapping table of KoSIT and FeRD assigns the date of receipt (section 14 (4) sentence 1 no. 6 UStG).

| Parameter | Type | Description |
| --- | --- | --- |
| `$expectedService` | `[Date](https://quittio.dev/docs/api/Quittio/Core/Support/Date)\|DateTimeInterface\|string\|null` | |
| `$receivedOn` | `[Date](https://quittio.dev/docs/api/Quittio/Core/Support/Date)\|DateTimeInterface\|string\|null` = `null` | |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `consumerDefaultNotice()`#

```
public function consumerDefaultNotice(string $locale = 'de'): TBuilder
```

Notice that a consumer is in default 30 days after the due date (section 286 (3) BGB).

| Parameter | Type | Description |
| --- | --- | --- |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `deductAdvance()`#

```
public function deductAdvance(
    InvoiceData $advance,
    string $locale = 'de',
    Money|BigDecimal|int|string|null $received = null,
    string $style = self::PREPAID,
): TBuilder
```

Final invoice (section 14 (5) sentence 2 UStG) that deducts an advance invoice with the net amounts and VAT received per rate. Only advance payments actually received are deducted:

- $received: the amount received (gross). Less than the advance invoice: net amount and VAT are taken out of it in proportion to the VAT rows of the advance invoice (section 14.8 (5) UStAE). RECEIVED\_IN\_FULL (or the full amount) deducts the advance invoice as it is. Null deducts it in full as well, but sets the flag de.advance\_receipt\_unconfirmed, and DE-USTG-20 asks to confirm the receipt: an advance not paid must not be deducted, one paid in part only with that part (section 14.8 (2) and (10) UStAE).
- $style: PREPAID invoices the full service with its full VAT, and the advance payment reduces the amount due (BT-113), referenced (BG-3) and itemised (BT-22, section 14.8 (7) UStAE; BMF letter of 15 October 2026, marginal no. 3, until 30 June 2030). REMAINDER adds a negative line per VAT rate with the net amount received, so the invoice states only the VAT of the remainder (remainder invoice, section 14.8 (11) UStAE); easier for the buyer's system, but not covered by an e-invoice specific statement of the BMF.

| Parameter | Type | Description |
| --- | --- | --- |
| `$advance` | `[InvoiceData](https://quittio.dev/docs/api/Quittio/Core/Data/InvoiceData)` | |
| `$locale` | `string` = `'de'` | |
| `$received` | `Brick\Money\Money\|Brick\Math\BigDecimal\|int\|string\|null` = `null` | |
| `$style` | `string` = `self::PREPAID` | self::PREPAID or self::REMAINDER |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
<dt>Throws</dt>
<dd><code><a href="https://quittio.dev/docs/api/Quittio/Core/Exceptions/InvalidArgumentException">InvalidArgumentException</a></code> – for a document that is no advance invoice in the currency of the builder, or a received amount that is not greater than zero or exceeds the advance invoice</dd></dl>

### `discountAgreement()`#

```
public function discountAgreement(string $agreement, string $locale = 'de'): TBuilder
```

Reference to an agreed reduction of the consideration whose amount is not known when the invoice is issued, e.g. a bonus or rebate agreement (section 14 (4) no. 7 UStG): the note LegalTexts::DISCOUNT\_AGREEMENT naming $agreement, e.g. "der Bonusvereinbarung vom 01.01.2026". Naming the agreement is enough if its documents can be shown at short notice (section 14.5 (19) UStAE). A cash discount (Skonto) is stated in the payment terms instead.

| Parameter | Type | Description |
| --- | --- | --- |
| `$agreement` | `string` | |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `newVehicle()`#

```
public function newVehicle(string $locale = 'de'): TBuilder
```

Intra-community supply of a new vehicle (section 14a (4) UStG): the vehicle details are the line attributes (DE-USTG-07), the lines use VatPreset::IntraCommunitySupply (DE-USTG-13).

| Parameter | Type | Description |
| --- | --- | --- |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `propertyRelatedService()`#

```
public function propertyRelatedService(string $locale = 'de'): TBuilder
```

Service in connection with a property to a non-business buyer, with the retention note (section 14 (4) no. 9 UStG).

| Parameter | Type | Description |
| --- | --- | --- |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `selfBilled()`#

```
public function selfBilled(string $locale = 'de'): TBuilder
```

Self-billed invoice (type code 389) with the note "Gutschrift" (section 14 (4) no. 10 UStG). Self-billing must be agreed with the supplier beforehand (section 14 (2) sentence 2 UStG); Quittio cannot check the agreement, which is not stated on the document.

| Parameter | Type | Description |
| --- | --- | --- |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `serviceDateOpen()`#

```
public function serviceDateOpen(string $locale = 'de'): TBuilder
```

Prepayment invoice whose date of the service is not agreed yet: the note LegalTexts::SERVICE\_DATE\_OPEN, and DE-USTG-03 does not warn about the missing date (section 14.8 (4) sentence 5 UStAE).

| Parameter | Type | Description |
| --- | --- | --- |
| `$locale` | `string` = `'de'` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `smallAmount()`#

```
public function smallAmount(): TBuilder
```

Small amount invoice of at most 250 EUR gross (section 33 UStDV; the limit of the supply date).

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

### `smallBusinessId()`#

```
public function smallBusinessId(string $id): TBuilder
```

Invoice of a small business that states its small business identification number (Kleinunternehmer-Identifikationsnummer, suffix "EX") instead of the tax number (section 34a sentence 1 no. 2 UStDV). The number is no VAT identifier: it goes to the seller's tax registration (BT-32), not to BT-31. Sets the small business flag.

| Parameter | Type | Description |
| --- | --- | --- |
| `$id` | `string` | |

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
<dt>Throws</dt>
<dd><code><a href="https://quittio.dev/docs/api/Quittio/Core/Exceptions/InvalidArgumentException">InvalidArgumentException</a></code> – for a number without the suffix "EX"</dd></dl>

### `ticket()`#

```
public function ticket(): TBuilder
```

Ticket for the carriage of passengers (section 34 UStDV): it may always be issued as other invoice, DE-EINVOICE-01 and -02 do not apply.

<dl><dt>Returns</dt>
<dd><code>Quittio\Country\DE\Builder\TBuilder</code></dd>
</dl>

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://quittio.dev/#website","@type":"WebSite","description":"E-Rechnungen für PHP und Laravel: ZUGFeRD, XRechnung und Peppol erstellen, prüfen, lesen und archivieren.","inLanguage":"de-DE","name":"Quittio","url":"https://quittio.dev/","publisher":{"@id":"https://quittio.dev/#identity"},"workTranslation":{"@id":"https://quittio.dev/en#website"}},{"@id":"https://quittio.dev/docs/api/Quittio/Country/DE/Builder/GermanInvoice#webpage","@type":"WebPage","description":"German special cases of an invoice, reached with the builder macro de():","name":"GermanInvoice – API-Referenz","url":"https://quittio.dev/docs/api/Quittio/Country/DE/Builder/GermanInvoice","isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/docs/api/Quittio/Country/DE/Builder/GermanInvoice"]}],"primaryImageOfPage":{"@id":"https://quittio.dev/#logo"}},{"@id":"https://quittio.dev/#identity","@type":"Organization","description":"Open-Source-Bibliothek für E-Rechnungen in PHP und Laravel (ZUGFeRD, XRechnung, Peppol) und Quittio Managed.","email":"kontakt@niklasforst.de","legalName":"Niklas Forst – Softwareentwicklung","name":"Quittio","url":"https://quittio.dev","founder":{"@type":"Person","name":"Niklas Forst","url":"https://quittio.dev/ueber"},"logo":{"@id":"https://quittio.dev/#logo"},"sameAs":["https://github.com/Quittio/quittio","https://packagist.org/packages/quittio/quittio"]},{"@id":"https://quittio.dev/#logo","@type":"ImageObject","caption":"Quittio","contentUrl":"https://quittio.dev/logo.png","inLanguage":"de-DE","url":"https://quittio.dev/logo.png"}]}
```