VAT treatment (lightweight master)

VAT treatment (lightweight master)

VAT handling needs more than a percentage to be deterministic. Bookkeeping and VAT reporting require enough structured VAT metadata that “0%” and other edge cases are still explainable, reviewable, and exportable without relying on free-text descriptions.

This VAT treatment master is intentionally lightweight. It defines the minimal fields you need at the point where you decide posting, typically on sales invoice rows and purchase posting specifications, and sometimes on bank transactions when you book a receipt-like purchase directly from the bank statement.

Ownership

Owner: bus vat. This module is responsible for implementing write operations for this object and is the only module that should directly change the canonical datasets for it.

Secondary read-only use cases are provided by these modules when they consume this object for validation, matching, posting, or reporting:

bus invoices records VAT rate and treatment at line level for evidence and validation. bus journal is reconciled against invoice VAT for period reporting, and bus validate checks VAT mappings and invariants across datasets.

Actions

Define VAT treatment codes maintains allowed treatment codes so 0% and special cases stay deterministic. Invoice markings for VAT treatments maps treatment codes to required invoice markings and identifiers. Validate VAT mappings checks alignment between rates, treatment codes, and reporting expectations.

Properties

Core VAT fields are vat_rate, vat_percent, vat_treatment, and vat_deductible_percent.

Relations

VAT treatment codes are referenced at the level where posting intent is recorded. Sales invoice rows reference VAT treatment via vat_treatment and rate via vat_percent.

Purchase posting specifications reference VAT treatment via vat_treatment, rate via vat_rate, and deductibility via vat_deductible_percent.

Bank transactions can reference VAT treatment directly when the cash movement is booked as a non-invoice event using vat_treatment and vat_deductible_percent.

Parties can carry a default VAT treatment via default_vat_treatment to make classification and validation deterministic.