{
  "$comment": "Machine-readable companion to https://valem.run/calculators/belgium/self-employed. Formula, inputs, outputs, engine-verified test vectors, cited sources and the re-runnable Valem ModelSpec behind the page.",
  "url": "https://valem.run/calculators/belgium/self-employed",
  "dataUrl": "https://valem.run/calculators/belgium/self-employed.json",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Belgium indépendant model by Valem (https://valem.run/calculators/belgium/self-employed), 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/belgium/self-employed/verify",
  "country": "belgium",
  "countryName": "Belgium",
  "formula": "self-employed",
  "formulaName": "Indépendant",
  "title": "Indépendant — Belgium Freelancer Tax",
  "answer": "Your net income as a Belgian indépendant à titre principal is income minus social contributions of 20.5% up to a first ceiling and 14.16% between the two, which are deductible, and then progressive income tax on what remains.",
  "lang": "en",
  "currency": "EUR",
  "taxYear": "2026",
  "verification": {
    "claim": "shape-only",
    "statement": "The rates in this model are illustrative. Its 3 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": 3,
    "ratesAreIllustrative": true,
    "sourcesCheckedOn": "2026-08-22"
  },
  "sources": [
    {
      "label": "INASTI — Combien de cotisations sociales dois-je payer ?",
      "url": "https://www.inasti.be/fr/faq/combien-de-cotisations-sociales-dois-je-payer",
      "checked": "2026-08-22"
    },
    {
      "label": "Cotisations indépendant Belgique 2026 : taux 20,5% / 14,16% et plafonds",
      "url": "https://salaireclair.fr/blog/cotisations-independant-belgique-2026",
      "checked": "2026-08-22"
    }
  ],
  "terminalOutput": "netIncome",
  "inputs": [
    {
      "name": "annualIncome",
      "type": "number",
      "label": "Annual net taxable income (EUR)",
      "minimum": 0
    }
  ],
  "outputs": [
    {
      "name": "socialContributions",
      "type": "number",
      "label": "Social contributions",
      "format": "number",
      "formula": "($i := annualIncome; $round($const.rate1 * $min([$i, $const.ceiling1]) + $const.rate2 * $max([0, $min([$i, $const.ceiling2]) - $const.ceiling1]), 2))"
    },
    {
      "name": "taxableIncome",
      "type": "number",
      "formula": "$round($max([0, annualIncome - socialContributions - $const.exemptAmount]), 2)"
    },
    {
      "name": "incomeTax",
      "type": "number",
      "label": "Income tax (IPP)",
      "format": "number",
      "formula": "($t := taxableIncome; $round($const.r1 * $min([$t, $const.b1]) + $const.r2 * $max([0, $min([$t, $const.b2]) - $const.b1]) + $const.r3 * $max([0, $min([$t, $const.b3]) - $const.b2]) + $const.r4 * $max([0, $t - $const.b3]), 2))"
    },
    {
      "name": "netIncome",
      "type": "number",
      "label": "Net income / year",
      "format": "number",
      "formula": "$round($max([0, annualIncome - socialContributions - incomeTax]), 2)"
    }
  ],
  "testCases": [
    {
      "description": "50,000 EUR net taxable income — a typical full-time indépendant",
      "given": {
        "annualIncome": 50000
      },
      "expect": {
        "socialContributions": 10250,
        "taxableIncome": 28570,
        "incomeTax": 8980,
        "netIncome": 30770
      }
    },
    {
      "description": "20,000 EUR — part-time",
      "given": {
        "annualIncome": 20000
      },
      "expect": {
        "socialContributions": 4100,
        "taxableIncome": 4720,
        "incomeTax": 1180,
        "netIncome": 14720
      }
    },
    {
      "description": "130,000 EUR — above the second contribution ceiling",
      "given": {
        "annualIncome": 130000
      },
      "expect": {
        "socialContributions": 20412.19,
        "taxableIncome": 98407.81,
        "incomeTax": 42823.9,
        "netIncome": 66763.91
      }
    }
  ],
  "spec": {
    "id": "self-employed-belgium",
    "version": "1.0.0",
    "schema": {
      "type": "object",
      "properties": {
        "annualIncome": {
          "type": "number",
          "minimum": 0
        },
        "socialContributions": {
          "type": "number",
          "readOnly": true
        },
        "taxableIncome": {
          "type": "number",
          "readOnly": true
        },
        "incomeTax": {
          "type": "number",
          "readOnly": true
        },
        "netIncome": {
          "type": "number",
          "readOnly": true
        }
      },
      "required": [
        "annualIncome"
      ]
    },
    "constants": {
      "ceiling1": 75024.54,
      "ceiling2": 110562.42,
      "rate1": 0.205,
      "rate2": 0.1416,
      "exemptAmount": 11180,
      "b1": 16320,
      "b2": 28800,
      "b3": 49840,
      "r1": 0.25,
      "r2": 0.4,
      "r3": 0.45,
      "r4": 0.5
    },
    "defaultValues": [
      {
        "path": "$",
        "expr": "{ \"annualIncome\": 50000 }"
      }
    ],
    "derivations": [
      {
        "path": "$.socialContributions",
        "expr": "($i := annualIncome; $round($const.rate1 * $min([$i, $const.ceiling1]) + $const.rate2 * $max([0, $min([$i, $const.ceiling2]) - $const.ceiling1]), 2))"
      },
      {
        "path": "$.taxableIncome",
        "expr": "$round($max([0, annualIncome - socialContributions - $const.exemptAmount]), 2)"
      },
      {
        "path": "$.incomeTax",
        "expr": "($t := taxableIncome; $round($const.r1 * $min([$t, $const.b1]) + $const.r2 * $max([0, $min([$t, $const.b2]) - $const.b1]) + $const.r3 * $max([0, $min([$t, $const.b3]) - $const.b2]) + $const.r4 * $max([0, $t - $const.b3]), 2))"
      },
      {
        "path": "$.netIncome",
        "expr": "$round($max([0, annualIncome - socialContributions - incomeTax]), 2)"
      }
    ],
    "constraints": [],
    "viewDefinition": {
      "renderer": "builtin",
      "defaultView": "main",
      "views": [
        {
          "id": "main",
          "label": "Self-employed net income",
          "layout": "vertical",
          "components": [
            {
              "id": "illustrativeNotice",
              "type": "alert",
              "variant": "warning",
              "label": "What this model leaves out",
              "text": "'Two things make Belgium unusual and both are modelled: contributions are charged at 20.5% only up to a first ceiling and at a reduced 14.16% between the two, with income above the second ceiling exempt entirely; and they are fully deductible, so they reduce the base the income tax is then computed on. The contribution rates and ceilings are the 2026 ones. The IPP bands are the last officially published set and are indexed upward each year, so the tax here is slightly overstated. Communal surcharges, the quarterly minimum contribution and family-related tax reductions are not modelled. Not tax advice.'"
            },
            {
              "id": "inputField",
              "type": "numericField",
              "label": "Annual net taxable income (EUR)",
              "bind": "$.annualIncome",
              "placeholder": "50000"
            },
            {
              "id": "tiles",
              "type": "group",
              "layout": "horizontal",
              "components": [
                {
                  "id": "netIncomeTile",
                  "type": "statTile",
                  "label": "Net income / year",
                  "bind": "$.netIncome",
                  "format": "number"
                },
                {
                  "id": "socialContributionsTile",
                  "type": "statTile",
                  "label": "Social contributions",
                  "bind": "$.socialContributions",
                  "format": "number"
                },
                {
                  "id": "incomeTaxTile",
                  "type": "statTile",
                  "label": "Income tax (IPP)",
                  "bind": "$.incomeTax",
                  "format": "number"
                }
              ]
            },
            {
              "id": "sources",
              "type": "sourceList",
              "label": "Sources",
              "items": [
                {
                  "label": "INASTI — Combien de cotisations sociales dois-je payer ?",
                  "url": "https://www.inasti.be/fr/faq/combien-de-cotisations-sociales-dois-je-payer",
                  "date": "2026-08-22"
                },
                {
                  "label": "Cotisations indépendant Belgique 2026 : taux 20,5% / 14,16% et plafonds",
                  "url": "https://salaireclair.fr/blog/cotisations-independant-belgique-2026",
                  "date": "2026-08-22"
                }
              ]
            }
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "50,000 EUR net taxable income — a typical full-time indépendant",
        "given": {
          "$.annualIncome": 50000
        },
        "expect": {
          "$.socialContributions": 10250,
          "$.taxableIncome": 28570,
          "$.incomeTax": 8980,
          "$.netIncome": 30770
        }
      },
      {
        "description": "20,000 EUR — part-time",
        "given": {
          "$.annualIncome": 20000
        },
        "expect": {
          "$.socialContributions": 4100,
          "$.taxableIncome": 4720,
          "$.incomeTax": 1180,
          "$.netIncome": 14720
        }
      },
      {
        "description": "130,000 EUR — above the second contribution ceiling",
        "given": {
          "$.annualIncome": 130000
        },
        "expect": {
          "$.socialContributions": 20412.19,
          "$.taxableIncome": 98407.81,
          "$.incomeTax": 42823.9,
          "$.netIncome": 66763.91
        }
      }
    ]
  }
}
