Overview
TheLineItem 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: nullQuantity and unit
number
Quantity of items, with a maximum of 4 decimals. It can be negative for credit notes or corrections.Example:
10, 2.5enum
Unit code of the unit of measure (UN/ECE Recommendation 20).Common values:
C62- Units or pieces (most common)HUR- HoursDAY- DaysMTR- MetresKGM- KilogramsLTR- LitresMTK- Square metresMTQ- Cubic metresKWH- Kilowatt hours
"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.0125price_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.00Tax
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 rate6.00- Reduced rate0.00- Zero-rated
21.00number
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:
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
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
- Base amount:
quantity × unit_price - Subtract the line-level allowances.
- Add the line-level charges.
- Line amount:
base - allowances + charges, rounded half-up to 2 decimals. This is the value ofamount. - Tax:
amount × (tax_rate / 100)
- Base: 20 × 100.00 = 2000.00
- Allowance: 200.00
- Charge: 50.00
- Amount: 1850.00
- 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
Write a specific description
Write a specific description
A specific description tells the customer what the line is for.Recommended:Not recommended:
Use the applicable unit
Use the applicable unit
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)
Send the tax rate as a number
Send the tax rate as a number
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:Stay within the decimal limits
Stay within the decimal limits
- 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.