Skip to main content

Overview

The LineItem schema defines one line of an invoice or credit note. Each line is a product, a service or a different billable item. You send line items in the items array of the Document schema.
All fields are optional in the schema. For a complete line, send description, quantity, unit, unit_price, amount and tax_rate.

Basic fields

string
Description of the product or service. The API writes it as the item name and the item description in the UBL.Example: "Consulting hours - September 2026"
string
Product code or SKU of the seller. The API writes it to cac:Item/cac:SellersItemIdentification/cbc:ID.Example: "PROD-001"
null
Reserved field. In the current OpenAPI specification this field accepts only null, and the API does not write it to the generated UBL. Do not send a value. For the period of a delivery or service, use service_start_date and service_end_date on the document.Example: null

Quantity and unit

number
Quantity of items, with a maximum of 4 decimals. It can be negative for credit notes or corrections.Example: 10, 2.5
enum
Unit code of the unit of measure (UN/ECE Recommendation 20).Common values:
  • C62 - Units or pieces (most common)
  • HUR - Hours
  • DAY - Days
  • MTR - Metres
  • KGM - Kilograms
  • LTR - Litres
  • MTK - Square metres
  • MTQ - Cubic metres
  • KWH - Kilowatt hours
Example: "HUR"

Pricing

number
Net price of one unit without VAT, with a maximum of 4 decimals. This is the item net price (BT-146), after an item price discount and before line allowances and charges.Example: 100.00, 0.0125
price_base_quantity is not an input field. The price is always the price of one unit: the API writes cac:Price/cbc:BaseQuantity with the value 1 and ignores a price_base_quantity that you send. If your price is for 100 or 1000 units, divide it and send the price of one unit in unit_price (4 decimals are available).
number
Net amount of the line without VAT (BT-131), with a maximum of 2 decimals. Line allowances are subtracted and line charges are added.Calculation: (quantity × unit_price) - allowances + chargesSend this value. The API writes it as the UBL line extension amount and uses it for the document totals. It can be negative for credit notes or corrections.Example: 1000.00

Tax

number
default:"0.00"
VAT rate as a percentage from 0 to 100, with 2 decimals. Send a number. A string such as "21.00" is also accepted for backward compatibility.Common Belgian rates:
  • 21.00 - Standard rate
  • 6.00 - Reduced rate
  • 0.00 - Zero-rated
Example: 21.00
number
VAT amount of the line, with a maximum of 2 decimals.Calculation: amount × (tax_rate / 100)When it is absent, the API calculates it from amount and tax_rate.Example: 210.00 (21% of 1000.00)

Item attributes

array
Properties of the item, such as colour or size (BG-32). The API writes each attribute to cac:Item/cac:AdditionalItemProperty.Example:

Allowances and charges

array
Line-level allowances (discounts) for this item only, for example a bulk discount or a promotion.Example of a 10% allowance:
array
Line-level charges (fees) for this item only, for example special handling or customisation.Example:
See Advanced invoicing for document-level allowances and charges and their effect on the totals.

Examples

Simple line item

  • Amount: 10 × 100.00 = 1000.00
  • Tax: 1000.00 × 21% = 210.00
  • Total with tax: 1210.00

Service line item

  • Amount: 40 hours × 150.00 = 6000.00
  • Tax: 6000.00 × 21% = 1260.00
  • Total with tax: 7260.00

Line item with item attributes

The receiver gets the attributes in the UBL:

Line item with a percentage allowance

  • Base: 100 × 50.00 = 5000.00
  • Allowance: 5000.00 × 10% = 500.00
  • Amount: 4500.00
  • Tax: 4500.00 × 21% = 945.00
  • Total with tax: 5445.00

Line item with a charge

  • Base: 1 × 500.00 = 500.00
  • Charge: 50.00
  • Amount: 550.00
  • Tax: 550.00 × 21% = 115.50
  • Total with tax: 665.50

Lines with different tax rates

  • Line 1: 1000.00 + 210.00 tax (21%) = 1210.00
  • Line 2: 100.00 + 6.00 tax (6%) = 106.00
  • Line 3: 600.00 + 0.00 tax (0%) = 600.00
  • Total with tax: 1916.00

Calculation flow

  1. Base amount: quantity × unit_price
  2. Subtract the line-level allowances.
  3. Add the line-level charges.
  4. Line amount: base - allowances + charges, rounded half-up to 2 decimals. This is the value of amount.
  5. Tax: amount × (tax_rate / 100)
Example with an allowance and a charge:
  1. Base: 20 × 100.00 = 2000.00
  2. Allowance: 200.00
  3. Charge: 50.00
  4. Amount: 1850.00
  5. Tax (21%): 388.50
In the document totals, the API calculates VAT for each tax group (tax category and rate), not for each line. See Normalisation and rounding.

Best practices

A specific description tells the customer what the line is for.Recommended:
Not recommended:
Use the unit that agrees with the item:
  • Products and goods: "C62" (pieces)
  • Services by time: "HUR" (hours) or "DAY" (days)
  • Materials by weight: "KGM" (kilograms)
  • Materials by volume: "LTR" (litres)
tax_rate is a number from 0 to 100. A string is accepted for backward compatibility, but a number with 2 decimals is preferred.Preferred:
Also accepted:
  • Unit prices: a maximum of 4 decimals
  • Quantities: a maximum of 4 decimals
  • Amounts and tax rates: 2 decimals

Next Steps

Document

Look up the document fields and their conversion to UBL.

Advanced invoicing

Apply allowances and charges on the line and on the document.

Invoice totals and calculations

Calculate the totals from the line amounts.

Create e-invoices

Create and send an invoice with line items.