{
  "$comment": "Machine-readable companion to https://valem.run/calculators/estonia/car-tax. Formula, inputs, outputs, engine-verified test vectors, cited sources and the re-runnable Valem ModelSpec behind the page.",
  "url": "https://valem.run/calculators/estonia/car-tax",
  "dataUrl": "https://valem.run/calculators/estonia/car-tax.json",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Estonia car tax model by Valem (https://valem.run/calculators/estonia/car-tax), CC BY 4.0.",
    "note": "Covers the model — the expression of each rule and the arrangement of the catalog. The rates and thresholds themselves are law and are not licensed by anyone; the cited sources are where they come from."
  },
  "verificationUrl": "https://valem.run/calculators/estonia/car-tax/verify",
  "country": "estonia",
  "countryName": "Estonia",
  "formula": "car-tax",
  "formulaName": "Car tax",
  "title": "Car Tax Calculator — Estonia motor-vehicle tax 2026",
  "answer": "Estonia's new car tax is an annual charge plus a one-time registration tax, both built from a base amount, the CO₂ above 117 g/km and the mass above 2,000 kg.",
  "lang": "en",
  "currency": "EUR",
  "taxYear": "2026",
  "verification": {
    "claim": "shape-only",
    "statement": "The rates in this model are illustrative. Its 2 self-test cases confirm the engine reproduces the shape of the charge, but the schedule is not the official one, so the amount will not match a real bill. The cited sources name the document that would replace it.",
    "selfTestCases": 2,
    "ratesAreIllustrative": true,
    "sourcesCheckedOn": "2026-08-02"
  },
  "sources": [
    {
      "label": "EMTA — vehicle tax calculator",
      "url": "https://www.emta.ee",
      "checked": "2026-08-02"
    }
  ],
  "terminalOutput": "firstYearTotal",
  "inputs": [
    {
      "name": "co2",
      "type": "number",
      "label": "CO₂ emissions (g/km, WLTP)",
      "minimum": 0
    },
    {
      "name": "mass",
      "type": "number",
      "label": "Gross mass (kg)",
      "minimum": 0
    }
  ],
  "outputs": [
    {
      "name": "co2Over",
      "type": "number",
      "label": "CO₂ over 117 g/km",
      "formula": "($x := co2 - $const.co2Free; $round($x > 0 ? $x : 0, 2))"
    },
    {
      "name": "massOver",
      "type": "number",
      "formula": "($x := mass - $const.massFree; $round($x > 0 ? $x : 0, 2))"
    },
    {
      "name": "annualCo2",
      "type": "number",
      "label": "Annual CO₂ component",
      "format": "currency",
      "formula": "$round($const.annualCo2Rate * co2Over, 2)"
    },
    {
      "name": "annualWeight",
      "type": "number",
      "label": "Annual weight component",
      "format": "currency",
      "formula": "$round($const.annualMassRate * massOver, 2)"
    },
    {
      "name": "annualTax",
      "type": "number",
      "label": "Annual tax",
      "format": "currency",
      "formula": "$round($const.annualBase + annualCo2 + annualWeight, 2)"
    },
    {
      "name": "regCo2",
      "type": "number",
      "formula": "$round($const.regCo2Rate * co2Over, 2)"
    },
    {
      "name": "registrationTax",
      "type": "number",
      "label": "Registration (one-time)",
      "format": "currency",
      "formula": "$round($const.regBase + regCo2, 2)"
    },
    {
      "name": "firstYearTotal",
      "type": "number",
      "label": "First-year total",
      "format": "currency",
      "formula": "$round(annualTax + registrationTax, 2)"
    }
  ],
  "testCases": [
    {
      "description": "150 g/km, 1800 kg",
      "given": {
        "co2": 150,
        "mass": 1800
      },
      "expect": {
        "co2Over": 33,
        "annualTax": 149,
        "registrationTax": 465,
        "firstYearTotal": 614
      }
    },
    {
      "description": "95 g/km (below CO2 threshold), 2500 kg heavy",
      "given": {
        "co2": 95,
        "mass": 2500
      },
      "expect": {
        "co2Over": 0,
        "annualWeight": 100,
        "annualTax": 150,
        "registrationTax": 300,
        "firstYearTotal": 450
      }
    }
  ],
  "spec": {
    "id": "car-tax-estonia",
    "version": "1.0.0",
    "schema": {
      "type": "object",
      "properties": {
        "co2": {
          "type": "number",
          "minimum": 0
        },
        "mass": {
          "type": "number",
          "minimum": 0
        },
        "co2Over": {
          "type": "number",
          "readOnly": true
        },
        "massOver": {
          "type": "number",
          "readOnly": true
        },
        "annualCo2": {
          "type": "number",
          "readOnly": true
        },
        "annualWeight": {
          "type": "number",
          "readOnly": true
        },
        "annualTax": {
          "type": "number",
          "readOnly": true
        },
        "regCo2": {
          "type": "number",
          "readOnly": true
        },
        "registrationTax": {
          "type": "number",
          "readOnly": true
        },
        "firstYearTotal": {
          "type": "number",
          "readOnly": true
        }
      }
    },
    "constants": {
      "co2Free": 117,
      "massFree": 2000,
      "annualBase": 50,
      "annualCo2Rate": 3,
      "annualMassRate": 0.2,
      "regBase": 300,
      "regCo2Rate": 5
    },
    "defaultValues": [
      {
        "path": "$",
        "expr": "{ 'co2': 150, 'mass': 1800 }"
      }
    ],
    "derivations": [
      {
        "path": "$.co2Over",
        "expr": "($x := co2 - $const.co2Free; $round($x > 0 ? $x : 0, 2))"
      },
      {
        "path": "$.massOver",
        "expr": "($x := mass - $const.massFree; $round($x > 0 ? $x : 0, 2))"
      },
      {
        "path": "$.annualCo2",
        "expr": "$round($const.annualCo2Rate * co2Over, 2)"
      },
      {
        "path": "$.annualWeight",
        "expr": "$round($const.annualMassRate * massOver, 2)"
      },
      {
        "path": "$.annualTax",
        "expr": "$round($const.annualBase + annualCo2 + annualWeight, 2)"
      },
      {
        "path": "$.regCo2",
        "expr": "$round($const.regCo2Rate * co2Over, 2)"
      },
      {
        "path": "$.registrationTax",
        "expr": "$round($const.regBase + regCo2, 2)"
      },
      {
        "path": "$.firstYearTotal",
        "expr": "$round(annualTax + registrationTax, 2)"
      }
    ],
    "constraints": [],
    "metaDerivations": [],
    "viewDefinition": {
      "renderer": "builtin",
      "defaultView": "main",
      "views": [
        {
          "id": "main",
          "label": "Car tax",
          "layout": "vertical",
          "components": [
            {
              "id": "illustrativeNotice",
              "type": "alert",
              "variant": "warning",
              "label": "Illustrative rates — the structure is the law, the per-unit rates are not",
              "text": "'Estonia’s motor vehicle tax follows exactly the structure modelled here: a base amount, a CO2 component and a mass component, for both the annual tax and the registration fee. The annual base of 50 euro and the 2,000 kg mass threshold (2,400 kg for electric cars) are correct. What is simplified is the CO2 component: the real rates are progressive rather than flat, reaching 50 euro per gram on the registration fee above 200 g/km. Check the Estonian Tax and Customs Board (emta.ee) for the schedule.'"
            },
            {
              "id": "co2",
              "type": "numericField",
              "label": "CO₂ emissions (g/km, WLTP)",
              "bind": "$.co2"
            },
            {
              "id": "mass",
              "type": "numericField",
              "label": "Gross mass (kg)",
              "bind": "$.mass"
            },
            {
              "id": "tiles",
              "type": "group",
              "layout": "horizontal",
              "components": [
                {
                  "id": "annualTile",
                  "type": "statTile",
                  "label": "Annual tax",
                  "bind": "$.annualTax",
                  "format": "currency",
                  "currency": "EUR"
                },
                {
                  "id": "regTile",
                  "type": "statTile",
                  "label": "Registration (one-time)",
                  "bind": "$.registrationTax",
                  "format": "currency",
                  "currency": "EUR"
                },
                {
                  "id": "totalTile",
                  "type": "statTile",
                  "label": "First-year total",
                  "bind": "$.firstYearTotal",
                  "format": "currency",
                  "currency": "EUR"
                }
              ]
            },
            {
              "id": "sep1",
              "type": "separatorLine"
            },
            {
              "id": "breakdown",
              "type": "keyValueList",
              "label": "Breakdown",
              "items": [
                {
                  "label": "CO₂ over 117 g/km",
                  "bind": "$.co2Over"
                },
                {
                  "label": "Annual CO₂ component",
                  "bind": "$.annualCo2",
                  "format": "currency",
                  "currency": "EUR"
                },
                {
                  "label": "Annual weight component",
                  "bind": "$.annualWeight",
                  "format": "currency",
                  "currency": "EUR"
                },
                {
                  "label": "Annual tax",
                  "bind": "$.annualTax",
                  "format": "currency",
                  "currency": "EUR"
                },
                {
                  "label": "Registration tax",
                  "bind": "$.registrationTax",
                  "format": "currency",
                  "currency": "EUR"
                }
              ]
            },
            {
              "id": "note",
              "type": "staticText",
              "text": "'Illustrative Estonia 2025 estimate. Annual = €50 base + €3 per g/km CO₂ over 117 + €0.20 per kg over 2000. Registration = €300 base + €5 per g/km CO₂ over 117. Not tax advice.'"
            },
            {
              "id": "sources",
              "type": "sourceList",
              "label": "Sources",
              "items": [
                {
                  "label": "EMTA — vehicle tax calculator",
                  "url": "https://www.emta.ee",
                  "date": "2026-08-02"
                }
              ]
            }
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "150 g/km, 1800 kg",
        "given": {
          "$.co2": 150,
          "$.mass": 1800
        },
        "expect": {
          "$.co2Over": 33,
          "$.annualTax": 149,
          "$.registrationTax": 465,
          "$.firstYearTotal": 614
        }
      },
      {
        "description": "95 g/km (below CO2 threshold), 2500 kg heavy",
        "given": {
          "$.co2": 95,
          "$.mass": 2500
        },
        "expect": {
          "$.co2Over": 0,
          "$.annualWeight": 100,
          "$.annualTax": 150,
          "$.registrationTax": 300,
          "$.firstYearTotal": 450
        }
      }
    ]
  }
}
