Menu

Tax loss carry-forwards

The underskottsregister (IL 40 kap.): per fiscal year the deficit brought forward (INK2S 4.14 a), the spärrar after an ownership change (4.14 b, 4.14 c) and the deficit carried to the next year. Save a year with its spärrar computed; the year-end tax adjustments prefill 4.14 a from it.

Endpoints


GET /api/v1/companies/:companyId/tax-loss-carryforwards

tax-loss-carryforwards.list · scope reports:read

The underskottsregister: prior years' tax losses per fiscal year (IL 40 kap.), oldest first.

Each fiscal year with its deficit brought forward (INK2S 4.14 a), the spärrar (4.14 b beloppsspärr and similar, 4.14 c koncernbidragsspärr), the result before the deduction, and the deficit carried forward to the next year. Each year is checked against the one before it; warnings say when 4.14 a differs from what the previous year carries forward, when a spärr could not be computed, or when an earlier year changed. Read-only.

Use when: Preparing the tax provision or INK2, or checking how a company's tax losses roll forward.

Don't use for: The tax return itself (GET /reports/ink2) or booking anything (the register books nothing).

Pitfalls

  • LOSS_CARRYFORWARD_UNAVAILABLE: the register is not switched on for this company.
  • LOSS_CARRYFORWARD_FORM_UNSUPPORTED: only for companies that file INK2 (aktiebolag, ekonomisk förening).
  • Amounts are kronor and öre; INK2 takes whole kronor.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Response fields

NameTypeDescription
tax_loss_carryforwards[].tax_loss_carryforward_idstring
tax_loss_carryforwards[].fiscal_period_idstring
tax_loss_carryforwards[].fiscal_periodobject
tax_loss_carryforwards[].fiscal_yearnumberThe calendar year the fiscal year ends in.
tax_loss_carryforwards[].brought_forwardnumberINK2S 4.14 a: the whole deficit brought forward.
tax_loss_carryforwards[].source"manual" | "ink2_history" | "tax_assessment" | "computed"
tax_loss_carryforwards[].result_before_deficitnumber | nullThe year's result on INK2S before 4.14; negative for a deficit.
tax_loss_carryforwards[].group_contributions_receivednumber
tax_loss_carryforwards[].amount_block_reductionnumberINK2S 4.14 b: cut off for good.
tax_loss_carryforwards[].amount_block_manualbooleanTrue when 4.14 b was stated rather than computed.
tax_loss_carryforwards[].group_block_reductionnumberINK2S 4.14 c: held back by the koncernbidragsspärr this year.
tax_loss_carryforwards[].group_block_manualboolean
tax_loss_carryforwards[].deductiblenumber4.14 a less 4.14 b and 4.14 c: what the year's tax adjustments deduct.
tax_loss_carryforwards[].taxable_resultnumber | nullINK2S 4.15 when positive, 4.16 when negative.
tax_loss_carryforwards[].carried_forwardnumber | nullTo the next year's 4.14 a (INK2 1.2: 4.16 plus 4.14 c).
tax_loss_carryforwards[].ownership_changeobject | null
tax_loss_carryforwards[].group_block_activebooleanWhether a koncernbidragsspärr covers this year.
tax_loss_carryforwards[].notestring | null
tax_loss_carryforwards[].document_idstring | null
tax_loss_carryforwards[].tax_assessment_notice_idstring | null
tax_loss_carryforwards[].updated_atstring | null
tax_loss_carryforwards[].warningsobject[]

Example response

{
  "data": {
    "tax_loss_carryforwards": [
      {
        "tax_loss_carryforward_id": "5d1e…",
        "fiscal_period_id": "7c2b…",
        "fiscal_period": {
          "name": "Räkenskapsår 2026",
          "period_start": "2026-01-01",
          "period_end": "2026-12-31"
        },
        "fiscal_year": 2026,
        "brought_forward": 1000000,
        "source": "tax_assessment",
        "result_before_deficit": 100000,
        "group_contributions_received": 0,
        "amount_block_reduction": 400000,
        "amount_block_manual": false,
        "group_block_reduction": 0,
        "group_block_manual": false,
        "deductible": 600000,
        "taxable_result": -500000,
        "carried_forward": 500000,
        "ownership_change": {
          "date": "2026-06-01",
          "source": "manual",
          "amount_block": true,
          "acquisition_cost": 250000,
          "capital_contributions": 50000,
          "amount_block_limit": 600000,
          "group_block": false,
          "group_block_last_year": null
        },
        "group_block_active": false,
        "note": null,
        "document_id": null,
        "tax_assessment_notice_id": "9a4f…",
        "updated_at": "2026-10-29T08:00:00.000Z",
        "warnings": []
      }
    ]
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

GET /api/v1/companies/:companyId/tax-loss-carryforwards/:id

tax-loss-carryforwards.get · scope reports:read

One fiscal year of the underskottsregister, checked against the year before it.

The same year as the list answers, by its tax_loss_carryforward_id. Read-only.

Use when: You hold a tax_loss_carryforward_id and need its figures and warnings.

Don't use for: Finding the year for a fiscal period (list the register instead).

Pitfalls

  • LOSS_CARRYFORWARD_UNAVAILABLE: the register is not switched on for this company.
  • LOSS_CARRYFORWARD_NOT_FOUND: the id is not this company's.

Risk: low · Idempotent: yes · Reversible: no · Dry-run supported: no

Response fields

NameTypeDescription
tax_loss_carryforward_idstring
fiscal_period_idstring
fiscal_periodobject
fiscal_yearnumberThe calendar year the fiscal year ends in.
brought_forwardnumberINK2S 4.14 a: the whole deficit brought forward.
source"manual" | "ink2_history" | "tax_assessment" | "computed"
result_before_deficitnumber | nullThe year's result on INK2S before 4.14; negative for a deficit.
group_contributions_receivednumber
amount_block_reductionnumberINK2S 4.14 b: cut off for good.
amount_block_manualbooleanTrue when 4.14 b was stated rather than computed.
group_block_reductionnumberINK2S 4.14 c: held back by the koncernbidragsspärr this year.
group_block_manualboolean
deductiblenumber4.14 a less 4.14 b and 4.14 c: what the year's tax adjustments deduct.
taxable_resultnumber | nullINK2S 4.15 when positive, 4.16 when negative.
carried_forwardnumber | nullTo the next year's 4.14 a (INK2 1.2: 4.16 plus 4.14 c).
ownership_changeobject | null
group_block_activebooleanWhether a koncernbidragsspärr covers this year.
notestring | null
document_idstring | null
tax_assessment_notice_idstring | null
updated_atstring | null
warningsobject[]

Example response

{
  "data": {
    "tax_loss_carryforward_id": "5d1e…",
    "fiscal_period_id": "7c2b…",
    "fiscal_period": {
      "name": "Räkenskapsår 2026",
      "period_start": "2026-01-01",
      "period_end": "2026-12-31"
    },
    "fiscal_year": 2026,
    "brought_forward": 1000000,
    "source": "tax_assessment",
    "result_before_deficit": 100000,
    "group_contributions_received": 0,
    "amount_block_reduction": 400000,
    "amount_block_manual": false,
    "group_block_reduction": 0,
    "group_block_manual": false,
    "deductible": 600000,
    "taxable_result": -500000,
    "carried_forward": 500000,
    "ownership_change": {
      "date": "2026-06-01",
      "source": "manual",
      "amount_block": true,
      "acquisition_cost": 250000,
      "capital_contributions": 50000,
      "amount_block_limit": 600000,
      "group_block": false,
      "group_block_last_year": null
    },
    "group_block_active": false,
    "note": null,
    "document_id": null,
    "tax_assessment_notice_id": "9a4f…",
    "updated_at": "2026-10-29T08:00:00.000Z",
    "warnings": []
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}

POST /api/v1/companies/:companyId/tax-loss-carryforwards

tax-loss-carryforwards.save · scope bookkeeping:write

Save one fiscal year of the underskottsregister: the deficit brought forward, an ownership change and the year's result.

Inserts or replaces the year by fiscal_period_id. 4.14 b (beloppsspärr: what exceeds 300 % of the utgift less kapitaltillskott, IL 40 kap. 15-16 §§) and 4.14 c (koncernbidragsspärr: the old deficit capped at the year's överskott without koncernbidrag, 40:18) are computed unless stated, and the deficit carried forward follows. The year's tax adjustments then prefill 4.14 a from it (4.14 a less 4.14 b and c). Books nothing. Dry-runnable: ?dry_run=true answers what would be stored.

Use when: Entering the deficit from the previous year's slutskattebesked or INK2, recording an ownership change, or closing a year's figures after bokslut.

Don't use for: Booking tax (the year-end dispositions) or filing INK2 (upload the SRU files at skatteverket.se).

Pitfalls

  • LOSS_CARRYFORWARD_UNAVAILABLE: the register is not switched on for this company.
  • LOSS_CARRYFORWARD_FORM_UNSUPPORTED: only for companies that file INK2 (aktiebolag, ekonomisk förening).
  • FISCAL_PERIOD_NOT_FOUND: the fiscal_period_id is not this company's.
  • LOSS_CARRYFORWARD_CHANGE_OUTSIDE_YEAR: the ownership change must be inside the fiscal year it is saved on.
  • LOSS_CARRYFORWARD_REDUCTIONS_EXCEED: stated 4.14 b and 4.14 c together exceed 4.14 a.
  • Without acquisition_cost the beloppsspärr is not computed and nothing is cut; the answer warns (amount_block_missing_cost).
  • Ownership changes are entered by hand; the 40:17 a overriding-reason rule, ackord and konkurs go in as a stated 4.14 b.

Risk: medium · Idempotent: yes · Reversible: yes · Dry-run supported: yes · Stage for approval: yes (?stage=true)

Query parameters

NameTypeRequiredDescription
dry_runstringnotrue (any case) previews the write without committing it, like the X-Dry-Run: true header. Any other value commits.
stagestringnotrue stages the write for approval instead of committing it: 202 with the pending operation to approve via POST /pending-operations/{id}/approve. Absent or false commits; other values are 400. A reason in the body (why you propose it, at most 500 characters) is shown to the approver as agent_reason and kept with the decision.

Request body

NameTypeRequiredDescription
fiscal_period_idstringyesThe fiscal year (fiscal_period_id).
brought_forwardnumberyesINK2S 4.14 a: the whole deficit brought forward from the previous year, spärrat or not.
source"manual" | "ink2_history" | "tax_assessment" | "computed"yesWhere brought_forward comes from: manual, ink2_history (the previous year's declaration), tax_assessment (the slutskattebesked) or computed (the previous year in this register).
result_before_deficitnumber | nullnoThe year's result on INK2S before 4.14 (4.1 to 4.13); negative for a deficit. Omit while unknown.
group_contributions_receivednumbernoKoncernbidrag in that result the koncernbidragsspärr keeps out (40:18-19). Default 0.
amount_block_reductionnumber | nullnoA stated 4.14 b (40:17 a, ackord, konkurs or a checked figure). Omit to compute the beloppsspärr.
group_block_reductionnumber | nullnoA stated 4.14 c. Omit to compute the koncernbidragsspärr.
ownership_changeobject | nullnoAn ownership change in this fiscal year that triggers a spärr. Omit when there is none.
notestring | nullno
document_idstring | nullnoAn archive document backing the figures (document_id).
tax_assessment_notice_idstring | nullnoThe slutskattebesked the figures come from (tax_assessment_notice_id).

Response fields

NameTypeDescription
tax_loss_carryforward_idstring
fiscal_period_idstring
fiscal_periodobject
fiscal_yearnumberThe calendar year the fiscal year ends in.
brought_forwardnumberINK2S 4.14 a: the whole deficit brought forward.
source"manual" | "ink2_history" | "tax_assessment" | "computed"
result_before_deficitnumber | nullThe year's result on INK2S before 4.14; negative for a deficit.
group_contributions_receivednumber
amount_block_reductionnumberINK2S 4.14 b: cut off for good.
amount_block_manualbooleanTrue when 4.14 b was stated rather than computed.
group_block_reductionnumberINK2S 4.14 c: held back by the koncernbidragsspärr this year.
group_block_manualboolean
deductiblenumber4.14 a less 4.14 b and 4.14 c: what the year's tax adjustments deduct.
taxable_resultnumber | nullINK2S 4.15 when positive, 4.16 when negative.
carried_forwardnumber | nullTo the next year's 4.14 a (INK2 1.2: 4.16 plus 4.14 c).
ownership_changeobject | null
group_block_activebooleanWhether a koncernbidragsspärr covers this year.
notestring | null
document_idstring | null
tax_assessment_notice_idstring | null
updated_atstring | null
warningsobject[]

Example request

{
  "fiscal_period_id": "7c2b…",
  "brought_forward": 1000000,
  "source": "tax_assessment",
  "tax_assessment_notice_id": "9a4f…",
  "result_before_deficit": 100000,
  "ownership_change": {
    "date": "2026-06-01",
    "amount_block": true,
    "acquisition_cost": 250000,
    "capital_contributions": 50000,
    "group_block": false
  }
}

Example response

{
  "data": {
    "tax_loss_carryforward_id": "5d1e…",
    "fiscal_period_id": "7c2b…",
    "fiscal_period": {
      "name": "Räkenskapsår 2026",
      "period_start": "2026-01-01",
      "period_end": "2026-12-31"
    },
    "fiscal_year": 2026,
    "brought_forward": 1000000,
    "source": "tax_assessment",
    "result_before_deficit": 100000,
    "group_contributions_received": 0,
    "amount_block_reduction": 400000,
    "amount_block_manual": false,
    "group_block_reduction": 0,
    "group_block_manual": false,
    "deductible": 600000,
    "taxable_result": -500000,
    "carried_forward": 500000,
    "ownership_change": {
      "date": "2026-06-01",
      "source": "manual",
      "amount_block": true,
      "acquisition_cost": 250000,
      "capital_contributions": 50000,
      "amount_block_limit": 600000,
      "group_block": false,
      "group_block_last_year": null
    },
    "group_block_active": false,
    "note": null,
    "document_id": null,
    "tax_assessment_notice_id": "9a4f…",
    "updated_at": "2026-10-29T08:00:00.000Z",
    "warnings": []
  },
  "meta": {
    "request_id": "req_…",
    "api_version": "2026-05-12"
  }
}