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.
| Cell | Types | Required |
|---|---|---|
| schedule67.businessNumber9-digit BN or 15-char RC account; 'NR' is NOT permitted here (only Part 1 col 105 row-BNs allow 'NR'). | null | string | strict |
| schedule67.corporationNameCorporation legal name (header field). | null | string | strict |
| schedule67.currentTaxYearEndTY-end YYYY-MM-DD. Engine uses to determine active instalment. | null | string | strict |
| 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 | null | strict |
| 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 | null | strict |
| 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 | null | strict |
| 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 | string | strict |
| schedule67.taxableIncome2021Box 210 — TI for 2021 tax year (same basis). | null | number | strict |
| 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 | number | strict |
| schedule67.totalDaysIn2021TaxYearsMulti-short-year proration: total days across all 2021 tax years (same conjunctive rule as 2020). | null | number | strict |
| 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 | null | strict |
| 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 | string | always |
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.
| Cell | Accepted values |
|---|---|
| schedule67.businessNumber | 0 to 20000 characters |
| schedule67.corporationName | 0 to 20000 characters |
| schedule67.currentTaxYearEnd | 0 to 20000 characters |
| schedule67.otherFiledAgreements[].allocationAuthority | one 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 |
| taxYear | matches ^\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.
| Cell | Types |
|---|---|
| active_instalment_amount | number |
| 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_2021 | number |
| amount_B_50_percent_average | number |
| amount_C_excess_over_deduction | number |
| amount_D_per_instalment | number |
| 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_gates | object |
| groupAllocationAgreement | array |
| group_allocation_residual | number |
| group_allocation_total | number |
| 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 |
| isFinancialInstitutionRelatedToBankOrLifeInsurer | array | boolean | null | number | object | string |
| isLifeInsuranceCorpInCanada | array | boolean | null | number | object | string |
| isNonResident | array | 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_deduction | number |
| line_200_proration_applied | boolean |
| line_200_ti_2020 | number |
| line_210_proration_applied | boolean |
| line_210_ti_2021 | number |
| line_220_income_deduction | number |
| line_230_crd_payable_total | number |
| line_300_instalment_2022 | number |
| line_310_instalment_2023 | number |
| line_320_instalment_2024 | number |
| line_330_instalment_2025 | number |
| line_340_instalment_2026 | number |
| missing_required[] | string |
| provisional | boolean |
| ready | boolean |
| t2_line_725_feed | number |
| 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[].message | string |
| warnings[].notes | string |
| warnings[].section | string |
| warnings[].severity | string |
| warnings[].sources[] | string |
| warnings[].taxYear | integer |
| 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_verbatim | string |
| warnings[].citation.form_id | string |
| warnings[].citation.form_revision | string |
| warnings[].citation.gate_id | string |
| warnings[].citation.rule | string |
| warnings[].citation.source | string |
| warnings[].citation.source_url | string |
| warnings[].citation.verified_at | string |
| warnings[].gate_idIdentifier of the registered T4012 gate that raised the finding; travels with `citation`. | string |