---
title: "LineCalculator – API-Referenz · Quittio"
description: "Calculates the invoice line net amount (BT-131):"
canonical_url: "https://quittio.dev/docs/api/Quittio/Core/Calculation/LineCalculator"
locale: de
meta:
  "og:description": "Calculates the invoice line net amount (BT-131):"
  "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": "LineCalculator – 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) \\ [Calculation](https://quittio.dev/docs/api/Quittio/Core/Calculation)

# LineCalculator

final class in quittio/core

`Quittio\Core\Calculation\LineCalculator` · [Source](https://github.com/Quittio/quittio/blob/v0.7.1/packages/core/src/Calculation/LineCalculator.php#L24)

Calculates the invoice line net amount (BT-131):

net price BT-146 = BT-148 − BT-147 (if list price and discount are given) base amount B = round2(BT-129 × BT-146 / (BT-149 ?: 1)) allowance A\_i = BT-136 or round2((BT-137 ?: B) × BT-138 / 100) charge C\_i = BT-141 or round2((BT-142 ?: B) × BT-143 / 100) line amount BT-131 = B − Σ A\_i + Σ C\_i

## Methods \#

| Method | Description |
| --- | --- |
| `::baseAmount()` | |
| `->calculate()` | |
| `::exactAmount()` | Unrounded line amount as PEPPOL-EN16931-R120 checks it: quantity × (net price / base quantity) + line charges − line allowances (BT-129, BT-146, BT-149, BT-141, BT-136). Null without net price (BT-146). |
| `::priceFor()` | Smallest-precision net price (2 to 10 decimals) for which the line formula yields exactly $amount. |

### `baseAmount()`#

```
public static function baseAmount(
    BigDecimal $quantity,
    BigDecimal $netPrice,
    ?BigDecimal $baseQuantity,
): BigDecimal
```

static

| Parameter | Type | Description |
| --- | --- | --- |
| `$quantity` | `Brick\Math\BigDecimal` | |
| `$netPrice` | `Brick\Math\BigDecimal` | |
| `$baseQuantity` | `?Brick\Math\BigDecimal` | |

<dl><dt>Returns</dt>
<dd><code>Brick\Math\BigDecimal</code></dd>
</dl>

### `calculate()`#

```
public function calculate(InvoiceLine $line, string $currency): InvoiceLine
```

| Parameter | Type | Description |
| --- | --- | --- |
| `$line` | `[InvoiceLine](https://quittio.dev/docs/api/Quittio/Core/Data/Lines/InvoiceLine)` | |
| `$currency` | `string` | |

<dl><dt>Returns</dt>
<dd><code><a href="https://quittio.dev/docs/api/Quittio/Core/Data/Lines/InvoiceLine">InvoiceLine</a></code></dd>
</dl>

### `exactAmount()`#

```
public static function exactAmount(InvoiceLine $line): ?BigDecimal
```

static

Unrounded line amount as PEPPOL-EN16931-R120 checks it: quantity × (net price / base quantity) + line charges − line allowances (BT-129, BT-146, BT-149, BT-141, BT-136). Null without net price (BT-146).

| Parameter | Type | Description |
| --- | --- | --- |
| `$line` | `[InvoiceLine](https://quittio.dev/docs/api/Quittio/Core/Data/Lines/InvoiceLine)` | |

<dl><dt>Returns</dt>
<dd><code>?Brick\Math\BigDecimal</code></dd>
</dl>

### `priceFor()`#

```
public static function priceFor(
    BigDecimal $amount,
    BigDecimal $quantity,
    ?BigDecimal $baseQuantity,
): BigDecimal
```

static

Smallest-precision net price (2 to 10 decimals) for which the line formula yields exactly $amount.

| Parameter | Type | Description |
| --- | --- | --- |
| `$amount` | `Brick\Math\BigDecimal` | |
| `$quantity` | `Brick\Math\BigDecimal` | |
| `$baseQuantity` | `?Brick\Math\BigDecimal` | |

<dl><dt>Returns</dt>
<dd><code>Brick\Math\BigDecimal</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/Calculation/LineCalculator#webpage","@type":"WebPage","description":"Calculates the invoice line net amount (BT-131):","name":"LineCalculator – API-Referenz","url":"https://quittio.dev/docs/api/Quittio/Core/Calculation/LineCalculator","isPartOf":{"@id":"https://quittio.dev/#website"},"potentialAction":[{"@type":"ReadAction","target":["https://quittio.dev/docs/api/Quittio/Core/Calculation/LineCalculator"]}],"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"}]}
```