schedule20

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2017 and later
Strict profile
s20_exact_single_request_target_value_v1
Payload schema version
0.7.0
Dependencies (run automatically)
division_c, part_i_tax, schedule31, schedule38, schedule5

Example request

Send this body to POST /api/v1/computations/batch. It satisfies the strict profile, so it works with or without the payloadContract selector.

{
  "compute": [
    "schedule20"
  ],
  "inputs": {
    "taxYear": 2025,
    "fiscalStart": "2025-01-01",
    "fiscalEnd": "2025-12-31",
    "daysInYear": 365,
    "schedule20": {
      "amountA": 100000,
      "line_510": 0,
      "line_500": 0,
      "isFirstTimeFiler": false
    },
    "isCCPC": true
  }
}

Input cells (90)

Paths are relative to the request’s inputs object; [] marks an array element.

Required says when a cell must be present. Always means every request needs it: the default boundary rejects the call when the cell is omitted or null. Strict means only a request that sends this target’s payloadContract selector needs it. See Run computations for the default boundary.

These cells are everything this target accepts. A member that is not published here, or is sent with the wrong JSON type, fails the call with a 400 naming each failing cell.

Input cells for schedule20
CellTypesRequired
daysInYearDays in the taxation year, tied to the inclusive fiscalStart-to-fiscalEnd span. 2024 is a leap year, so the exact witness period is 366 days.integerstrict
fiscalEndLast day of the taxation year. ITA s.249(1)(a) makes the taxation year the fiscal period, and the Part I rates and limits this request's dependency closure computes are day-weighted, so the engine requires the stated period instead of assuming a calendar year.stringstrict
fiscalStartFirst day of the taxation year, stated for the same reason as fiscalEnd.stringstrict
isCCPCThe corporation was a Canadian-controlled private corporation (ITA s.125(7) definition) throughout the taxation year.boolean
schedule20.amountAAmount A — Taxable income earned in Canada (brought in from T2 line 360 / amount Z).null | number | stringstrict
schedule20.amount_b_total_tax_payableAmount B, line 114 plus line 115, total federal plus provincial and territorial income tax payable, which the branch-tax calculation pro-rates at line 116. The engine computes it from lines 114 and 115.null | number | string
schedule20.carryingOnBusinessInCanadaAtYearEndITA 219(1)(j): whether the corporation carried on business in Canada at the end of the taxation year. This is narrower than jacket box 220, which establishes the Schedule 20 attachment branch without stating the year-end test. Optional so legacy persisted blobs hydrate unanswered.boolean | null
schedule20.ceasedAllOrSubstantiallyAllInsuranceBusinessInCanadaIndependent s.219(5.1) fact for a non-resident insurer. False is required before the s.219(4) no-tax route is available. True means the separate ceasing-business tax must be completed outside the current engine; null or absent is unanswered and blocks.boolean | null
schedule20.exemptCorpTypeWhen set, the corp is exempt from Part XIV under s.219(2) and no other field is required. Mutually exclusive with all other fields.null | string
schedule20.isAuthorizedForeignBankTrue when the corp is an authorized foreign bank (ITA s.218.2) — routes computation to Part 6 instead of Part 5.boolean
schedule20.isFirstTimeFilerThe filer's statement that this is the first taxation year subject to Part XIV branch tax. On its own it does not waive the prior-year line 510 and 112 openings: only a confirmed schedule20.treatyContext.firstTimePartXivFilerConfirmed selects the opening treatment, and an unconfirmed true raises s20_first_time_status_unproven.boolean | nullstrict
schedule20.line_099null | string
schedule20.line_100null | string
schedule20.line_101null | string
schedule20.line_103null | string
schedule20.line_104null | string
schedule20.line_105null | string
schedule20.line_106null | string
schedule20.line_107null | string
schedule20.line_108null | string
schedule20.line_109null | string
schedule20.line_110null | string
schedule20.line_111null | string
schedule20.line_112null | string
schedule20.line_113null | string
schedule20.line_114null | string
schedule20.line_115null | string
schedule20.line_116null | string
schedule20.line_117null | string
schedule20.line_118null | string
schedule20.line_120null | string
schedule20.line_121null | string
schedule20.line_122null | string
schedule20.line_123null | string
schedule20.line_124null | string
schedule20.line_125null | string
schedule20.line_126null | string
schedule20.line_500null | number | stringstrict
schedule20.line_510null | number | stringstrict
schedule20.line_520null | string
schedule20.line_650650 — Average of column K across periods. Computed.null | string
schedule20.line_655655 — Total Reg 808(8)(b) liabilities (excluding liabilities already in last-period col E).null | string
schedule20.line_660660 — Qualified AFB investments = max(0, 650 − 655). Computed.null | string
schedule20.line_665665 - Elective AFB allowance claim from nil through the computed ceiling; flows to line 118.null | string
schedule20.part5null | object
schedule20.part5.line_200200 — Cost of land in Canada (excluding excluded land).null | string
schedule20.part5.line_201201 — Cost of depreciable property in Canada.null | string
schedule20.part5.line_203203 — Non-principal-business corp undeducted CEE.null | string
schedule20.part5.line_204204 — Cumulative CDE at YE less s.66.2(2) deduction.null | string
schedule20.part5.line_205205 — Cumulative COGPE at YE less s.66.4(2) deduction.null | string
schedule20.part5.line_206206 — Cost of debts receivable on lines 200/201 dispositions.null | string
schedule20.part5.line_207207 — Cost of inventory property (non-Canadian-resource).null | string
schedule20.part5.line_208208 — Cost of debts receivable / loans in lending business.null | string
schedule20.part5.line_210210 — Cash + short-term Canadian-arm's-length cost amounts.null | string
schedule20.part5.line_211211 — 4/3 × average monthly cost of line-210 property.null | string
schedule20.part5.line_212212 — Allowable liquid assets = min(210, 211). Computed.null | string
schedule20.part5.line_213213 — Subtotal of lines 200-212. Computed.null | string
schedule20.part5.line_214214 — Doubtful debts / guarantees / unpaid amounts reserve.null | string
schedule20.part5.line_215215 — Reserves for capital gains on line-206 debt.null | string
schedule20.part5.line_216216 — Amounts owing re acquisitions / expenses.null | string
schedule20.part5.line_217217 — Proportion of interest-bearing obligation × deductible-interest ratio.null | string
schedule20.part5.line_218218 — Unpaid federal Part I tax.null | string
schedule20.part5.line_219219 — Unpaid provincial / territorial income tax.null | string
schedule20.part5.line_221221 — Subtotal of lines 214-219. Computed.null | string
schedule20.part5.line_222222 — Qualified investments = max(0, 213 − 221). Computed.null | string
schedule20.part5.line_223223 - Elective allowance claim from nil through the computed ceiling; flows to line 118.null | string
schedule20.part6PeriodSeriesConfirmedITA 20.2(1): confirmation that Part 6 contains the complete calculation- period designation for the year and satisfies the prior-year consistency condition or a written Ministerial agreement. null = unanswered.boolean | null
schedule20.part6Periodsarray
schedule20.part6Periods[].col_a_period_endColumn A — Period end date (yyyy-mm-dd).null | string
schedule20.part6Periods[].col_b_bank_assetsColumn B — Bank's assets at end of period.null | string
schedule20.part6Periods[].col_d_cost_amountColumn D — Cost amount at end of period.null | string
schedule20.part6Periods[].col_e_liabilitiesColumn E — Liabilities to other persons / partnerships at end.null | string
schedule20.part6Periods[].col_f_branch_advancesColumn F — Branch advances at end.null | string
schedule20.part6Periods[].col_h_amount_claimed_s_20_2Column H — Amount claimed under s.20.2(3)(b)(ii)(A) (≤ B − (C + G)).null | string
schedule20.principalBusinessThroughoutYearThe ITA 219(2)(b) principal-business finding, throughout the year. Not a CRA box, and not a mirror of `exemptCorpType`: subsection 219(2) exempts only a corporation whose principal business was, throughout the year, transportation, communications or mining iron ore in Canada, and the `exemptCorpType` dropdown is a routing label that proves neither the finding nor its persistence. null is unanswered and leaves Part XIV computed on the ordinary basis; it is never read as agreement with `exemptCorpType`.null | string
schedule20.treatyContextNRES-A — the trusted evidence proving the line 500 claim and the rate G reduction. Not a CRA box: it is the practitioner's record of the treaty text and findings the engine gates on. null = no evidence, which keeps the 25% statutory rate and neutralizes a line 500 claim.null | object
schedule20.treatyContext.accumulatedEarningsExemptionConfirmedDirect-treaty track only — the agreement grants an accumulated-earnings exemption (Canada-US Article X(6)(d)).boolean | null
schedule20.treatyContext.agreementAppliesOnTaxYearEndRelief is year-specific: the agreement must apply "on the last day of that year" (ITA 219.2).boolean | null
schedule20.treatyContext.agreementHasForceOfLawInCanadaITA 219.2's opening words require an agreement "that has the force of law in Canada"; the direct-treaty track needs the same.boolean | null
schedule20.treatyContext.countryThe other Contracting State.null | string
schedule20.treatyContext.firstTimePartXivFilerConfirmedExplicit filing-history attestation. False is an answered "No"; null is unanswered and cannot open the first-year allowance.boolean | null
schedule20.treatyContext.legalBasisWhich of the two mutually exclusive tracks the relief rests on.null | string
schedule20.treatyContext.paragraph219_2aSatisfiedITA 219.2(a) — the agreement "does not limit the rate of tax under this Part on corporations resident in that other country".boolean | null
schedule20.treatyContext.paragraph219_2bSatisfiedITA 219.2(b) — the agreement "provides that, where a dividend is paid by a corporation resident in Canada to a corporation resident in that other country that owns all of the shares of the capital stock of the corporation resident in Canada, the rate of tax imposed on the dividend shall not exceed a specified rate".boolean | null
schedule20.treatyContext.provisionThe operative provision, protocols included.null | string
schedule20.treatyContext.treatyEntitlementConfirmedThis corporation is entitled to the relief under that agreement.boolean | null
schedule20.treatyContext.verifiedAccumulatedEarningsExemptionLimitThe verified remaining exemption. Article X(6)(d) states "$500,000 ... less any amounts deducted by the company, or by an associated company with respect to the same or a similar business, under this subparagraph (d)" — a cumulative drawdown shared across associated companies, not a fresh annual amount, so this is a ceiling on the line 500 claim.null | string
schedule20.treatyContext.verifiedBranchTaxRatePctThe verified branch-tax rate as a decimal percent in [0, 25]. Governs; a disagreeing raw rate G blocks (`s20_treaty_rate_context_mismatch`).null | string
schedule20.treatyRatePctAmount G — Treaty rate as decimal percent in [0, 25]. Default 25 (s.219(1)); override per s.219.2 treaty mechanism. COMPARISON-ONLY: `treatyContext.verifiedBranchTaxRatePct` governs, and a disagreement between the two blocks filing.null | string
taxYearFour-digit taxation year accepted by the batch reader. Historical applicability is decided by the requested form; years after 2027 fail at the shared verified-rate horizon.integer | stringalways
Strict profile accepted values (10 of 90 cells)

These values apply only when the request sends this target’s payloadContract selector. A cell marked pinned must equal the value shown to satisfy the strict profile. On the default boundary the same cell accepts any value of its published type.

Strict profile accepted values for schedule20
CellAccepted values
daysInYear1 to 1000000000000000
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
schedule20.amountA-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule20.exemptCorpTypeone of "transportation", "communications", "iron_ore_mining", "s149_exempt", "insurance_not_electing"
schedule20.line_500-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule20.line_510-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule20.principalBusinessThroughoutYearone of "transportation", "communications", "iron_ore_mining", "other"
schedule20.treatyContext.legalBasisone of "direct_treaty", "section_219_2"
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (97)

Paths are relative to this target’s result object in the response.

Output cells for schedule20
CellTypes
amount_a_taxable_income_earned_in_canadastring
amount_b_total_tax_payablestring
amount_c_purchaser_consideration_sumstring
amount_d_base_amount_with_additionsstring
amount_e_deductionsstring
amount_f_taxable_basestring
amount_g_tax_rate_decimalstring
amount_g_tax_rate_pctstring
amount_h_exemption_claimedstring
amount_l_part_6_column_k_totalstring
exempt_corp_typearray | boolean | null | number | object | string
fired_gatesobject
flows_to_t2_jacket_line_728string
is_authorized_foreign_bankboolean
line_099string
line_100string
line_101string
line_103string
line_104string
line_105string
line_106string
line_107string
line_108string
line_109string
line_110string
line_111string
line_112string
line_113string
line_114string
line_115string
line_116string
line_117string
line_118string
line_120string
line_121string
line_122string
line_123string
line_124string
line_125string
line_126string
line_223string
line_500string
line_510string
line_520string
line_665string
part5_projection.line_200string
part5_projection.line_201string
part5_projection.line_203string
part5_projection.line_204string
part5_projection.line_205string
part5_projection.line_206string
part5_projection.line_207string
part5_projection.line_208string
part5_projection.line_210string
part5_projection.line_211string
part5_projection.line_212string
part5_projection.line_213string
part5_projection.line_214string
part5_projection.line_215string
part5_projection.line_216string
part5_projection.line_217string
part5_projection.line_218string
part5_projection.line_219string
part5_projection.line_221string
part5_projection.line_222string
part5_projection.line_223string
part6_projection.amount_l_part_6_column_k_totalstring
part6_projection.line_650string
part6_projection.line_655string
part6_projection.line_660string
part6_projection.line_665string
part6_projection.periodsarray
part_xiv_tax_payablestring
provisionalboolean
readyboolean
warnings[].boxThe printed line the reconciliation is about.string
warnings[].citation.displayThe citation as it is shown to a preparer.string
warnings[].citation.kindThe authority family the section belongs to.string
warnings[].citation.sectionThe cited provision.string
warnings[].codeWhich continuity obligation this row is about.string
warnings[].gate_idAlways null: the obligation is cited to its authority, not to a registered form gate.array | boolean | null | number | object | string
warnings[].messageThe preparer-facing statement of the break.string
warnings[].severityAlways an error: a divergent or unprovable opening blocks the return.string
warnings[].citation.applies_to_boxes[]string
warnings[].citation.cra_text_verbatimstring
warnings[].citation.form_idstring
warnings[].citation.form_revisionstring
warnings[].citation.gate_idstring
warnings[].citation.rulestring
warnings[].citation.sourcestring
warnings[].citation.source_urlstring
warnings[].citation.verified_atstring
warnings[].actualThe opening amount this return states.number
warnings[].expectedThe closing amount the authenticated prior filed return proves, or null when no filed projection exists to reconcile against.null | number
warnings[].keyThe reconciled balance, named for a preparer.string
warnings[].kindAlways the validation family.string
warnings[].reasonWhat broke and what to do about it.string
Filemark | schedule20 cells