{
  "$comment": "Machine-readable companion to https://valem.run/calculators/bulgaria/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/bulgaria/self-employed",
  "dataUrl": "https://valem.run/calculators/bulgaria/self-employed.json",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Bulgaria свободна професия model by Valem (https://valem.run/calculators/bulgaria/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/bulgaria/self-employed/verify",
  "country": "bulgaria",
  "countryName": "Bulgaria",
  "formula": "self-employed",
  "formulaName": "Свободна професия",
  "title": "Свободна Професия — Bulgaria Freelancer Tax",
  "answer": "Your net income as a Bulgarian freelancer is revenue minus a statutory 25% deemed expense allowance, social and health contributions on a base clamped between a statutory floor and ceiling, and the 10% flat 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": "НАП — Свободни професии: облагане по чл. 29 ЗДДФЛ с 25% нормативно признати разходи",
      "url": "https://nra.bg/wps/portal/nra/taxes/godishen-danak-varhu-dohdite/svobodni-profesii",
      "checked": "2026-08-22"
    },
    {
      "label": "НАП — Осигурявам се сам: вноски за самоосигуряващи се лица (27,8% без ОЗМ)",
      "url": "https://nra.bg/wps/portal/nra/osiguryavane/osiguryavam-se-sam",
      "checked": "2026-08-22"
    },
    {
      "label": "Минимален и максимален осигурителен доход 2026 (620,20 / 2 300 EUR от 1 август)",
      "url": "https://kik-info.com/spravochnik/mod/",
      "checked": "2026-08-22"
    }
  ],
  "terminalOutput": "netIncome",
  "inputs": [
    {
      "name": "annualRevenue",
      "type": "number",
      "label": "Annual revenue (EUR)",
      "minimum": 0
    }
  ],
  "outputs": [
    {
      "name": "deemedExpenses",
      "type": "number",
      "label": "Deemed expenses (25%)",
      "format": "number",
      "formula": "$round(annualRevenue * $const.deemedExpenseRate, 2)"
    },
    {
      "name": "incomeAfterExpenses",
      "type": "number",
      "formula": "$round(annualRevenue - deemedExpenses, 2)"
    },
    {
      "name": "insurableBase",
      "type": "number",
      "label": "Insurable base",
      "format": "number",
      "formula": "$round($min([$max([incomeAfterExpenses, $const.minAnnualBase]), $const.maxAnnualBase]), 2)"
    },
    {
      "name": "contributions",
      "type": "number",
      "label": "Social + health contributions",
      "format": "number",
      "formula": "$round(insurableBase * $const.contributionRate, 2)"
    },
    {
      "name": "incomeTax",
      "type": "number",
      "label": "Income tax (10%)",
      "format": "number",
      "formula": "$round($const.taxRate * $max([0, incomeAfterExpenses - contributions]), 2)"
    },
    {
      "name": "netIncome",
      "type": "number",
      "label": "Net income / year",
      "format": "number",
      "formula": "$round($max([0, annualRevenue - contributions - incomeTax]), 2)"
    }
  ],
  "testCases": [
    {
      "description": "30,000 EUR revenue — inside both insurable-base limits",
      "given": {
        "annualRevenue": 30000
      },
      "expect": {
        "deemedExpenses": 7500,
        "incomeAfterExpenses": 22500,
        "insurableBase": 22500,
        "contributions": 6255,
        "incomeTax": 1624.5,
        "netIncome": 22120.5
      }
    },
    {
      "description": "50,000 EUR revenue — contributions stop at the maximum insurable income",
      "given": {
        "annualRevenue": 50000
      },
      "expect": {
        "deemedExpenses": 12500,
        "incomeAfterExpenses": 37500,
        "insurableBase": 27600,
        "contributions": 7672.8,
        "incomeTax": 2982.72,
        "netIncome": 39344.48
      }
    },
    {
      "description": "6,000 EUR revenue — the base is lifted to the statutory minimum",
      "given": {
        "annualRevenue": 6000
      },
      "expect": {
        "incomeAfterExpenses": 4500,
        "insurableBase": 7442.4,
        "contributions": 2068.99
      }
    }
  ],
  "spec": {
    "id": "self-employed-bulgaria",
    "version": "1.0.0",
    "schema": {
      "type": "object",
      "properties": {
        "annualRevenue": {
          "type": "number",
          "minimum": 0
        },
        "deemedExpenses": {
          "type": "number",
          "readOnly": true
        },
        "incomeAfterExpenses": {
          "type": "number",
          "readOnly": true
        },
        "insurableBase": {
          "type": "number",
          "readOnly": true
        },
        "contributions": {
          "type": "number",
          "readOnly": true
        },
        "incomeTax": {
          "type": "number",
          "readOnly": true
        },
        "netIncome": {
          "type": "number",
          "readOnly": true
        }
      },
      "required": [
        "annualRevenue"
      ]
    },
    "constants": {
      "deemedExpenseRate": 0.25,
      "contributionRate": 0.278,
      "minAnnualBase": 7442.4,
      "maxAnnualBase": 27600,
      "taxRate": 0.1
    },
    "defaultValues": [
      {
        "path": "$",
        "expr": "{ \"annualRevenue\": 30000 }"
      }
    ],
    "derivations": [
      {
        "path": "$.deemedExpenses",
        "expr": "$round(annualRevenue * $const.deemedExpenseRate, 2)"
      },
      {
        "path": "$.incomeAfterExpenses",
        "expr": "$round(annualRevenue - deemedExpenses, 2)"
      },
      {
        "path": "$.insurableBase",
        "expr": "$round($min([$max([incomeAfterExpenses, $const.minAnnualBase]), $const.maxAnnualBase]), 2)"
      },
      {
        "path": "$.contributions",
        "expr": "$round(insurableBase * $const.contributionRate, 2)"
      },
      {
        "path": "$.incomeTax",
        "expr": "$round($const.taxRate * $max([0, incomeAfterExpenses - contributions]), 2)"
      },
      {
        "path": "$.netIncome",
        "expr": "$round($max([0, annualRevenue - contributions - 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 assumes",
              "text": "'Amounts are in euro: Bulgaria adopted the euro in 2026. The 27.8% rate is the one for a self-insured person who has NOT elected general sickness and maternity cover, which costs a further 3.5%. The insurable base limits stepped up on 1 August 2026 (from 550.66 to 620.20 EUR a month at the floor, and from 2,111.64 to 2,300 EUR at the ceiling); this model applies the post-August limits to the whole year, so a full 2026 figure will differ slightly. The 25% deemed expense allowance is the one for liberal professions — authors and lawyers get 40%, farmers 60%. Not tax advice.'"
            },
            {
              "id": "revenueField",
              "type": "numericField",
              "label": "Annual revenue (EUR)",
              "bind": "$.annualRevenue",
              "placeholder": "30000"
            },
            {
              "id": "tiles",
              "type": "group",
              "layout": "horizontal",
              "components": [
                {
                  "id": "netTile",
                  "type": "statTile",
                  "label": "Net income / year",
                  "bind": "$.netIncome",
                  "format": "number"
                },
                {
                  "id": "expensesTile",
                  "type": "statTile",
                  "label": "Deemed expenses (25%)",
                  "bind": "$.deemedExpenses",
                  "format": "number"
                },
                {
                  "id": "baseTile",
                  "type": "statTile",
                  "label": "Insurable base",
                  "bind": "$.insurableBase",
                  "format": "number"
                },
                {
                  "id": "contribTile",
                  "type": "statTile",
                  "label": "Social + health contributions",
                  "bind": "$.contributions",
                  "format": "number"
                },
                {
                  "id": "taxTile",
                  "type": "statTile",
                  "label": "Income tax (10%)",
                  "bind": "$.incomeTax",
                  "format": "number"
                }
              ]
            },
            {
              "id": "sources",
              "type": "sourceList",
              "label": "Sources",
              "items": [
                {
                  "label": "НАП — Свободни професии: облагане по чл. 29 ЗДДФЛ с 25% нормативно признати разходи",
                  "url": "https://nra.bg/wps/portal/nra/taxes/godishen-danak-varhu-dohdite/svobodni-profesii",
                  "date": "2026-08-22"
                },
                {
                  "label": "НАП — Осигурявам се сам: вноски за самоосигуряващи се лица (27,8% без ОЗМ)",
                  "url": "https://nra.bg/wps/portal/nra/osiguryavane/osiguryavam-se-sam",
                  "date": "2026-08-22"
                },
                {
                  "label": "Минимален и максимален осигурителен доход 2026 (620,20 / 2 300 EUR от 1 август)",
                  "url": "https://kik-info.com/spravochnik/mod/",
                  "date": "2026-08-22"
                }
              ]
            }
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "30,000 EUR revenue — inside both insurable-base limits",
        "given": {
          "$.annualRevenue": 30000
        },
        "expect": {
          "$.deemedExpenses": 7500,
          "$.incomeAfterExpenses": 22500,
          "$.insurableBase": 22500,
          "$.contributions": 6255,
          "$.incomeTax": 1624.5,
          "$.netIncome": 22120.5
        }
      },
      {
        "description": "50,000 EUR revenue — contributions stop at the maximum insurable income",
        "given": {
          "$.annualRevenue": 50000
        },
        "expect": {
          "$.deemedExpenses": 12500,
          "$.incomeAfterExpenses": 37500,
          "$.insurableBase": 27600,
          "$.contributions": 7672.8,
          "$.incomeTax": 2982.72,
          "$.netIncome": 39344.48
        }
      },
      {
        "description": "6,000 EUR revenue — the base is lifted to the statutory minimum",
        "given": {
          "$.annualRevenue": 6000
        },
        "expect": {
          "$.incomeAfterExpenses": 4500,
          "$.insurableBase": 7442.4,
          "$.contributions": 2068.99
        }
      }
    ]
  }
}
