{
  "$comment": "Machine-readable companion to https://valem.run/calculators/canada/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/canada/self-employed",
  "dataUrl": "https://valem.run/calculators/canada/self-employed.json",
  "license": {
    "name": "CC BY 4.0",
    "url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Canada self-employed (federal) model by Valem (https://valem.run/calculators/canada/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/canada/self-employed/verify",
  "country": "canada",
  "countryName": "Canada",
  "formula": "self-employed",
  "formulaName": "Self-employed (federal)",
  "title": "Self-Employed Tax Calculator Canada",
  "answer": "Your federal net income as a self-employed Canadian is business income minus CPP at the full 11.9% — both halves, not the 5.95% an employee pays — plus CPP2 on the second earnings band, and then federal income tax.",
  "lang": "en",
  "currency": "CAD",
  "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": "Canada.ca — Contributions to the Canada Pension Plan",
      "url": "https://www.canada.ca/en/services/benefits/publicpensions/cpp/contributions.html",
      "checked": "2026-08-22"
    },
    {
      "label": "Canada.ca — Current year tax rates and income brackets (2026)",
      "url": "https://www.canada.ca/en/revenue-agency/services/tax/individuals/tax-rates-brackets/current-year.html",
      "checked": "2026-08-22"
    }
  ],
  "terminalOutput": "netIncome",
  "inputs": [
    {
      "name": "annualProfit",
      "type": "number",
      "label": "Annual net business income (CAD)",
      "minimum": 0
    }
  ],
  "outputs": [
    {
      "name": "cpp",
      "type": "number",
      "label": "CPP + CPP2",
      "format": "number",
      "formula": "$round($const.cppRate * $max([0, $min([annualProfit, $const.ympe]) - $const.cppExemption]) + $const.cpp2Rate * $max([0, $min([annualProfit, $const.yampe]) - $const.ympe]), 2)"
    },
    {
      "name": "taxableIncome",
      "type": "number",
      "formula": "$round($max([0, annualProfit - cpp / 2]), 2)"
    },
    {
      "name": "federalTax",
      "type": "number",
      "label": "Federal income tax",
      "format": "number",
      "formula": "($t := taxableIncome; $round($max([0, $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, $t - $const.b4]) - $const.r1 * $const.bpa]), 2))"
    },
    {
      "name": "netIncome",
      "type": "number",
      "label": "Net income / year (federal only)",
      "format": "number",
      "formula": "$round($max([0, annualProfit - cpp - federalTax]), 2)"
    }
  ],
  "testCases": [
    {
      "description": "80,000 CAD net business income — a typical full-time contractor",
      "given": {
        "annualProfit": 80000
      },
      "expect": {
        "cpp": 8892.9,
        "taxableIncome": 75553.55,
        "federalTax": 9381.2,
        "netIncome": 61725.9
      }
    },
    {
      "description": "30,000 CAD — part-time, below the first earnings ceiling",
      "given": {
        "annualProfit": 30000
      },
      "expect": {
        "cpp": 3153.5,
        "taxableIncome": 28423.25,
        "federalTax": 1675.98,
        "netIncome": 25170.52
      }
    },
    {
      "description": "200,000 CAD — above both CPP ceilings",
      "given": {
        "annualProfit": 200000
      },
      "expect": {
        "cpp": 9292.9,
        "taxableIncome": 195353.55,
        "federalTax": 38664.58,
        "netIncome": 152042.52
      }
    }
  ],
  "spec": {
    "id": "self-employed-canada",
    "version": "1.0.0",
    "schema": {
      "type": "object",
      "properties": {
        "annualProfit": {
          "type": "number",
          "minimum": 0
        },
        "cpp": {
          "type": "number",
          "readOnly": true
        },
        "taxableIncome": {
          "type": "number",
          "readOnly": true
        },
        "federalTax": {
          "type": "number",
          "readOnly": true
        },
        "netIncome": {
          "type": "number",
          "readOnly": true
        }
      },
      "required": [
        "annualProfit"
      ]
    },
    "constants": {
      "cppExemption": 3500,
      "ympe": 74600,
      "yampe": 85000,
      "cppRate": 0.119,
      "cpp2Rate": 0.08,
      "bpa": 16452,
      "b1": 58523,
      "b2": 117045,
      "b3": 181440,
      "b4": 258482,
      "r1": 0.14,
      "r2": 0.205,
      "r3": 0.26,
      "r4": 0.29,
      "r5": 0.33
    },
    "defaultValues": [
      {
        "path": "$",
        "expr": "{ \"annualProfit\": 80000 }"
      }
    ],
    "derivations": [
      {
        "path": "$.cpp",
        "expr": "$round($const.cppRate * $max([0, $min([annualProfit, $const.ympe]) - $const.cppExemption]) + $const.cpp2Rate * $max([0, $min([annualProfit, $const.yampe]) - $const.ympe]), 2)"
      },
      {
        "path": "$.taxableIncome",
        "expr": "$round($max([0, annualProfit - cpp / 2]), 2)"
      },
      {
        "path": "$.federalTax",
        "expr": "($t := taxableIncome; $round($max([0, $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, $t - $const.b4]) - $const.r1 * $const.bpa]), 2))"
      },
      {
        "path": "$.netIncome",
        "expr": "$round($max([0, annualProfit - cpp - federalTax]), 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": "'A self-employed Canadian pays BOTH halves of CPP — 11.9% rather than the 5.95% an employee sees — which is the single biggest difference from a salary, and CPP2 adds 8% on the band between the two earnings ceilings. Half of it is deductible and that is applied here. What this model leaves out is PROVINCIAL income tax, which is a second full schedule on top of the federal one and roughly doubles the tax in most provinces, so the net figure shown is substantially higher than any real one. Quebec has its own QPP and its own return. Not tax advice.'"
            },
            {
              "id": "inputField",
              "type": "numericField",
              "label": "Annual net business income (CAD)",
              "bind": "$.annualProfit",
              "placeholder": "80000"
            },
            {
              "id": "tiles",
              "type": "group",
              "layout": "horizontal",
              "components": [
                {
                  "id": "netIncomeTile",
                  "type": "statTile",
                  "label": "Net income / year (federal only)",
                  "bind": "$.netIncome",
                  "format": "number"
                },
                {
                  "id": "cppTile",
                  "type": "statTile",
                  "label": "CPP + CPP2",
                  "bind": "$.cpp",
                  "format": "number"
                },
                {
                  "id": "federalTaxTile",
                  "type": "statTile",
                  "label": "Federal income tax",
                  "bind": "$.federalTax",
                  "format": "number"
                }
              ]
            },
            {
              "id": "sources",
              "type": "sourceList",
              "label": "Sources",
              "items": [
                {
                  "label": "Canada.ca — Contributions to the Canada Pension Plan",
                  "url": "https://www.canada.ca/en/services/benefits/publicpensions/cpp/contributions.html",
                  "date": "2026-08-22"
                },
                {
                  "label": "Canada.ca — Current year tax rates and income brackets (2026)",
                  "url": "https://www.canada.ca/en/revenue-agency/services/tax/individuals/tax-rates-brackets/current-year.html",
                  "date": "2026-08-22"
                }
              ]
            }
          ]
        }
      ]
    },
    "tests": [
      {
        "description": "80,000 CAD net business income — a typical full-time contractor",
        "given": {
          "$.annualProfit": 80000
        },
        "expect": {
          "$.cpp": 8892.9,
          "$.taxableIncome": 75553.55,
          "$.federalTax": 9381.2,
          "$.netIncome": 61725.9
        }
      },
      {
        "description": "30,000 CAD — part-time, below the first earnings ceiling",
        "given": {
          "$.annualProfit": 30000
        },
        "expect": {
          "$.cpp": 3153.5,
          "$.taxableIncome": 28423.25,
          "$.federalTax": 1675.98,
          "$.netIncome": 25170.52
        }
      },
      {
        "description": "200,000 CAD — above both CPP ceilings",
        "given": {
          "$.annualProfit": 200000
        },
        "expect": {
          "$.cpp": 9292.9,
          "$.taxableIncome": 195353.55,
          "$.federalTax": 38664.58,
          "$.netIncome": 152042.52
        }
      }
    ]
  }
}
