Skip to main content

TaxPointDate — Fiscal & Stock Movement Date


What is TaxPointDate?

taxPointDate serves a dual purpose: it is the VAT tax point and the effective date of the stock movement for a line.

  • As the VAT tax point it marks the moment the tax obligation arises — that is, when goods are placed at the buyer's disposal or the service is performed. As a general rule, VAT becomes chargeable at that same moment, though it may be brought forward depending on the applicable invoicing rules. This is a legally significant date for fiscal reporting purposes, making it relevant for all fiscal document types regardless of whether stock management is enabled.
  • As the stock movement date it answers the question: "On what date did this item physically enter or leave stock?" — driving stock history (ItemStockOrders), cost price calculations and available-quantity queries whenever XConfig.OnlineStock is active.

In practice these two concepts align: the date the goods moved is the date the tax obligation arises.

Default behaviour

By default taxPointDate follows the document date. It can be set independently per line when the stock movement occurred on a different date — for example when backdating a document or correcting a previous entry.


Field location

taxPointDate is a per-line field sent inside each entry of the items[] array:

{
"documentTypeId": 5,
"items": [
{
"itemKeyId": "ITEM001",
"quantity": 2,
"taxId": 1,
"taxPointDate": "2026-06-10T14:30:00Z"
}
]
}

Each line can carry a different taxPointDate. This is intentional — in a single document, different items may have moved stock on different dates.


Default behaviour when omitted

When taxPointDate is not provided for a line, the system resolves a default automatically:

ScenarioResulting taxPointDate
documentDate provided, past or todayFollows documentDate — stock moves on that date
documentDate not providedCurrent instant (UtcNow)
documentDate is a future dateCapped at current instant (UtcNow) — stock movement is never placed in the future automatically
Future stock movements

The system never assigns a future taxPointDate automatically. If the document date is in the future and no taxPointDate is provided, the field defaults to the current moment.

If you explicitly send a future taxPointDate, it will be respected — but be aware that this means stock movements will be recorded with a future date, which may affect stock availability reports and cost calculations.


Effect on stock

taxPointDate is the temporal key for all stock logic. It affects three areas:

1. ItemStockOrders — historical record

Every stock movement is recorded in ItemStockOrders with the taxPointDate as its timestamp. This is the field that orders the movement history chronologically.

2. LastEntrance / LastExit in ItemStock

After a stock movement is applied, the system updates LastEntrance (for inbound) or LastExit (for outbound) only if the taxPointDate of the new movement is equal to or more recent than the date already recorded.

This means a backdated movement does not overwrite a more recent LastEntrance/LastExit, even though the quantity change is always applied regardless of date.

3. AverageCostPrice

The weighted average cost price is recalculated on every inbound movement. When a movement is backdated and does not update LastEntrance, the cost price update follows the same guard — only the most recent movement's cost price is kept as the current reference.


Composite items

For items that have components (composites), the taxPointDate of the parent line is automatically inherited by all child component lines. You do not need to set taxPointDate on child lines — the system propagates the parent value.


Document conversions

When creating a document from another document — for example a credit note or a debit note referencing an original sale — the API automatically anchors the taxPointDate of each converted line to the original line's movement date.

This ensures that stock history remains consistent.

Priority order (highest to lowest):

  1. taxPointDate set explicitly in the payload for the line — always respected.
  2. taxPointDate of the referenced origin body (originBodyGuid) — used when no explicit value is provided.
  3. UtcNow — fallback for lines without a reference.

So if you need to override the anchored date for a specific converted line, simply send the desired taxPointDate on that line and it will take precedence.


Relationship with documentDate

FieldPurposeAffects stock?
documentDateLegal/fiscal emission date of the document❌ No direct effect
taxPointDate (per line)Effective date of the stock movement✅ Yes — all stock logic

Both can coexist independently:

{
"documentDate": "2026-06-01T00:00:00Z",
"items": [
{
"itemKeyId": "ITEM001",
"quantity": 1,
"taxId": 1,
"taxPointDate": "2026-05-28T10:00:00Z"
}
]
}

In this example the invoice is legally dated June 1st, but the stock movement is recorded on May 28th.


Stock is only updated when onlineStock is enabled

taxPointDate has no effect on ItemStock or ItemStockOrders unless XConfig.OnlineStock is enabled for the database. When disabled, the field is still persisted on the document line but no stock update is performed.


Timezone

All dates in the API — including taxPointDate — are sent and received in UTC. The system transparently converts them to the timezone specified in the X-TimeZone request header before persisting, so values stored in the database are in the caller's local timezone, not UTC.


Summary

AspectBehaviour
Per-line field✅ Each line can have a different date
Optional✅ Defaults to document date or UtcNow if omitted
Future dates⚠️ Allowed if sent explicitly; never assigned automatically
Backdating✅ Supported — quantity change always applied; LastEntrance/LastExit only updated if newer
Composite children✅ Inherit from parent automatically
Conversion from other documents✅ Automatically anchored to origin line's movement date (overridable per line)
Stock effectOnly when XConfig.OnlineStock = true
FormatISO 8601 UTC (2026-06-10T14:30:00Z)


Last Updated: June 25, 2026