VAT types and rules
This page is for the owner and whoever does the bookkeeping. It is about keeping the VAT setup of a running store right: what to do when a rate changes, when you start selling to a new country, or when a new product group has a different rate. How the shop calculates VAT, and how it picks a rule, is explained on VAT rules and VAT types for businesses.
Warning
This page is not tax or legal advice. VAT and sales tax law differ by country and change over time. The shop charges what you configure; whether that is correct for your business is for your tax adviser to confirm.
The two tools, in one paragraph
A VAT type is a named percentage, managed under Store > VAT types (shop/vattype). A VAT rule says which
VAT type applies to customers of a country and products of a category, managed under Store > VAT rules
(shop/vatrules), with product categories in shop/productcategories. All three need the shop/setup policy
(kernel/shop/module.php). A price uses either a fixed VAT type, or the dynamic type named in
settings/shop.ini [VATSettings] DynamicVatTypeName (shipped: "Determined by VAT charging rules"), which hands the
choice to the rules.
Who owns VAT
| Task | Owner of the task |
|---|---|
| Deciding rates and where they apply | Owner, with the tax adviser |
| Entering VAT types and rules | Owner, or one trusted person with shop/setup |
| Setting a product's VAT type or category | Product editors, following a written list |
| Checking test orders after a change | Store manager |
| Keeping a record of what changed and when | Owner; the audit trail records VAT changes in its commerce channel (The audit trail) |
Keep shop/setup to as few people as possible. One wrong percentage changes the price of every product that uses
the type.
When a rate changes
- Your tax adviser confirms the new rate and the date it applies from.
- Note which VAT type carries the rate. Name types after their meaning and percentage, so this is obvious.
- On the day, change the percentage of that VAT type. Every price that uses the type follows; existing orders keep
the VAT they were placed with, because each order line stores its own price, VAT value and discount
(table
ezproductcollection_iteminkernel/sql/mysql/kernel_schema.sql). - Place a test order (below) and check the confirmation page.
- Update any page or newsletter that quotes prices including VAT.
Tip
If prices are entered including VAT, a rate change also changes your net income per product unless you change the prices too. Decide with your bookkeeper which of the two you keep fixed.
When you start selling to a new country
- To do: Your adviser confirms what you must charge customers there.
- To do: If the rate differs from your general rule: add a VAT rule for that country, with "any category" or the
categories concerned. A rule naming the country exactly beats an "any country" rule
(
kernel/classes/vathandlers/ezdefaultvathandler.php). - To do: The country can be chosen in the shop's forms; the country list is grouped with the most used countries first (Country groups and regions).
- To do: A test order from that country shows the expected VAT.
When a product group has its own rate
- To do: A product category exists for the group (
shop/productcategories). - To do: The product class has a category field and
shop.ini [VATSettings] ProductCategoryAttributenames it; this is a setting your partner makes. - To do: Every product of the group has the category set.
- To do: A VAT rule names the category with the right VAT type.
Removing a VAT type
When you remove a VAT type, the VAT type page first lists the VAT rules and products that use it, and asks you to
choose another type for them. It refuses to remove a type that a product class uses as its default, and it refuses
to remove the last remaining type; the message suggests keeping one type at zero percent instead
(kernel/private/classes/views/shop/vattype.php).
The Store dashboard warns when a 0 percent VAT type is in use, so a zero rate is never an accident (Store dashboard and order statuses).
Testing after any VAT change
Use two test orders, ideally from two countries and with two product categories (Basket, checkout and orders):
- To do: The confirmation page shows the VAT you expect on each line.
- To do: Shipping is treated the way your adviser told you.
- To do: The order list shows totals with and without VAT that match (Order list sorting).
- To do: Cancel or remove the test orders the way your team agreed, so they do not count as revenue.
The recurring version of these checks is the VAT checklist.
Related pages
- VAT checklist
- VAT rules and VAT types for businesses
- Products, prices and VAT
- Prices and currencies
- Free documentation: this page is free to copy, translate and improve under the GNU FDL 1.3.
Become an Exponential Partner
Partners share their information, provide funding, contribute back and develop the products with us, and that is how Exponential grows. A partner website and dashboard are planned for mid-2027: please become a partner today to speed up our growth rate and land new features faster.