Subitems make it possible to compose a main item on a receipt from multiple parts. A typical example is a menu sold as one item but containing, for example, a burger, fries, and a drink. The parent item has a total price, and the subitems are recorded with their own prices, tax rates, and inventory information.
1. Technical structure and key fields
Parent Item
The parent item is a Position object with Type: 0 (Item). For subitems, the following fields are required:
| Property | Type | Description |
|---|---|---|
| useSubItemVatCalculation | boolean | (Mandatory) Must be set to true so that tax values are derived from the subitems. |
| VatIdentification | integer | (Mandatory) Must be 0 when useSubItemVatCalculation is active. |
| VatPercent | decimal | (Mandatory) Must be 0 when useSubItemVatCalculation is active. |
| subItems | Array<SubItem> | (Mandatory) Contains the subitems with their own price and tax information. |
Note: NetValue, GrossValue and TaxValue of the parent item must equal the sums of the subitems.
Subitems
| Property | Type | Description |
|---|---|---|
| type | string | (Mandatory) Must be "SubItem". |
| Quantity | decimal | (Mandatory) Quantity of the subitem. |
| VatIdentification | integer | (Mandatory) VAT ID of the subitem. |
| VatPercent | decimal | (Mandatory) Tax rate of the subitem. |
| NetValue, TaxValue, GrossValue | decimal | (Mandatory) Price information per subitem. GrossValue = NetValue + TaxValue. |
2. Example: Complete Payload
The following storeDocument request contains a parent item (“Test item 1 (Menu)”) with two subitems:
{
"fiscalDocumentNumber": "2",
"fiscalDocumentStartTime": 1755507048,
"FiscalDocumentRevision": 1,
"ModelVersion": "1.4.0",
"UniqueClientId": "8ccedd62-9f72-4cda-b101-7e5e62fb37dc",
"AutomaticVatCalculation": 1,
"DocumentGuid": "08679cec-0df2-4ee0-a138-7ddf55ed2372",
"DocumentId": "08679cec-0df2-4ee0-a138-7ddf55ed2372",
"documentNumber": "08679cec-0df2-4ee0-a138-7ddf55ed2372",
"AllowedVatDeviation": 0.01,
"isTraining": true,
"CreateDate": "2025-08-18T08:52:37Z",
"BookDate": "2025-08-18T08:52:37Z",
"DocumentType": 0,
"positionCount": 2,
"User": {
"Id": "test",
"Caption": "test"
},
"Positions": [
{
"PositionNumber": 0,
"ItemCaption": "Testartikel 1 (Menü)",
"Type": 0,
"InHouse": false,
"Quantity": 1,
"ItemId": "Artikel1",
"VatIdentification": 0,
"VatPercent": 0,
"BusinessTransactionType": 0,
"BaseNetValue": 0.84,
"BaseGrossValue": 1,
"BaseTaxValue": 0.16,
"Discounts": [],
"NetValue": 0.84,
"GrossValue": 1,
"TaxValue": 0.16,
"useSubItemVatCalculation": true,
"subItems": [
{
"type": "SubItem",
"positionNumber": 1,
"ItemCaption": "Unterposition 1.1",
"ItemId": "SubArtikel1-1",
"Quantity": 1,
"VatIdentification": "1",
"VatPercent": 19,
"BusinessTransactionType": 0,
"NetValue": 0.50,
"GrossValue": 0.60,
"TaxValue": 0.10
},
{
"type": "SubItem",
"positionNumber": 2,
"ItemCaption": "Unterposition 1.2",
"ItemId": "SubArtikel1-2",
"Quantity": 1,
"VatIdentification": "1",
"VatPercent": 19,
"BusinessTransactionType": 0,
"NetValue": 0.34,
"GrossValue": 0.40,
"TaxValue": 0.06
}
]
},
{
"PositionNumber": 1,
"ItemCaption": "Testartikel 2",
"Type": 0,
"InHouse": false,
"Quantity": 1,
"ItemId": "Artikel2",
"VatIdentification": "1",
"VatPercent": 19,
"BusinessTransactionType": 0,
"BaseNetValue": 0.84,
"BaseGrossValue": 1,
"BaseTaxValue": 0.16,
"Discounts": [],
"NetValue": 0.84,
"GrossValue": 1,
"TaxValue": 0.16
}
],
"Payments": [
{
"Amount": 2,
"CurrencyIsoCode": "EUR",
"paymentType": "cash",
"caption": "Barzahlung",
"uniqueReadablePaymentIdentifier": "CASH/EUR",
"ExternalIdentifier": []
}
]
}
3. Checklist
✓ Parent item contains "subItems".
✓ "useSubItemVatCalculation": true is set.
✓ VatIdentification and VatPercent of the parent item are 0.
✓ Each subitem has "type": "SubItem".
✓ Subitems have their own tax and price information.
✓ Totals of the subitems match the values of the parent item.
Comments
0 comments
Please sign in to leave a comment.