Skip to content

API reference / Quittio \ Country \ DE \ Builder

GermanInvoice

final readonly class in quittio/country-de

Quittio\Country\DE\Builder\GermanInvoice · Source

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#

ConstantValueDescription
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#

MethodDescription
->__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)
ParameterTypeDescription
$builderQuittio\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).

ParameterTypeDescription
$expectedServiceDate|DateTimeInterface|string|null
$receivedOnDate|DateTimeInterface|string|null = null
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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).

ParameterTypeDescription
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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.
ParameterTypeDescription
$advanceInvoiceData
$localestring = 'de'
$receivedBrick\Money\Money|Brick\Math\BigDecimal|int|string|null = null
$stylestring = self::PREPAIDself::PREPAID or self::REMAINDER
Returns
Quittio\Country\DE\Builder\TBuilder
Throws
InvalidArgumentException – 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

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.

ParameterTypeDescription
$agreementstring
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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).

ParameterTypeDescription
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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).

ParameterTypeDescription
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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.

ParameterTypeDescription
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

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).

ParameterTypeDescription
$localestring = 'de'
Returns
Quittio\Country\DE\Builder\TBuilder

smallAmount()#

public function smallAmount(): TBuilder

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

Returns
Quittio\Country\DE\Builder\TBuilder

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.

ParameterTypeDescription
$idstring
Returns
Quittio\Country\DE\Builder\TBuilder
Throws
InvalidArgumentException – for a number without the suffix "EX"

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.

Returns
Quittio\Country\DE\Builder\TBuilder

The open core packages are MIT licensed. The legal wording of the country packs must be confirmed by a tax adviser.