Finance

# Generate tax rules from tax schemes

Let Transportial write the VAT, GST and sales tax rules of a price configuration from the tax scheme of your country: 36 countries, including the EU-27.

Updated October 18, 2026

**Who can do this:** The pricing update permission. Creating missing tax rates also needs the create:taxRate permission or a role level with access to the settings.

Which tax goes on a transport invoice depends on where the customer is established, where the transport starts and ends, and the tax law of the country. Transportial keeps that law as **tax schemes**. The generator turns a scheme into the VAT rules of your price configurations: one rule per situation, in the right order, each with an explanation and its legal basis. You only choose which of your own tax rates applies in each situation.

## Tax schemes

Every country uses the same scheme format. A scheme lists the situations (for example "EU business customer (reverse charge)"), the rules that recognize them and the rates, each with the date it takes effect. Countries that share rules include a common template, so the EU rules are written once and used by every EU scheme. Each scheme also carries the legal basis of its rules, its sources and how confident the research behind it is.

| Scheme                                                                                                                                                                                                                                                                                                                                             | What the rules follow                                                                                                                                                                                                                                                                  |
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Netherlands**, **Belgium**, **Germany**                                                                                                                                                                                                                                                                                                          | The shared EU template: the place-of-supply rules of the EU VAT Directive for goods transport, with the national standard rate.                                                                                                                                                        |
| The other 24 EU member states: **Austria**, **Bulgaria**, **Croatia**, **Cyprus**, **Czechia**, **Denmark**, **Estonia**, **Finland**, **France**, **Greece**, **Hungary**, **Ireland**, **Italy**, **Latvia**, **Lithuania**, **Luxembourg**, **Malta**, **Poland**, **Portugal**, **Romania**, **Slovakia**, **Slovenia**, **Spain**, **Sweden** | The same EU template, plus the exemption of a domestic leg that is part of an international movement (see below). The reverse charge rule names the national law and the wording the invoice needs, for example "Autoliquidation" in France or "Inversión del sujeto pasivo" in Spain. |
| **United Kingdom**                                                                                                                                                                                                                                                                                                                                 | Business customers outside the UK are outside the scope, transport wholly outside the UK is not taxed, transport to or from outside the UK is zero-rated, and other transport gets 20%.                                                                                                |
| **Switzerland** (with Liechtenstein)                                                                                                                                                                                                                                                                                                               | Customers established abroad are not subject to Swiss VAT, transport connected with import or export or performed abroad is exempt, and other transport gets the standard rate. Liechtenstein forms one VAT area with Switzerland, so its customers and stops count as domestic.       |
| **Norway**                                                                                                                                                                                                                                                                                                                                         | Transport to or from outside the VAT area and services wholly used outside Norway are exempt; other transport gets 25%.                                                                                                                                                                |
| **Australia**, **New Zealand**, **Singapore**, **United Arab Emirates**                                                                                                                                                                                                                                                                            | International transport is GST-free or zero-rated, including a domestic leg of an international movement; other transport gets the standard rate. In the UAE, freight between GCC countries counts as international.                                                                   |
| **Canada**                                                                                                                                                                                                                                                                                                                                         | International freight is zero-rated; other freight is taxed by the province of destination (see below).                                                                                                                                                                                |
| **United States**                                                                                                                                                                                                                                                                                                                                  | The state sales and gross receipts taxes on freight, per state (see below).                                                                                                                                                                                                            |

Administrators can also add their own scheme, or replace a shipped one, through the API (the platform settings). Such a scheme shows **own scheme** in the **Country scheme** list.

## Generate the rules

1. Open the side menu (☰, top right) and choose **Prices**.
2. Click a price configuration to open its detail page.
3. Open the **VAT rules** tab. It lists the current rules in the order they are tried.
4. Click **Generate VAT rules**. The generator opens with the steps **Setup**, **Tax rates** and **Preview**.
5. In **Administration**, choose the administration the rules are for. Left empty, the **Primary administration** is used.
6. In **Country scheme**, choose a scheme, or leave it on **Country of the administration**.
7. Choose the **Position of the generated rules**: **Before own rules** or **After own rules**.
8. Optional: switch on **Also apply to all other pricings** to write the same rules into every price configuration.
9. Click **Next**.
10. Under **Tax rate per situation**, check the tax rate for each situation. Rates marked **Proposed** were chosen by Transportial from the VAT category and percentage of your tax rates. Situations marked optional may stay on **No tax rate**.
11. Click **Preview rules**. Check each **Rule** with its **Tax rate** and **Explanation**, the number of rules added, replaced and kept per price configuration, and read the warnings.
12. Click **Apply rules**. The message "The VAT rules have been generated and saved." appears and the rules are listed on the tab.

Generated rules carry the tag **Generated**. When you run the generator again, it replaces the generated rules and keeps your own rules.

An own rule without conditions above the generated rules catches every line first, so the generated rules are never reached. Rules on a price module are tried before the rules of the configuration. The preview warns you about both.

## EU countries

The EU template has these situations: **Domestic / business customer in the home country**, **EU business customer (reverse charge)**, **Transport to or from outside the EU (zero rate / exempt)**, **Business customer outside the EU (out of scope)**, **Private customer (no VAT number)** and, optional, **Private customer, departure in another EU country**. Without a tax rate for the optional situation, those transports use the private customer rule.

## United States

In the United States most states do not tax a carrier's freight charge. The scheme therefore generates, in this order:

1. **Tax-exempt customer (exemption certificate)**: the customer has a valid exemption for the state where the transport departs. See [Customer tax registrations and exemptions](/en-us/help/customer-tax-registrations).
2. **Transport to or from outside the United States**: no state tax.
3. **Interstate transport (not taxable)**: stops in more than one state.
4. **Freight within Hawaii** and **Freight within New Mexico**: one situation per state whose tax on freight is charged on the invoice.
5. **Transport within a state without tax on freight**: everything else, including routes whose state is unknown.

| State                | Tax on freight within the state                                                                                                                                          |
| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Hawaii               | General excise tax of 4%, customarily passed on as its own invoice line. The proposed invoice rate is 4.712%, which includes the county surcharge that may be passed on. |
| New Mexico           | Gross receipts tax of 4.875% plus local rates of the destination.                                                                                                        |
| Washington, Delaware | A tax the carrier pays itself (public utility tax, gross receipts tax). It is not charged on the invoice, so these states get no rule of their own.                      |
| All other states     | No tax on a carrier's freight charge.                                                                                                                                    |

Expand **State / province data** in the **Tax rates** step to see every state with its status (**Charged on the invoice**, **Carrier tax, not charged on the invoice** or **Not taxed**), its rate and the legal basis.

County and city rates are not in the scheme. Where they apply, map a combined rate with components, for example state + county + city (see [Tax rates and VAT rules](/en-us/help/tax-rates)). The preview warns when a mapped rate differs from the state rate, so you can check it is the combined rate you meant.

## Canada

Freight to or from outside Canada is zero-rated. Other freight is taxed by the province or territory where it ends (the last unloading stop):

| Destination                                                                       | Tax                                                                                                             |
| --------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------- |
| Ontario                                                                           | HST 13%                                                                                                         |
| New Brunswick, Newfoundland and Labrador, Prince Edward Island                    | HST 15%                                                                                                         |
| Nova Scotia                                                                       | HST 14% (15% before 1 April 2025)                                                                               |
| Québec, when the freight also starts in Québec                                    | GST 5% + QST 9.975% (14.975%, not compound): map a combined rate with these two components.                     |
| All other provinces and territories, and Québec when the freight starts elsewhere | GST 5% only. The provincial sales taxes of British Columbia, Saskatchewan and Manitoba do not apply to freight. |

## Part of an international movement

Some legs of an import or export lie entirely in one country, for example from the port to the customer's warehouse. Many countries zero-rate or exempt such a domestic leg when it is part of an international movement, but only with evidence, such as the export declaration, proof of foreign origin or the documents of the through transport.

Mark such a leg with the switch **Is combined transport** on its shipments (see [Add shipments and goods](/en-us/help/consignments-and-goods)). An order counts as part of an international movement when one of its shipments is combined transport, or when its route crosses a country border; a Trip has the fact when one of its orders has it.

Switch on **Is combined transport** only when you hold the evidence your tax authority requires for the domestic leg of an import or export. The rules cannot check the documents; they only see the switch. With the platform setting **Always combined transport** on, every new shipment has the switch on by default, so check that setting before you generate these rules.

The fact is used by the schemes of the 24 EU member states other than the Netherlands, Belgium and Germany, and by the United Kingdom, Switzerland, Norway, Canada, Australia, New Zealand, Singapore and the United Arab Emirates. In the EU and Switzerland it only zero-rates legs that stay within one country. In your own VAT rules it is available as `taxContext.internationalMovement`, and the switch alone as `taxContext.combinedTransport`.

## Create missing state tax rates

For a scheme with state or province data, the **Tax rates** step shows the switch **Create missing state / province tax rates**. Switch it on, and every per-state situation without a tax rate gets the tag **Will be created**. The preview lists the rates, and **Apply rules** creates them: named after the state and its rate, with the state's region code (for example `US-HI`) as jurisdiction and VAT category S, and maps them to their situation. When the scheme lists several taxes for a state or province, the new rate is a combined rate with those taxes as its components; the preview lists them under the rate.

## Effective dates

Every rate in a scheme carries the date it takes effect, so a scheme can already hold a change that is announced for next year, and keeps earlier rates, such as Estonia's move from 22% to 24% on 1 July 2025 or Switzerland's 8.1% since 2024\. The generator uses the rates in force today. Through the API you can generate with the rates of another date, for example to prepare for a rate change. The rules point at your tax rates, so when a rate changes, create a new tax rate, run the generator again and map the new rate.

## Trade blocs and corrections

* **Trade blocs**: the EU is a trade bloc with its 27 member states. Administrators can add other blocs, such as a customs union or VAT area, through the API (the platform settings). The rules can then check whether the customer, departure and arrival are in a bloc and whether the route stays within it or leaves it.
* **Corrections per region**: administrators can correct the state data of a scheme per region code through the API: whether freight is taxed, the rate, whether the tax goes on the invoice and the invoice rate. A state whose tax is put on the invoice this way gets its own situation and rule.

## Known limitations

The rules only see the facts of the order or Trip. These cases are not generated, so correct them by hand with your own rules or tax rates:

* **Use and enjoyment**: the German and Belgian rule for business transport performed wholly outside the EU is not generated. The UK rule only looks at departure and arrival, so a transit is not seen.
* **Private customers**: transport for private customers that is only partly in a country (taxed by the distance in that country) cannot be split over one invoice line.
* **Canada, several destinations**: freight to several provinces must be split per province; the rules use the last unloading stop.
* **Taxes the customer pays**: reverse-charged or self-assessed taxes, such as the QST on freight into Québec, are the customer's. The rule gives a 0% (or GST-only) line instead of a component.
* **Special territories and the supplier's establishment**: regional rates such as the Azores and Madeira, Greek islands, the Canary Islands and the French overseas departments, and rules that depend on where you as the supplier are established or registered (for example cabotage in Norway), are not modeled.
* **Transitional rates**: rates that depend on a contract date or when the tax became payable follow the scheme date only.

## Region codes

Transportial names countries and regions with ISO codes: countries with two letters (ISO 3166-1, for example `NL` or `US`) and states, provinces and other regions with the country code and a region code (ISO 3166-2, for example `US-TX` for Texas, `CA-ON` for Ontario, `DE-BY` for Bavaria or `NL-NH` for North Holland). Wherever you choose a jurisdiction, you first pick the country and then, if needed, the **State / province / region**.

The region of a stop comes from the state or province of its address. "Texas", "TX" and "US-TX" in a US address all become `US-TX`.

Fill in the state or province of your addresses. Without it, the region of a stop is unknown, and the US rules treat the transport as transport within a state without tax on freight.

## Facts the rules check

The generated rules check facts that Transportial works out for each transport order or Trip being priced, under the selector `taxContext`. You can use the same selectors in the conditions of your own VAT rules. The customer is the invoiced party: the bill-to party of the order, else its customer.

| Selector                                                          | Meaning                                                                                                                        |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| taxContext.available                                              | Always true when the tax facts could be worked out.                                                                            |
| taxContext.issuer.country, .subdivision, .blocs                   | Country, region code and trade blocs of your administration.                                                                   |
| taxContext.customer.country, .subdivision, .blocs                 | Where the customer is established.                                                                                             |
| taxContext.customer.vatNumber, .hasVatNumber                      | The customer's VAT number, and whether it has one.                                                                             |
| taxContext.customer.registrations, .registeredIn                  | The customer's tax registrations, and the jurisdictions they are for.                                                          |
| taxContext.departure.country, .subdivision, .blocs                | The first loading stop.                                                                                                        |
| taxContext.arrival.country, .subdivision, .blocs                  | The last unloading stop.                                                                                                       |
| taxContext.countries, taxContext.subdivisions                     | The countries and region codes of the stops, in route order.                                                                   |
| taxContext.singleCountry, taxContext.crossesCountryBorder         | All stops are in one country, or in more than one.                                                                             |
| taxContext.singleSubdivision, taxContext.crossesSubdivisionBorder | All stops are in one known region, or in more than one.                                                                        |
| taxContext.blocs.EU.customerIn, .departureIn, .arrivalIn          | The customer, departure or arrival is in the bloc (here the EU).                                                               |
| taxContext.blocs.EU.within, .intra, .leaves                       | All stops are in the bloc; departure and arrival are in two different member countries; at least one stop is outside the bloc. |
| taxContext.customerExempt                                         | The customer has a tax exemption that is valid today for the region or country of departure.                                   |
| taxContext.combinedTransport                                      | A shipment of the order is marked **Is combined transport**.                                                                   |
| taxContext.internationalMovement                                  | A shipment of the order is combined transport, or the route crosses a country border.                                          |

Rules written with the older selector `vatContext` keep working. It holds the same facts plus the earlier flat fields, such as `vatContext.customerHasVatNumber`, `vatContext.customerInEu`, `vatContext.departureCountry` and `vatContext.leavesEu`. Use `taxContext` for new rules.

The facts exist for lines of transport orders and Trips. Price configurations that invoice per vehicle or driver have no route, so these rules do not apply to them; the preview warns you.

## Related articles

* [Tax rates and VAT rules](/en-us/help/tax-rates)
* [Customer tax registrations and exemptions](/en-us/help/customer-tax-registrations)
* [Set up price configurations](/en-us/help/pricing)
* [Set up administrations](/en-us/help/administrations)

## Still need help?

Our support team is happy to answer any question about Transportial.

[Contact support](/en-us/contact)[Report an issue](/en-us/report-issue)

---
Canonical page: https://transportial.com/en-us/help/tax-rule-generator
