{
  "$comment": "Machine-readable companion to https://valem.run/calculators/south-korea/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/south-korea/self-employed",
  "dataUrl": "https://valem.run/calculators/south-korea/self-employed.json",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "South Korea 개인사업자 model by Valem (https://valem.run/calculators/south-korea/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/south-korea/self-employed/verify",
  "country": "south-korea",
  "countryName": "South Korea",
  "formula": "self-employed",
  "formulaName": "개인사업자",
  "title": "종합소득세 — South Korea Freelancer Tax",
  "answer": "Your net income as a Korean sole proprietor is business income minus global income tax across eight bands after the basic deduction, plus local income tax charged at a flat 10% of the national tax itself.",
  "lang": "en",
  "currency": "KRW",
  "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": "국세청 — 종합소득세 세율",
      "url": "https://www.nts.go.kr/nts/cm/cntnts/cntntsView.do?mi=2227&cntntsId=7667",
      "checked": "2026-08-22"
    },
    {
      "label": "2026년 종합소득세 세율·과세표준 및 지방소득세 10%",
      "url": "https://tipkachi.com/%EC%A2%85%ED%95%A9%EC%86%8C%EB%93%9D%EC%84%B8-%EC%84%B8%EC%9C%A8-%EA%B3%BC%EC%84%B8%ED%91%9C%EC%A4%80/",
      "checked": "2026-08-22"
    }
  ],
  "terminalOutput": "netIncome",
  "inputs": [
    {
      "name": "annualBusinessIncome",
      "type": "number",
      "label": "Annual business income after expenses (KRW)",
      "minimum": 0
    }
  ],
  "outputs": [
    {
      "name": "taxableIncome",
      "type": "number",
      "formula": "$round($max([0, annualBusinessIncome - $const.basicDeduction]), 2)"
    },
    {
      "name": "nationalTax",
      "type": "number",
      "label": "National income tax",
      "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, $min([$t, $const.b4]) - $const.b3]) + $const.r5 * $max([0, $min([$t, $const.b5]) - $const.b4]) + $const.r6 * $max([0, $min([$t, $const.b6]) - $const.b5]) + $const.r7 * $max([0, $min([$t, $const.b7]) - $const.b6]) + $const.r8 * $max([0, $t - $const.b7]), 2))"
    },
    {
      "name": "localIncomeTax",
      "type": "number",
      "label": "Local income tax (10% of it)",
      "format": "number",
      "formula": "$round(nationalTax * $const.localRate, 2)"
    },
    {
      "name": "netIncome",
      "type": "number",
      "label": "Net income / year",
      "format": "number",
      "formula": "$round($max([0, annualBusinessIncome - nationalTax - localIncomeTax]), 2)"
    }
  ],
  "testCases": [
    {
      "description": "60,000,000 KRW business income — a typical full-time sole proprietor",
      "given": {
        "annualBusinessIncome": 60000000
      },
      "expect": {
        "taxableIncome": 58500000,
        "nationalTax": 8280000,
        "localIncomeTax": 828000,
        "netIncome": 50892000
      }
    },
    {
      "description": "20,000,000 KRW — part-time",
      "given": {
        "annualBusinessIncome": 20000000
      },
      "expect": {
        "taxableIncome": 18500000,
        "nationalTax": 1515000,
        "localIncomeTax": 151500,
        "netIncome": 18333500
      }
    },
    {
      "description": "200,000,000 KRW — into the 38% band",
      "given": {
        "annualBusinessIncome": 200000000
      },
      "expect": {
        "taxableIncome": 198500000,
        "nationalTax": 55490000,
        "localIncomeTax": 5549000,
        "netIncome": 138961000
      }
    }
  ],
  "spec": {
    "id": "self-employed-south-korea",
    "version": "1.0.0",
    "schema": {
      "type": "object",
      "properties": {
        "annualBusinessIncome": {
          "type": "number",
          "minimum": 0
        },
        "taxableIncome": {
          "type": "number",
          "readOnly": true
        },
        "nationalTax": {
          "type": "number",
          "readOnly": true
        },
        "localIncomeTax": {
          "type": "number",
          "readOnly": true
        },
        "netIncome": {
          "type": "number",
          "readOnly": true
        }
      },
      "required": [
        "annualBusinessIncome"
      ]
    },
    "constants": {
      "basicDeduction": 1500000,
      "localRate": 0.1,
      "b1": 14000000,
      "b2": 50000000,
      "b3": 88000000,
      "b4": 150000000,
      "b5": 300000000,
      "b6": 500000000,
      "b7": 1000000000,
      "r1": 0.06,
      "r2": 0.15,
      "r3": 0.24,
      "r4": 0.35,
      "r5": 0.38,
      "r6": 0.4,
      "r7": 0.42,
      "r8": 0.45
    },
    "defaultValues": [
      {
        "path": "$",
        "expr": "{ \"annualBusinessIncome\": 60000000 }"
      }
    ],
    "derivations": [
      {
        "path": "$.taxableIncome",
        "expr": "$round($max([0, annualBusinessIncome - $const.basicDeduction]), 2)"
      },
      {
        "path": "$.nationalTax",
        "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, $min([$t, $const.b4]) - $const.b3]) + $const.r5 * $max([0, $min([$t, $const.b5]) - $const.b4]) + $const.r6 * $max([0, $min([$t, $const.b6]) - $const.b5]) + $const.r7 * $max([0, $min([$t, $const.b7]) - $const.b6]) + $const.r8 * $max([0, $t - $const.b7]), 2))"
      },
      {
        "path": "$.localIncomeTax",
        "expr": "$round(nationalTax * $const.localRate, 2)"
      },
      {
        "path": "$.netIncome",
        "expr": "$round($max([0, annualBusinessIncome - nationalTax - localIncomeTax]), 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": "'The local income tax is the detail people forget: it is a flat 10% OF THE NATIONAL TAX, not of income, so every headline rate is really 1.1 times what the table says — a 35% band is an effective 38.5%. Only the taxpayer's own basic deduction is applied here; dependants, pension and insurance deductions and the various tax credits all reduce the bill further. National pension and health insurance premiums are compulsory, substantial and NOT deducted here. Enter income after expenses; whether you may use the simplified expense rate instead depends on your business code and prior-year revenue. Not tax advice.'"
            },
            {
              "id": "inputField",
              "type": "numericField",
              "label": "Annual business income after expenses (KRW)",
              "bind": "$.annualBusinessIncome",
              "placeholder": "60000000"
            },
            {
              "id": "tiles",
              "type": "group",
              "layout": "horizontal",
              "components": [
                {
                  "id": "netIncomeTile",
                  "type": "statTile",
                  "label": "Net income / year",
                  "bind": "$.netIncome",
                  "format": "number"
                },
                {
                  "id": "nationalTaxTile",
                  "type": "statTile",
                  "label": "National income tax",
                  "bind": "$.nationalTax",
                  "format": "number"
                },
                {
                  "id": "localIncomeTaxTile",
                  "type": "statTile",
                  "label": "Local income tax (10% of it)",
                  "bind": "$.localIncomeTax",
                  "format": "number"
                }
              ]
            },
            {
              "id": "sources",
              "type": "sourceList",
              "label": "Sources",
              "items": [
                {
                  "label": "국세청 — 종합소득세 세율",
                  "url": "https://www.nts.go.kr/nts/cm/cntnts/cntntsView.do?mi=2227&cntntsId=7667",
                  "date": "2026-08-22"
                },
                {
                  "label": "2026년 종합소득세 세율·과세표준 및 지방소득세 10%",
                  "url": "https://tipkachi.com/%EC%A2%85%ED%95%A9%EC%86%8C%EB%93%9D%EC%84%B8-%EC%84%B8%EC%9C%A8-%EA%B3%BC%EC%84%B8%ED%91%9C%EC%A4%80/",
                  "date": "2026-08-22"
                }
              ]
            }
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "60,000,000 KRW business income — a typical full-time sole proprietor",
        "given": {
          "$.annualBusinessIncome": 60000000
        },
        "expect": {
          "$.taxableIncome": 58500000,
          "$.nationalTax": 8280000,
          "$.localIncomeTax": 828000,
          "$.netIncome": 50892000
        }
      },
      {
        "description": "20,000,000 KRW — part-time",
        "given": {
          "$.annualBusinessIncome": 20000000
        },
        "expect": {
          "$.taxableIncome": 18500000,
          "$.nationalTax": 1515000,
          "$.localIncomeTax": 151500,
          "$.netIncome": 18333500
        }
      },
      {
        "description": "200,000,000 KRW — into the 38% band",
        "given": {
          "$.annualBusinessIncome": 200000000
        },
        "expect": {
          "$.taxableIncome": 198500000,
          "$.nationalTax": 55490000,
          "$.localIncomeTax": 5549000,
          "$.netIncome": 138961000
        }
      }
    ]
  }
}
