schedule67

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2022–2026
Strict profile
s67_2022_standalone_bank_crd_target_value_v1
Payload schema version
0.8.0
Dependencies (run automatically)
none

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": [
    "schedule67"
  ],
  "inputs": {
    "taxYear": 2022,
    "schedule67": {
      "corporationName": "Northstar Bank of Canada",
      "businessNumber": "222333445",
      "currentTaxYearEnd": "2022-12-31",
      "hasMultiple2022TaxYears": false,
      "isBank": true,
      "isRelatedToOtherGroupMemberAtEndOf2021": false,
      "taxableIncome2020": 2000000000,
      "taxableIncome2021": 2000000000,
      "wasBankOrLifeInsurerGroupMemberInA2021TaxYear": true,
      "totalDaysIn2020TaxYears": 365,
      "totalDaysIn2021TaxYears": 365
    }
  }
}

Input cells (33)

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 schedule67
CellTypesRequired
schedule67.businessNumber9-digit BN or 15-char RC account; 'NR' is NOT permitted here (only Part 1 col 105 row-BNs allow 'NR').null | stringstrict
schedule67.corporationNameCorporation legal name (header field).null | stringstrict
schedule67.currentTaxYearEndTY-end YYYY-MM-DD. Engine uses to determine active instalment.null | stringstrict
schedule67.filed2022AmountDPerInstalmentFiled 2022 Schedule 67 amount D, one-fifth instalment.null | number
schedule67.filed2022CrdDeterminationAttestedConfirm that the three filed-2022 values below were taken from the filed Schedule 67. Required only when the internal filed-2022 determination is unavailable, such as first-year onboarding.boolean | null
schedule67.filed2022IncomeDeductionLimitFiled 2022 income-deduction limit used in the s.191.5(2) calculation.null | number
schedule67.filed2022Line230CrdPayableTotalFiled 2022 Schedule 67 line 230, total CRD payable.null | number
schedule67.groupAllocationAgreementPer-row group allocation agreement (cols 100/105/110). Total must not exceed $1B per s.191.5(5).array
schedule67.groupAllocationAgreement[].allocationAmountCol 110 — this row's allocation of the $1B income deduction.null | number
schedule67.groupAllocationAgreement[].memberBNCol 105 — BN of the row's corp. 'NR' allowed for unregistered.null | string
schedule67.groupAllocationAgreement[].memberNameCol 100 — name of related-group member.null | string
schedule67.hadAmalgamationIn2020Or2021Had an amalgamation in 2020 or 2021 → predecessor TI must be included in line 200/210 per Note 1.boolean | null
schedule67.hadWindupIn2020Or2021Had a wind-up in 2020 or 2021 → subsidiary TI must be included in line 200/210 per Note 1.boolean | null
schedule67.hasMultiple2020TaxYearss.191.5(4) first conjunct: did the corp have MORE THAN ONE 2020 taxation year? Proration applies only when this is true AND the total days exceed 365 — a single 366-day (leap-year) 2020 TY is never prorated. The engine fails closed when the day count exceeds 365 and this is unanswered.boolean | null
schedule67.hasMultiple2021TaxYearss.191.5(4) first conjunct for 2021 (same rule as 2020).boolean | null
schedule67.hasMultiple2022TaxYearsMore than one taxation year of the corporation ended in 2022. The Part VI.2 tax is calculated on the latest such year and ITA s.191.5(9) makes the first of the five instalments payable for that year alone, so the engine derives the active instalment ordinal from this answer. Unanswered is not a No: a blank would publish the first instalment on an earlier 2022 return, so the schedule blocks until it is stated.boolean | nullstrict
schedule67.isBankThe corporation is a bank; one arm of the bank or life insurer group member definition the Part VI.2 Canada recovery dividend applies to (ITA s.191.5).boolean | nullstrict
schedule67.isFinancialInstitutionRelatedToBankOrLifeInsurerIs this corp a financial institution per s.190(1) that is RELATED to a bank or life-insurance corp carrying on business in Canada?boolean | null
schedule67.isLifeInsuranceCorpInCanadaIs this corp a life insurance corporation carrying on business in Canada? (Per s.190(1).)boolean | null
schedule67.isNonResidentNon-resident corp → TI substituted with "taxable income earned in Canada" per Note 1.boolean | null
schedule67.isRelatedToOtherGroupMemberAtEndOf2021The corporation was related to another bank or life insurer group member at the end of 2021; the related group must then allocate the Part VI.2 income deduction under s.191.5(5).boolean | nullstrict
schedule67.line120IncomeDeductionBox 120 — this corp's allocated portion of the $1B income deduction. Required if isRelatedToOtherGroupMemberAtEndOf2021 is true; defaults to $1B otherwise per Note 2. Can be $0 for a related FI without an allocation under s.191.5(5).null | number
schedule67.otherAgreementsFiledForCalendarYearTrue when another s.191.5(5) agreement or a Minister allocation under s.191.5(6) allocates an amount to this corporation. The legacy field name is shared with S39/S68; null withholds a positive line 120.boolean | null
schedule67.otherFiledAgreementsEvery allocation not shown in this copy's Part 1 table. s.191.5(7) makes the least amount across these rows and this copy binding.array
schedule67.otherFiledAgreements[].agreementDateFiledAgreement filing date or Minister allocation date, when known.null | string
schedule67.otherFiledAgreements[].allocationAuthorityAllocation source.string
schedule67.otherFiledAgreements[].allocationToFilingCorporationAmount the external source allocates to this corporation.null | number
schedule67.taxableIncome2020Box 200 — TI for 2020 tax year per Part I, ignoring 111(1)(a) and (b). For non-resident corps use 'taxable income earned in Canada' substitution. Include predecessor TI on amalgamation/ wind-up.null | number | stringstrict
schedule67.taxableIncome2021Box 210 — TI for 2021 tax year (same basis).null | numberstrict
schedule67.totalDaysIn2020TaxYearsMulti-short-year proration: total days across all 2020 tax years. Engine prorates line 200 by 365/totaldays per Note 1 only when hasMultiple2020TaxYears is true AND this exceeds 365.null | numberstrict
schedule67.totalDaysIn2021TaxYearsMulti-short-year proration: total days across all 2021 tax years (same conjunctive rule as 2020).null | numberstrict
schedule67.wasBankOrLifeInsurerGroupMemberInA2021TaxYearForm-face filer test: the corporation was a bank or life insurer group member at any time during a 2021 taxation year, which is what makes Schedule 67 applicable.boolean | nullstrict
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 (9 of 33 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 schedule67
CellAccepted values
schedule67.businessNumber0 to 20000 characters
schedule67.corporationName0 to 20000 characters
schedule67.currentTaxYearEnd0 to 20000 characters
schedule67.otherFiledAgreements[].allocationAuthorityone of "agreement", "minister"
schedule67.taxableIncome2020-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule67.taxableIncome2021-1000000000000000 to 1000000000000000
schedule67.totalDaysIn2020TaxYears-1000000000000000 to 1000000000000000
schedule67.totalDaysIn2021TaxYears-1000000000000000 to 1000000000000000
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (55)

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

Output cells for schedule67
CellTypes
active_instalment_amountnumber
active_instalment_lineThe Part 3 instalment line the return year falls on. Null when the tax year is outside the five instalment years the schedule prints.null | string
active_tax_year_labelThe label of the instalment year the return falls on. Null when the tax year is outside the five instalment years the schedule prints.null | string
amount_A_sum_ti_2020_2021number
amount_B_50_percent_averagenumber
amount_C_excess_over_deductionnumber
amount_D_per_instalmentnumber
businessNumberThe filer's business number. Echoed back from the request. Null when the caller supplied none; the unsupplied cell is named in `missing_required` instead of being invented.null | string
corporationNameThe corporation's name. Echoed back from the request. Null when the caller supplied none; the unsupplied cell is named in `missing_required` instead of being invented.null | string
currentTaxYearEndThe current tax year end as supplied, YYYY-MM-DD. Echoed back from the request. Null when the caller supplied none; the unsupplied cell is named in `missing_required` instead of being invented.null | string
fired_gatesobject
groupAllocationAgreementarray
group_allocation_residualnumber
group_allocation_totalnumber
isBankThe caller's answer to this scope question, echoed back. Null when the request does not state it; the unanswered question is named in `missing_required` rather than read as No.boolean | null
isFinancialInstitutionRelatedToBankOrLifeInsurerarray | boolean | null | number | object | string
isLifeInsuranceCorpInCanadaarray | boolean | null | number | object | string
isNonResidentarray | boolean | null | number | object | string
isRelatedToOtherGroupMemberAtEndOf2021The caller's answer to this scope question, echoed back. Null when the request does not state it; the unanswered question is named in `missing_required` rather than read as No.boolean | null
line_120_income_deductionnumber
line_200_proration_appliedboolean
line_200_ti_2020number
line_210_proration_appliedboolean
line_210_ti_2021number
line_220_income_deductionnumber
line_230_crd_payable_totalnumber
line_300_instalment_2022number
line_310_instalment_2023number
line_320_instalment_2024number
line_330_instalment_2025number
line_340_instalment_2026number
missing_required[]string
provisionalboolean
readyboolean
t2_line_725_feednumber
warnings[].codeStable machine identity of the finding, independent of its prose. Present on a finding a consumer is expected to branch on; absent on a prose-only review finding.string
warnings[].messagestring
warnings[].notesstring
warnings[].sectionstring
warnings[].severitystring
warnings[].sources[]string
warnings[].taxYearinteger
warnings[].taxYears[]integer
warnings[].anchor_fieldThe Filemark input anchor a preparer has to answer to clear the finding, when the box alone does not identify it.string
warnings[].boxThe form box the finding is about, or null when the finding is about the return rather than a printed box.null | 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[].gate_idIdentifier of the registered T4012 gate that raised the finding; travels with `citation`.string
Filemark | schedule67 cells