Tax
From a transaction to a rate
Legal entities, tax policies, treatments, rates, engines
Tax resolves through a chain: who is selling (the legal entity), who is billed (the billing profile), which rule applies (policy and treatment), and how much (engine and rate). Two findings decide most designs.
It is the country of the billing profile that commands the rate, not the address on the order. And no native mechanism varies the tax code by country — which closes off the two paths most people try first.
The objects
Select any object to open its detail — purpose, the fields that matter, what it relates to, and what to watch for.
The architecture
Scroll the diagram sideways
Two things decide everything here. First, it is the country of the billing profile that commands the rate, not the address on the order — verified in both directions on two orders with different addresses and the same profile. Second, no native mechanism varies the tax code by country: TaxTreatmentItem has no geographic field, and the standard decision table takes a code as input and returns a rate, so it can never produce one.
Solution patterns
Bill-To driven taxation
Make the tax rate follow the billing profile rather than the order address — and know why that is the correct reading of the model, not a workaround.
TaxCountry-driven tax code, without Apex
Vary the tax <em>code</em> — not just the rate — by customer country, using only configuration and a flow.
TaxThe Apex tax engine adapter
When the shipped engine returns nothing, what a working adapter actually has to implement — and the eight failures that stand between you and a taxed invoice.
Use cases
Intra-EU VAT
Charge the right VAT across EU borders, including the zero-rated cases, and be able to explain any rate on any invoice.
ArchitectureSeveral legal entities
One org, several selling entities, and tax rules that must not leak between them.