---
title: "BuildsAllowancesAndCharges – API-Referenz · Quittio"
description: "Document level allowances and charges (BG-20, BG-21) and discounts split over the VAT rates."
canonical_url: "https://quittio.dev/docs/api/Quittio/Core/Builder/Concerns/BuildsAllowancesAndCharges"
locale: de
meta:
  "og:description": "Document level allowances and charges (BG-20, BG-21) and discounts split over the VAT rates."
  "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": "BuildsAllowancesAndCharges – 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) \\ [Core](https://quittio.dev/docs/api/Quittio/Core) \\ [Builder](https://quittio.dev/docs/api/Quittio/Core/Builder) \\ [Concerns](https://quittio.dev/docs/api/Quittio/Core/Builder/Concerns)

# BuildsAllowancesAndCharges

trait in quittio/core

`Quittio\Core\Builder\Concerns\BuildsAllowancesAndCharges` · [Source](https://github.com/Quittio/quittio/blob/v0.7.1/packages/core/src/Builder/Concerns/BuildsAllowancesAndCharges.php#L22)

Document level allowances and charges (BG-20, BG-21) and discounts split over the VAT rates.

Part of `InvoiceBuilder`, which holds the state; use the builder, not the trait.

## Methods \#

| Method | Description |
| --- | --- |
| `->allowance()` | Document level allowance (BG-20) for one VAT category and rate. |
| `->charge()` | Document level charge (BG-21) for one VAT category and rate. See allowance() for the exemption reason. |
| `->discountAmount()` | Absolute discount distributed over all VAT groups in proportion to their line totals. |
| `->discountPercent()` | Percentage discount on all lines. Split into one allowance per VAT group. |

### `allowance()`#

```
public function allowance(
    VatCategory $category,
    BigDecimal|int|float|string|null $rate,
    ?string $amount = null,
    ?string $percent = null,
    ?string $reason = null,
    AllowanceReasonCode|RawCode|string|null $reasonCode = null,
    ?string $baseAmount = null,
    ?string $exemptionReason = null,
    VatExemptionReasonCode|RawCode|string|null $exemptionReasonCode = null,
): static
```

Document level allowance (BG-20) for one VAT category and rate.

The exemption reason (BT-120/BT-121) is used for the VAT breakdown when no invoice line of the same VAT group provides one, e.g. an exempt charge on a standard rated invoice.

| Parameter | Type | Description |
| --- | --- | --- |
| `$category` | `[VatCategory](https://quittio.dev/docs/api/Quittio/Core/Enums/VatCategory)` | |
| `$rate` | `Brick\Math\BigDecimal\|int\|float\|string\|null` | |
| `$amount` | `?string` = `null` | |
| `$percent` | `?string` = `null` | |
| `$reason` | `?string` = `null` | |
| `$reasonCode` | `[AllowanceReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/AllowanceReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `null` | |
| `$baseAmount` | `?string` = `null` | |
| `$exemptionReason` | `?string` = `null` | |
| `$exemptionReasonCode` | `[VatExemptionReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/VatExemptionReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `null` | |

<dl><dt>Returns</dt>
<dd><code>static</code></dd>
</dl>

### `charge()`#

```
public function charge(
    VatCategory $category,
    BigDecimal|int|float|string|null $rate,
    ?string $amount = null,
    ?string $percent = null,
    ?string $reason = null,
    ChargeReasonCode|RawCode|string|null $reasonCode = null,
    ?string $baseAmount = null,
    ?string $exemptionReason = null,
    VatExemptionReasonCode|RawCode|string|null $exemptionReasonCode = null,
): static
```

Document level charge (BG-21) for one VAT category and rate. See allowance() for the exemption reason.

| Parameter | Type | Description |
| --- | --- | --- |
| `$category` | `[VatCategory](https://quittio.dev/docs/api/Quittio/Core/Enums/VatCategory)` | |
| `$rate` | `Brick\Math\BigDecimal\|int\|float\|string\|null` | |
| `$amount` | `?string` = `null` | |
| `$percent` | `?string` = `null` | |
| `$reason` | `?string` = `null` | |
| `$reasonCode` | `[ChargeReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/ChargeReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `null` | |
| `$baseAmount` | `?string` = `null` | |
| `$exemptionReason` | `?string` = `null` | |
| `$exemptionReasonCode` | `[VatExemptionReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/VatExemptionReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `null` | |

<dl><dt>Returns</dt>
<dd><code>static</code></dd>
</dl>

### `discountAmount()`#

```
public function discountAmount(
    BigDecimal|int|float|string $amount,
    ?string $reason = null,
    AllowanceReasonCode|RawCode|string|null $reasonCode = \Quittio\Core\Enums\AllowanceReasonCode::Discount,
): static
```

Absolute discount distributed over all VAT groups in proportion to their line totals.

| Parameter | Type | Description |
| --- | --- | --- |
| `$amount` | `Brick\Math\BigDecimal\|int\|float\|string` | |
| `$reason` | `?string` = `null` | |
| `$reasonCode` | `[AllowanceReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/AllowanceReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `\Quittio\Core\Enums\AllowanceReasonCode::Discount` | |

<dl><dt>Returns</dt>
<dd><code>static</code></dd>
</dl>

### `discountPercent()`#

```
public function discountPercent(
    BigDecimal|int|float|string $percent,
    ?string $reason = null,
    AllowanceReasonCode|RawCode|string|null $reasonCode = \Quittio\Core\Enums\AllowanceReasonCode::Discount,
): static
```

Percentage discount on all lines. Split into one allowance per VAT group.

| Parameter | Type | Description |
| --- | --- | --- |
| `$percent` | `Brick\Math\BigDecimal\|int\|float\|string` | |
| `$reason` | `?string` = `null` | |
| `$reasonCode` | `[AllowanceReasonCode](https://quittio.dev/docs/api/Quittio/Core/Enums/AllowanceReasonCode)\| [RawCode](https://quittio.dev/docs/api/Quittio/Core/Codes/RawCode)\|string\|null` = `\Quittio\Core\Enums\AllowanceReasonCode::Discount` | |

<dl><dt>Returns</dt>
<dd><code>static</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/Core/Builder/Concerns/BuildsAllowancesAndCharges#webpage","@type":"WebPage","description":"Document level allowances and charges (BG-20, BG-21) and discounts split over the VAT rates.","name":"BuildsAllowancesAndCharges – API-Referenz","url":"https://quittio.dev/docs/api/Quittio/Core/Builder/Concerns/BuildsAllowancesAndCharges","isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/docs/api/Quittio/Core/Builder/Concerns/BuildsAllowancesAndCharges"]}],"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"}]}
```