schedule33
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2014 and later
- Strict profile
- s33_single_resident_tcec_profile_target_value_v1
- Payload schema version
- 0.11.0
- Dependencies (run automatically)
- division_c, schedule23, 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": [
"schedule33"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"isResidentOfCanada": true,
"isFinancialInstitution": false,
"isInsuranceCorp": false,
"associatedCCPC": false,
"wasAssociatedInPrecedingYear": 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
},
"schedule33": {
"allResidentComponentsReviewed": true,
"partnershipDetails": null,
"lines": {
"104": {
"amount": 15000000,
"source": "entered"
},
"610": {
"amount": 100000,
"source": "entered"
}
}
},
"isCCPC": true,
"daysInYear": 365
}
}Input cells (45)
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 | array | |
| 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 | null | strict |
| accounts[].classification.incomeType | null | 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 | null | number | strict |
| accounts[].id | string | strict |
| accounts[].reviewStatus | string | strict |
| accounts[].userStatus | string | strict |
| associatedCCPCT2 jacket box 160: the corporation was associated with one or more CCPCs in the taxation year; with the preceding-year fact this controls Schedule 33 Part 5. | boolean | strict |
| currentYearTCECTaxable capital employed in Canada for the current taxation year. It must be finite and non-negative. | null | number | string | |
| currentYearTCECMetaProvenance for currentYearTCEC. When sent, all four members must be present and correct: basis is current_tax_year, asOf is the current taxation-year end, source names where the figure came from, and confirmed is true. Anything less leaves the amount an unattested assertion. | null | object | |
| 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. | null | 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. | null | string | strict |
| functionalCurrencyContextThe functional-currency election sidecar for the taxation year, used to restate statutory dollar thresholds under ITA s.261(5)(b). Send it only for a functional-currency filer; it carries reportingCurrency, periodStart, a firstDayRate object with rate, spotRateSource and firstDayDate, and optional statutoryThresholdRoundingOverrides. | null | object | |
| gifiAssignmentsMap of account id to the accepted GIFI code, folded onto accounts before consumers read them. An assignment overrides an account's embedded gifiCode and an empty string clears it. The merged view drives statutory paths including Schedule 1's lines 239/347 OCI treatment and Schedule 4's farming-presence signal, as well as Schedule 33's reference panel and prefill. | null | object | |
| 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 |
| isCCPCThe corporation was a Canadian-controlled private corporation (ITA s.125(7) definition) throughout the taxation year. | boolean | |
| isFinancialInstitutionWhether the corporation is a "financial institution" within the meaning of ITA 181(1). Every operative subsection of ITA 181.2 is scoped to a corporation "other than a financial institution", and a filer inside that class is measured under ITA 181.3 on Schedule 34/35 instead. Optional, and never defaulted: omit it and the scope is unresolved, so the engine refuses to certify any taxable capital, small-business-deduction grind or s.127(10.2) flag rather than assuming the ordinary-corporation regime. Pinned false for this profile, whose witness states that ITA 181.2 governs. | boolean | |
| isInsuranceCorpWhether the corporation is an insurance corporation. T2 SCH33 E (15) scopes its own face to "the corporation (other than a financial institution or an insurance corporation)", and an insurance corporation is measured under ITA 181.3 on Schedule 35. Pinned false for this profile, optional, and never defaulted — see `isFinancialInstitution`. | boolean | |
| isResidentOfCanadaThe corporation was resident in Canada in the taxation year (T2 box 080); Schedule 33 requires the residence fact answered before its taxable-capital result is filing-ready. | boolean | strict |
| schedule33Schedule 33 (Taxable Capital Employed in Canada) statutory input blob. null or absent means the form was not opened: the node returns the not-ready all-None shape, never a silent-zero 690/790. | null | object | |
| schedule33.allResidentComponentsReviewedTrue confirms every resident Schedule 33 capital, deduction, and investment-allowance line omitted from `lines` was reviewed and is nil. Without this confirmation, every line must be entered explicitly, including zero. | boolean | null | strict |
| schedule33.isFinancialInstitution`true` = a financial institution within the meaning of s.181(1) (→ s.181.3, Schedule 34); null/absent leaves the scope unresolved. | boolean | null | |
| schedule33.isInsuranceCorp`true` = an insurance corporation at any time in the year (→ s.181.3, Schedule 35); null/absent leaves the scope unresolved. | boolean | null | |
| schedule33.line713ForeignTaxConditionMetSupplied paragraph 181.4(d) fact for a positive line 713. `true` confirms that the corporation's country of residence imposed neither tax described by that paragraph; `false` means line 713 is not deductible; null/absent is unresolved. | boolean | null | |
| schedule33.linesForm line number ("101"…"713") → entry. Enterable codes: 101, 103-112, 121-124, 401-407, 610, 701/711/712/713. | object | |
| schedule33.lines.104.amount | integer | strict |
| schedule33.lines.104.sourceWhere the line's amount came from. A closed set: the engine refuses any other source with a box-scoped error and excludes the entry, so a free-text source would silently drop the amount out of capital. This contract rejects it at the boundary instead, before execution. | string | strict |
| schedule33.lines.112.amount | number | strict |
| schedule33.lines.112.sourceWhere the line's amount came from. A closed set: the engine refuses any other source with a box-scoped error and excludes the entry, so a free-text source would silently drop the amount out of capital. This contract rejects it at the boundary instead, before execution. | string | strict |
| schedule33.lines.407.amount | number | strict |
| schedule33.lines.407.sourceWhere the line's amount came from. A closed set: the engine refuses any other source with a box-scoped error and excludes the entry, so a free-text source would silently drop the amount out of capital. This contract rejects it at the boundary instead, before execution. | string | strict |
| schedule33.lines.610.amount | integer | strict |
| schedule33.lines.610.sourceWhere the line's amount came from. A closed set: the engine refuses any other source with a box-scoped error and excludes the entry, so a free-text source would silently drop the amount out of capital. This contract rejects it at the boundary instead, before execution. | string | strict |
| schedule33.partnershipDetailsOptional per-partnership detail rows backing lines 112 and 407, as a map from the line code (112 or 407) to a list of partnershipName and amount rows. Detail rows do not substitute for the line amount: the line must also be entered and the rows must total it within tolerance. ITA s.181.2(3)(g) for line 112 and s.181.2(4)(e) for line 407. | null | object | |
| schedule33.partnershipDetails.112[].amount | number | strict |
| schedule33.partnershipDetails.112[].partnershipName | string | |
| schedule33.partnershipDetails.407[].amount | number | strict |
| schedule33.partnershipDetails.407[].partnershipName | 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. | number | string | always |
| wasAssociatedInPrecedingYearThe corporation was associated with at least one other corporation in the preceding taxation year; prior-year continuity fact for association-driven limits. | boolean |
Strict profile accepted values (24 of 45 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 | one of "active_business", "property", "rental", "capital", "active", null |
| accounts[].currentYearBalance | -1000000000000000 to 1000000000000000 |
| accounts[].id | 0 to 20000 characters |
| accounts[].reviewStatus | 0 to 20000 characters |
| accounts[].userStatus | 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 |
| schedule33.lines.104.amount | -1000000000000000 to 1000000000000000 |
| schedule33.lines.104.source | one of "entered", "prefill_accepted" |
| schedule33.lines.112.amount | 0 to 600000000000 |
| schedule33.lines.112.source | one of "entered", "prefill_accepted" |
| schedule33.lines.407.amount | 0 to 600000000000 |
| schedule33.lines.407.source | one of "entered", "prefill_accepted" |
| schedule33.lines.610.amount | -1000000000000000 to 1000000000000000 |
| schedule33.lines.610.source | one of "entered", "prefill_accepted" |
| schedule33.partnershipDetails.112[].amount | 0 to 600000000000 |
| schedule33.partnershipDetails.112[].partnershipName | 1 to 20000 characters |
| schedule33.partnershipDetails.407[].amount | 0 to 600000000000 |
| schedule33.partnershipDetails.407[].partnershipName | 1 to 20000 characters |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (107)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| amount_A | null | number |
| amount_B | null | number |
| amount_E | array | boolean | null | number | object | string |
| amount_F | array | boolean | null | number | object | string |
| amount_G | array | boolean | null | number | object | string |
| amount_H | array | boolean | null | number | object | string |
| amount_I | array | boolean | null | number | object | string |
| associatedGroupStatus | boolean |
| associatedGroupTCECMissing | boolean |
| associatedGroupTCECProvided | boolean |
| authoritativeForPriorYearGrinds | boolean |
| businessLimitReduction | null | number |
| businessLimitReductionIsScenario | boolean |
| coverageStatus | string |
| currentYearAssociated | boolean |
| eligibleForPriorYearGrindInput | boolean |
| filingProjectionSupported | boolean |
| fired_gates | object |
| fiscalEnd | string |
| fiscalStart | string |
| gifiReference.canadianRevenuePercentEstimate | array | boolean | null | number | object | string |
| gifiReference.deferredTaxLiabilities | number |
| gifiReference.gifiBreakdown[].description | string |
| gifiReference.gifiBreakdown[].gifiRange | string |
| gifiReference.gifiBreakdown[].total | number |
| gifiReference.investmentDeductions | number |
| gifiReference.prefillSuggestions | object |
| gifiReference.shareholderLoans | number |
| gifiReference.taxableCapitalBase | number |
| gifiReference.taxableCapitalEstimate | number |
| gifiReference.totalAssets | number |
| gifiReference.totalReserves | number |
| grindTCEC | null | number |
| line713EligibilityResolved | boolean |
| line713ForeignTaxConditionMet | array | boolean | null | number | object | string |
| line_101 | array | boolean | null | number | object | string |
| line_103 | array | boolean | null | number | object | string |
| line_104 | null | number |
| line_105 | array | boolean | null | number | object | string |
| line_106 | array | boolean | null | number | object | string |
| line_107 | array | boolean | null | number | object | string |
| line_108 | array | boolean | null | number | object | string |
| line_109 | array | boolean | null | number | object | string |
| line_110 | array | boolean | null | number | object | string |
| line_111 | array | boolean | null | number | object | string |
| line_112 | null | number |
| line_121 | array | boolean | null | number | object | string |
| line_122 | array | boolean | null | number | object | string |
| line_123 | array | boolean | null | number | object | string |
| line_124 | array | boolean | null | number | object | string |
| line_190_capital | null | number |
| line_401 | array | boolean | null | number | object | string |
| line_402 | array | boolean | null | number | object | string |
| line_403 | array | boolean | null | number | object | string |
| line_404 | array | boolean | null | number | object | string |
| line_405 | array | boolean | null | number | object | string |
| line_406 | array | boolean | null | number | object | string |
| line_407 | null | number |
| line_415_sbd_factor | array | boolean | null | number | object | string |
| line_490_investment_allowance | null | number |
| line_500_taxable_capital | null | number |
| line_610 | null | number |
| line_690_tcec_resident | null | number |
| line_701 | array | boolean | null | number | object | string |
| line_711 | array | boolean | null | number | object | string |
| line_712 | array | boolean | null | number | object | string |
| line_713 | array | boolean | null | number | object | string |
| line_790_tcec_non_resident | array | boolean | null | number | object | string |
| missing_required[] | string |
| part5Applicability | string |
| part5ApplicabilityReason | string |
| part5CurrentYearTCECReconciled | array | boolean | null | number | object | string |
| provincialProportion | null | number |
| provisional | boolean |
| ready | boolean |
| residenceFactSupplied | boolean |
| residencyBranch | string |
| reviewedCurrentYearTCEC | array | boolean | null | number | object | string |
| taxYear | integer |
| taxable_income_denominator | null | number |
| tcec | null | number |
| tcecCalculationComplete | boolean |
| tcecExceeds10M | boolean | null |
| tcecExceeds15M | boolean | null |
| filingPropositions[].schemaVersion | integer |
| filingPropositions[].propositionId | string |
| filingPropositions[].state | string |
| filingPropositions[].filingDisposition | string |
| filingPropositions[].targets[] | string |
| filingPropositions[].evidence[] | string |
| warnings[].accountIds[] | string |
| warnings[].code | string |
| warnings[].message | string |
| warnings[].severity | string |
| 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[].box_form | string |
| wasAssociatedInPrecedingYearWhether the corporation was associated with another corporation in the preceding taxation year. The input is optional and the answer selects whether ITA 125(5.1)(a)(ii) and Part 5 apply, so an unanswered fact is published as null and listed in missing_required rather than assumed to be false. | boolean | null |