schedule53
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2019 and later
- Strict profile
- s53_single_grip_profile_target_value_v1
- Payload schema version
- 0.8.0
- Dependencies (run automatically)
- dividend_pool_status, division_c, sbd, schedule24, schedule3, schedule4, schedule7
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": [
"schedule53"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"corpType": "1",
"t2Jacket": {
"identification": {
"isResidentOfCanada": true
},
"additionalInfo": {
"isDepositInsuranceCorporation": false,
"isCreditUnion": false,
"substantiveCCPCAnytime": false,
"section89_11ElectionInForceForTaxYear": false
},
"filingStatus": {
"firstYearAfterIncorporation": false,
"firstYearAfterAmalgamation": false
}
},
"accounts": [
{
"id": "revenue",
"accountCode": "4000",
"accountName": "Cedar Ridge active business revenue",
"accountType": "revenue",
"currentYearBalance": -100000,
"userStatus": "default",
"reviewStatus": "default",
"classification": {
"schedule1Relevant": false,
"incomeType": "active",
"foreignSource": false
}
}
],
"incomeStatementFlags": {
"revenue": true
},
"specifiedCorporateIncomeReviewed": true,
"supplementalLinesReviewed": true,
"specifiedPartnershipIncomeApplies": false,
"specifiedInvestmentBusinessIncome": 0,
"lifeInsurancePolicyIncome": 0,
"schedule53": {
"line100GripOpening": 0,
"line130LesserSbdNumerator": 40000,
"line210Section113Dividends": 0,
"line300EligibleDivsPaidPriorYear": 0,
"line310ExcessiveEEDPriorYear": 0,
"line140LesserAiiTaxableIncome": 0
},
"daysInYear": 365
}
}Input cells (75)
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 |
|---|---|---|
| accounts[].accountCode | string | strict |
| accounts[].accountName | string | strict |
| accounts[].accountType | string | strict |
| accounts[].classification.foreignSourceThe account's income is foreign source; schedules that split Canadian from foreign amounts route it accordingly, for example Schedule 7's foreign property and rental buckets and line 500 foreign business income. | boolean | strict |
| accounts[].classification.incomeType | string | strict |
| accounts[].classification.schedule1RelevantMarks the account's concept as one to review for Schedule 1. It does not decide the posting; the classification's line and treatment do. | boolean | strict |
| accounts[].currentYearBalance | integer | strict |
| accounts[].id | string | strict |
| accounts[].reviewStatus | string | strict |
| accounts[].userStatus | string | strict |
| corpType | string | strict |
| daysInYearInclusive day count for the canonical fiscalStart/fiscalEnd period required by the settled Part I dependency closure. | integer | strict |
| fiscalEndLast day of the taxation year, as YYYY-MM-DD, on or after fiscalStart. Its calendar year must equal taxYear. Required for the same reason as fiscalStart. | string | strict |
| fiscalStartFirst day of the taxation year, as YYYY-MM-DD. Required because this target's dependency closure reaches part_i_tax, whose rates and limits are day-weighted; ITA s.249(1)(a) makes the taxation year the fiscal period, and the engine will not invent calendar-year bounds. | string | strict |
| incomeStatementFlags.revenueTrue when the trial-balance account with this id is an income-statement account; flagged balances form net income per financial statements, Schedule 1 amount A. | boolean | strict |
| lifeInsurancePolicyIncomeTXE-319: ITA s.125(7)(c)(ii), in the 'adjusted aggregate investment income' definition, includes amounts in respect of a life insurance policy that are included in income; the engine reads the amount as an explicit off-form statutory fact. Zero pins this witness's branch. | integer | strict |
| schedule53.isBecomingCcpcTrue iff corp is BECOMING a CCPC this year (s.89(4)); forces 300/310 = 0. | boolean | null | |
| schedule53.line100GripOpeningLine 100 — Opening GRIP carryforward from prior-year line 590. | null | number | strict |
| schedule53.line110TaxableIncomeLine 110 — Taxable income for the year (DICs enter 0). | null | number | |
| schedule53.line130LesserSbdNumeratorLine 130 — Lesser of T2 lines 400/405/410/428. | null | number | strict |
| schedule53.line140LesserAiiTaxableIncomeSchedule 53 line 140: for a CCPC, the lesser of aggregate investment income (T2 line 440) and taxable income. A ready Schedule 7 is the canonical producer and GOVERNS this figure; the explicit amount is the only other proof, and without either the engine holds line 140 rather than reading the blank as nil. This witness earns only active business income, so its answer is 0. | null | number | |
| schedule53.line200EligibleDividendsReceivedLine 200 — Eligible dividends received in tax year (Cdn-source). | null | number | |
| schedule53.line210Section113DividendsLine 210 — Exact ITA s.89(1) variable-E foreign-affiliate amount. | null | number | strict |
| schedule53.line300EligibleDivsPaidPriorYearLine 300 — Final prior-year eligible dividends paid after any valid s.185.1(2) election. Source from the finalized prior Schedule 55 line 150/election record; Schedule 3 line 465 is partial-scope only. | null | number | strict |
| schedule53.line310ExcessiveEEDPriorYearLine 310 — Final prior-year excessive eligible dividend designations remaining after any valid s.185.1(2) election. Paragraph-(c) EEDD is not electable. | null | number | strict |
| schedule53.part2Rows | array | |
| schedule53.part2Rows[].a_taxableIncomeBeforeA — Taxable income BEFORE SFTC. | null | number | |
| schedule53.part2Rows[].b_sbdBeforeB — Lesser of T2 400/405/410/428 BEFORE SFTC. | null | number | |
| schedule53.part2Rows[].c_aiiBeforeC — AII (T2 line 440) BEFORE SFTC. | null | number | |
| schedule53.part2Rows[].f_taxableIncomeAfterF — Taxable income AFTER SFTC. | null | number | |
| schedule53.part2Rows[].g_sbdAfterG — Lesser of T2 400/405/410/428 AFTER SFTC. | null | number | |
| schedule53.part2Rows[].h_aiiAfterH — AII (T2 line 440) AFTER SFTC. | null | number | |
| schedule53.part2Rows[].priorYearIndexWhich prior tax year this row covers. | integer | |
| schedule53.part3Rows | array | |
| schedule53.part3Rows[].a4_predecessorGripA4 — Predecessor GRIP at end of its last tax year. | null | number | |
| schedule53.part3Rows[].assetsReceivedTaxationYearEndISO YYYY-MM-DD end of the PARENT's taxation year during which it received the subsidiary's assets on the wind-up. ITA 89(6) includes the addition in the parent's GRIP "at the end of its taxation year that immediately follows the taxation year during which it receives the assets of the subsidiary", so the receipt year is what places the inclusion; the return's own year end cannot stand in for it. Required on a `wind_up` row and ignored on an `amalgamation` row. Left blank the engine derives it from the provenance-bearing Schedule 24 wind-up evidence and blocks when that evidence is absent — it… | null | string | |
| schedule53.part3Rows[].b4_eligibleDivsPaidB4 — Eligible dividends paid by predecessor in its last tax year. | null | number | |
| schedule53.part3Rows[].businessNumber | string | |
| schedule53.part3Rows[].c4_excessiveEEDC4 — Excessive eligible dividend designations made by predecessor. | null | number | |
| schedule53.part3Rows[].corpName | string | |
| schedule53.part3Rows[].operation"amalgamation" feeds line 230; "wind_up" feeds line 240. | string | |
| schedule53.part4Rows | array | |
| schedule53.part4Rows[].a5_costOfPropertyA5 — Cost amount of all property immediately before end of last TY. | null | number | |
| schedule53.part4Rows[].assetsReceivedTaxationYearEndISO YYYY-MM-DD end of the PARENT's taxation year during which it received the subsidiary's assets on the wind-up — the same ITA 89(6) timing fact Part 3 carries, on the non-CCPC subsidiary branch. Required on a `post_wind_up` row and ignored on the other two situations. Left blank the engine derives it from the Schedule 24 wind-up evidence and blocks when that evidence is absent. Optional in the shape for the same reason as the Part 3 twin. | null | string | |
| schedule53.part4Rows[].b5_moneyOnHandB5 — Corporation's money on hand immediately before end of last TY. | null | number | |
| schedule53.part4Rows[].businessNumber | string | |
| schedule53.part4Rows[].c5_nonCapitalLosses | null | number | |
| schedule53.part4Rows[].corpName | string | |
| schedule53.part4Rows[].d5_netCapitalLosses | null | number | |
| schedule53.part4Rows[].e5_farmLosses | null | number | |
| schedule53.part4Rows[].f5_restrictedFarmLosses | null | number | |
| schedule53.part4Rows[].g5_limitedPartnershipLosses | null | number | |
| schedule53.part4Rows[].i5_actualNonCapitalLosses | null | number | |
| schedule53.part4Rows[].j5_actualNetCapitalLosses | null | number | |
| schedule53.part4Rows[].k5_actualFarmLosses | null | number | |
| schedule53.part4Rows[].l5_actualRestrictedFarmLosses | null | number | |
| schedule53.part4Rows[].m5_actualLimitedPartnershipLosses | null | number | |
| schedule53.part4Rows[].q5_debts | null | number | |
| schedule53.part4Rows[].r5_paidUpCapital | null | number | |
| schedule53.part4Rows[].s5_reserves | null | number | |
| schedule53.part4Rows[].situation"becoming_ccpc" feeds line 220 (s.89(4)); "post_amalgamation" feeds line 230 (s.87(1) / s.89(5)); "post_wind_up" feeds line 240 (s.88(1) / s.89(6)). | string | |
| schedule53.part4Rows[].t5_cdaBalance | null | number | |
| schedule53.part4Rows[].u5_lripBalance | null | number | |
| specifiedCorporateIncomeReviewedConfirms the Schedule 7 Part 7 review of ITA s.125(7) specified corporate income; until true the engine caps specified corporate income at nil and line 615 stays out of SBD-eligible income. | boolean | strict |
| specifiedInvestmentBusinessIncomeTotal income for the year from a specified investment business carried on in Canada, the ITA s.125(7) 'income of the corporation for the year from an active business' paragraph (a) carve-out the sweep made an explicit operand. Zero pins this witness's branch: no specified investment business income. | integer | strict |
| specifiedPartnershipIncomeAppliesWhether ITA s.125(7) specified partnership income applies for the year; true requires the Schedule 7 Parts 4 and 5 partnership packets. | boolean | strict |
| supplementalLinesReviewedConfirms Schedule 7 lines 042, 052, 072, 720, 725, 735, 741, 029, 059, 530 and 540 were reviewed and every applicable amount entered; AII, FII, AAII and SBD-eligible income are held at zero until confirmed. | boolean | strict |
| t2Jacket.additionalInfo.isCreditUnionThe corporation is a credit union; a legal-status fact the GRIP and LRIP dividend-pool resolution requires beyond the T2 corporation-type code. | boolean | strict |
| t2Jacket.additionalInfo.isDepositInsuranceCorporationThe corporation is a deposit insurance corporation; a legal-status fact the GRIP and LRIP dividend-pool resolution requires beyond the T2 corporation-type code. | boolean | strict |
| t2Jacket.additionalInfo.section89_11ElectionInForceForTaxYearAn ITA s.89(11) election not to be treated as a CCPC is in force for the taxation year; the continuing election state, distinct from the box 266 and 267 filing events. | boolean | strict |
| t2Jacket.additionalInfo.substantiveCCPCAnytimeT2 box 290: the corporation was a substantive CCPC (ITA s.248(1)) at any time in the taxation year; routes the general rate reduction worksheet and the dividend-pool regime. | boolean | strict |
| t2Jacket.filingStatus.firstYearAfterAmalgamation | boolean | strict |
| t2Jacket.filingStatus.firstYearAfterIncorporation | boolean | strict |
| t2Jacket.identification.isResidentOfCanadaT2 box 080: the corporation was resident in Canada in the taxation year. A no answer requires the box 081 country of residence. | boolean | 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 (23 of 75 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 |
|---|---|
| accounts[].accountCode | 0 to 20000 characters |
| accounts[].accountName | 0 to 20000 characters |
| accounts[].accountType | 0 to 20000 characters |
| accounts[].classification.incomeType | 0 to 20000 characters |
| accounts[].currentYearBalance | -1000000000000000 to 1000000000000000 |
| accounts[].id | 0 to 20000 characters |
| accounts[].reviewStatus | 0 to 20000 characters |
| accounts[].userStatus | 0 to 20000 characters |
| corpType | 0 to 20000 characters |
| daysInYear | 1 to 1000000000000000 |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| lifeInsurancePolicyIncome | -1000000000000000 to 1000000000000000 |
| schedule53.line100GripOpening | -1000000000000000 to 1000000000000000 |
| schedule53.line130LesserSbdNumerator | -1000000000000000 to 1000000000000000 |
| schedule53.line140LesserAiiTaxableIncome | -1000000000000000 to 1000000000000000 |
| schedule53.line210Section113Dividends | -1000000000000000 to 1000000000000000 |
| schedule53.line300EligibleDivsPaidPriorYear | -1000000000000000 to 1000000000000000 |
| schedule53.line310ExcessiveEEDPriorYear | -1000000000000000 to 1000000000000000 |
| schedule53.part3Rows[].operation | one of "amalgamation", "wind_up" |
| schedule53.part4Rows[].situation | one of "becoming_ccpc", "post_amalgamation", "post_wind_up" |
| specifiedInvestmentBusinessIncome | -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 (89)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| fired_gates | object |
| form.formWarnings | array |
| form.line_100 | number |
| form.line_110 | number |
| form.line_130 | number |
| form.line_140 | number |
| form.line_150 | number |
| form.line_190 | number |
| form.line_200 | number |
| form.line_210 | number |
| form.line_220 | number |
| form.line_230 | number |
| form.line_240 | number |
| form.line_290 | number |
| form.line_300 | number |
| form.line_310 | number |
| form.line_490 | number |
| form.line_500 | number |
| form.line_520 | number |
| form.line_540 | number |
| form.line_560 | number |
| form.line_590 | array | boolean | null | number | object | string |
| form.part2Table[].a | number |
| form.part2Table[].b | number |
| form.part2Table[].c | number |
| form.part2Table[].d | number |
| form.part2Table[].d2 | number |
| form.part2Table[].e | number |
| form.part2Table[].e2 | number |
| form.part2Table[].f | number |
| form.part2Table[].g | number |
| form.part2Table[].h | number |
| form.part2Table[].i | number |
| form.part2Table[].i2 | number |
| form.part2Table[].j | number |
| form.part2Table[].j2 | number |
| form.part2Table[].k | number |
| form.part2Table[].year | integer |
| form.part3Table | array |
| form.part4Table | array |
| form.subtotal_A | number |
| form.subtotal_B | number |
| form.subtotal_C | number |
| form.subtotal_D | number |
| line_100 | number |
| line_110 | number |
| line_130 | number |
| line_140 | number |
| line_150 | number |
| line_190 | number |
| line_200 | number |
| line_210 | number |
| line_220 | number |
| line_230 | number |
| line_240 | number |
| line_290 | number |
| line_300 | number |
| line_310 | number |
| line_490 | number |
| line_500 | number |
| line_520 | number |
| line_540 | number |
| line_560 | number |
| line_590 | array | boolean | null | number | object | string |
| missing_required[] | string |
| part2Rows | array |
| part3Rows | array |
| part4Rows | array |
| poolBalanceChanged | boolean |
| provisional | boolean |
| ready | boolean |
| subtotalA | number |
| subtotalB | number |
| subtotalC | number |
| subtotalD | number |
| warnings[].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_id | string |
| warnings[].message | string |
| warnings[].severity | string |
| line_590_withheldPresent only when the closing balance was withheld, and then always true. | boolean |