# BR-27: Fix a negative item net price by moving the sign to the quantity

The item net price on a line is below zero. Prices must be zero or positive: express a credit or correction with a negative quantity.

- Layer: EN 16931
- Severity: fatal (the document is invalid)
- Topics: Lines and prices
- Official definition: https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-27/
- Explanation last updated: 2026-09-20

## The short answer

`BR-27` fails when `cac:Price/cbc:PriceAmount` on a line is less than zero. A price says what one unit costs, and that is never negative. When a line takes money off the document, such as a return, a correction or a reversal, keep the price positive and make the quantity negative.

The line net amount does not change. In the recorded example the line is worth -2.00 either way; what the rule objects to is reaching it as 1 at a price of -2 when it should be -1 at a price of 2.

## What the rule checks

For each `cac:InvoiceLine` or `cac:CreditNoteLine`, the rule reads `cac:Price/cbc:PriceAmount` and requires it to be greater than or equal to zero. It looks at nothing else on the line: not the quantity, not the line net amount.

A price of zero passes. A fully consistent invoice with a price of 0 and a line net amount of 0.00 validates cleanly.

A negative quantity and a negative line net amount are both allowed by this rule. The corrected example has exactly that.

Write zero without a sign. When tried, a price of `-0.00` was reported by this rule.

A line with no `cbc:PriceAmount` at all also reports `BR-27`, alongside `BR-26`, the rule that requires the price. Supplying the price clears both.

| Term | Meaning | UBL element |
|---|---|---|
| BT-146 | Item net price | `cac:InvoiceLine/cac:Price/cbc:PriceAmount` |
| BT-146 | Item net price (credit note) | `cac:CreditNoteLine/cac:Price/cbc:PriceAmount` |

## How an integration ends up here

Possible causes, from the shape of the rule rather than from measured usage:

- The source system stores a credit or correction line as quantity 1 with a negative unit price, and the mapping copies both fields as they are.
- The price is derived by dividing the line amount by an absolute quantity, so the sign of the amount ends up on the price.
- A discount is modelled as its own line with a negative price, where an allowance on the line or the document would describe it better.
- A sign flip meant for credit notes is applied to every numeric field on the line, the price included.

## How to fix it

1. Find the line from the finding location and look at `cac:Price/cbc:PriceAmount`.
2. Make the price positive and put the sign on `cbc:InvoicedQuantity` (or `cbc:CreditedQuantity`): quantity 1 at -2 becomes quantity -1 at 2.
3. Leave `cbc:LineExtensionAmount` as it was. Quantity times price is the same figure, so the line net amount and every total built from it stay put.
4. If the line is really a discount on other goods and not a quantity of something being reversed, consider sending it as an allowance on the line or the document instead. That is a modelling decision about the transaction, not something this rule forces.
5. Do not switch the document to a credit note just to avoid the negative line. An invoice may carry a negative line, as the corrected example shows.

## Before and after

These are fragments, not complete documents. The complete synthetic documents they come from are linked below.

Fragment of the failing invoice: line 3 is quantity 1 at a net price of -2

```xml
<cac:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <!-- tax category omitted from this fragment -->
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">-2</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>
```

Fragment of the corrected invoice: the same line as quantity -1 at a net price of 2

```xml
<cac:InvoiceLine>
  <cbc:ID>3</cbc:ID>
  <cbc:InvoicedQuantity unitCode="C62">-1</cbc:InvoicedQuantity>
  <cbc:LineExtensionAmount currencyID="GBP">-2.00</cbc:LineExtensionAmount>
  <cac:Item>
    <cbc:Name>Example correction</cbc:Name>
    <!-- tax category omitted from this fragment -->
  </cac:Item>
  <cac:Price>
    <cbc:PriceAmount currencyID="GBP">2</cbc:PriceAmount>
    <cbc:BaseQuantity unitCode="C62">1</cbc:BaseQuantity>
  </cac:Price>
</cac:InvoiceLine>
```

Two values differ on line 3: `cbc:InvoicedQuantity` goes from 1 to -1 and `cbc:PriceAmount` from -2 to 2. The line net amount is -2.00 in both. The failing document reports only `BR-27`. The Peppol layer passes, because its line calculation check, `PEPPOL-EN16931-R120`, still finds that 1 times -2 equals -2.00.

### What the validator reported

- The failing invoice reports **BR-27**. The corrected document passes every layer with no findings.
  - [Download the failing XML](https://ironfang.uk/finance/rule-examples/BR-27-invalid.xml)
  - [Download the corrected XML](https://ironfang.uk/finance/rule-examples/invoice-rich.xml)

Recorded on phive 12.1.0 / phive-rules-peppol 4.5.6 / Saxon-HE 12.10, the engine behind the free validator, using synthetic data. A recorded result is regression evidence for these documents; it is not a certification.

## Where it applies

- Applies to `cac:InvoiceLine` in an `Invoice` and `cac:CreditNoteLine` in a `CreditNote`. A negative price on a credit note line was reported in the same way.
- A credit note does not need negative figures to mean a credit. The credit note fixtures carry positive quantities, prices and amounts and validate cleanly; a correction inside a credit note uses a negative quantity in the same way as on an invoice.
- The rule covers the net price only. The gross price, `cac:Price/cac:AllowanceCharge/cbc:BaseAmount`, has its own rule, `BR-28`, which was reported when a negative gross price was tried.
- When the negative price also disagrees with the line net amount, the document reports `PEPPOL-EN16931-R120` as well as `BR-27`. That happened when only the price was made negative, and when both the price and the quantity were negative against a negative line net amount.

## Related rules

- [PEPPOL-EN16931-R120 checks that the line net amount equals quantity times price, less allowances plus charges](https://ironfang.uk/docs/finance/rules/PEPPOL-EN16931-R120.md)
- [PEPPOL-EN16931-R046 checks the net price against the gross price and its discount](https://ironfang.uk/docs/finance/rules/PEPPOL-EN16931-R046.md)
- [BR-CO-10 checks the sum of the line net amounts, negative lines included](https://ironfang.uk/docs/finance/rules/BR-CO-10.md)

## Scope and source

Written for Peppol BIS Billing 3.0.21 (May 2026), EN 16931 1.3.16, as applied to UBL 2.1 Invoice and CreditNote documents. Other profiles, syntaxes and releases can define this identifier differently. Guidance version 2026-09-24.1: source checked 2026-09-24, explanation last updated 2026-09-20.

[The official definition of BR-27](https://docs.peppol.eu/poacc/billing/3.0/rules/ubl-tc434/BR-27/) carries the normative wording and test. This page is our explanation of it, not a copy.

Guidance does not change the engine verdict. Fixing this finding does not mean the document passes every layer, and validation does not certify legal or tax compliance or transmit a document over Peppol.

## Links

- [This rule as a web page](https://ironfang.uk/docs/finance/rules/BR-27)
- [Free Peppol invoice validator](https://ironfang.uk/tools/peppol-validator)
- [Rule index](https://ironfang.uk/docs/finance/rules.md)
- [Ironfang Finance API docs](https://ironfang.uk/docs/finance)
- The same rule is available to MCP clients as the tool `finance.rule.get` on https://mcp.ironfang.uk/mcp
