schedule76
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2024 and later
- Strict profile
- s76_exact_single_request_target_value_v1
- Payload schema version
- 0.7.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": [
"schedule76"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"schedule76": {
"isCanadianCorporation": "Y",
"isExemptFromTaxUnderPartI": "N",
"isTaxShelterInvestment": "N",
"part1Rows": [
{
"propertyIdentifier": "FA-76-0001",
"ccaClassNumber": "53",
"ctmPropertyDescription": "Manufacturing press",
"ctmUseCode": "01",
"ctmUseIsAllOrSubstantiallyAll": "Y",
"provinceOrTerritory": "ON",
"acquisitionDate": "2025-06-15",
"availableForUseDate": "2025-06-15",
"capitalCost": 100000,
"adjustments": 0,
"assistanceRepaid": 0,
"situatedAndUsedExclusivelyInCanada": "Y",
"previouslyUsedOrAcquiredForUseOrLease": "N",
"leasedToAnotherPerson": "N",
"otherCleanEconomyCreditClaimedOnProperty": "N"
}
]
}
}
}Input cells (76)
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 |
|---|---|---|
| fiscalEnd | string | |
| fiscalStart | string | |
| schedule76.isCanadianCorporations.89(1) claimant fact: the corporation is a Canadian corporation. With isExemptFromTaxUnderPartI it establishes the qualifying taxpayer (a taxable Canadian corporation) the clean-economy credit definitions require; unanswered, the engine refuses the credit. | null | string | |
| schedule76.isExemptFromTaxUnderPartIs.89(1) claimant fact: whether the corporation is exempt from Part I tax. 'N' with isCanadianCorporation 'Y' establishes the qualifying taxpayer; unanswered, the engine refuses the credit. | null | string | |
| schedule76.isTaxShelterInvestments.127.49(10) — is the CTM property (or an interest in a person or partnership that has an interest in it) a tax shelter investment for the purpose of s.143.2? "Y" denies the credit on every Part 1 row and blocks the filing. Tri-state: null = unanswered. | null | string | |
| schedule76.line150PartnershipAllocatedItc | null | number | |
| schedule76.line240PartnershipAllocatedRecapture | null | number | |
| schedule76.part1Rows | array | |
| schedule76.part1Rows[].acquisitionDateOptional s.127.49(1) 'specified percentage' operand: the REAL acquisition date. Paragraph (a) reads, verbatim, 'before January 1, 2024, determined without reference to subsection (4), nil', and 'without reference to subsection (4)' disapplies the available-for-use deeming for that test, so availableForUseDate cannot stand in for it. Absent, the engine cannot tell a 30% row from a statutory nil and claims no CTM ITC for the row (error-severity s76_acquisition_date_required, ready false) - it never assumes 30% on a refundable credit. | null | string | |
| schedule76.part1Rows[].adjustmentsBox 120 / column 1G — Adjustments: government and non-government assistance received, receivable, or reasonably expected (s.127.49(5)(c)). REDUCES the amount eligible for ITC. Required on a claiming row: enter 0 where there is no assistance. Left blank it is unanswered, not nil, and the row claims no CTM ITC until it is entered. | null | number | strict |
| schedule76.part1Rows[].amountEligibleForItcBox 130 / column 1I — Derived: 1F − 1G + 1H. | null | number | |
| schedule76.part1Rows[].assistanceRepaidBox 125 / column 1H — Assistance repaid (or no longer reasonably expected) per s.127.49(7). INCREASES the amount eligible for ITC. Blank is the ordinary "nothing was repaid" state; an unreadable entry blocks. | null | number | strict |
| schedule76.part1Rows[].availableForUseDateBox 110 / column 1E — Available-for-use date (yyyy/mm/dd). Per s.127.49(4), CTM property is deemed not to have been acquired until AFU; this date is one of the TWO dates that drive the specified-percentage bracket (30/20/10/5/nil) — it settles paragraphs (b)-(c) through the s.127.49(4) deeming but never paragraph (a), which belongs to `acquisitionDate` above. | null | string | strict |
| schedule76.part1Rows[].batteryProductionBenefitsFromContributionAgreements.127.49(1) "excluded property" — property used in the production of battery cells or modules where that production "has benefitted from, or can reasonably be expected to benefit from, support under a contribution agreement with the Government of Canada referred to in section 7300 of the Income Tax Regulations" (Strategic Innovation Fund / Canada Growth Fund). REQUIRED where the property description names a battery cell or module; "Y" denies the credit and unanswered fails closed. | null | string | |
| schedule76.part1Rows[].capitalCostBox 115 / column 1F — Capital cost (excludes any amount unpaid 180 days after the year-end per s.127.49(9); add back when later paid). | null | number | strict |
| schedule76.part1Rows[].ccaClassNumberBox 100 / column 1A — CCA class number (must be one of: 8, 10, 12, 38, 41, 41.2, 43, 43.1, 43.2, 53, or 56 per s.127.49(1) 'CTM property' para (d)). | null | string | strict |
| schedule76.part1Rows[].claimsClass431ElectricalStorage | null | string | |
| schedule76.part1Rows[].claimsEligibleTransmissionEquipment | null | string | |
| schedule76.part1Rows[].class431Subparagraph | null | string | |
| schedule76.part1Rows[].ctmItcAmountBox 145 / column 1K — Derived: 1I × 1J. | null | number | |
| schedule76.part1Rows[].ctmPropertyDescriptionBox 105 / column 1B — CTM property description (free text). | null | string | strict |
| schedule76.part1Rows[].ctmPropertyScheduleIIRoutes.127.49(1) "CTM property" para (d) — which of the seven Schedule II routes describes this property. REQUIRED on every class except 53 and 56 (the only two paragraph (d) names in whole); a route that cannot reach the entered class is a contradiction between two independent preparer assertions and denies the credit, as does an unanswered one. | null | string | |
| schedule76.part1Rows[].ctmUseCodeBox 106 / column 1C — rev-(26) CTM-use asset code. Codes 30/31 are qualifying-mineral-activity property; all other values identify the particular Reg 5202 zero-emission manufacturing asset. | null | object | string | strict |
| schedule76.part1Rows[].ctmUseIsAllOrSubstantiallyAlls.127.49(1) "CTM use" means "the use of a property ALL OR SUBSTANTIALLY ALL in" the listed activities, and "CTM investment tax credit" para (a) allows the specified percentage only on property acquired "for a CTM use". The box-106 asset code records WHICH activity the property serves, not that all or substantially all of its use is that activity — and s.127.49(1) "non-CTM use" counts every other use against the test. REQUIRED on every Part 1 row; "N" denies the credit and unanswered fails closed. | null | string | |
| schedule76.part1Rows[].ctmUseMineralOutputTestMets.127.49(1) "CTM use" mineral OUTPUT test — separate from the chapeau all-or-substantially-all test on USE. The asset code selects the threshold: paragraph (b) (code 30) asks whether the property produces PRIMARILY qualifying materials; paragraph (c) (code 31) asks whether it produces ALL OR SUBSTANTIALLY ALL qualifying materials. Both are "determined based on the value of all commercial outputs in accordance with subsection (2.2)". REQUIRED on a mineral row; "N" denies the credit and unanswered fails closed. | null | string | |
| schedule76.part1Rows[].designedForStreetOrHighwayUses.127.49(1) "CTM property" para (d)(v)(A) — the Class 10 / Class 38 route excludes "any property that is designed or adapted for use on streets and highways". REQUIRED on a Class 10 or Class 38 row; "Y" denies the credit and unanswered fails closed. Irrelevant on every other class. | null | string | |
| schedule76.part1Rows[].eligibleGenerationEnergyTransmittedPct | null | number | |
| schedule76.part1Rows[].isBuilding | null | string | |
| schedule76.part1Rows[].leaseMeetsQualifyingLesseeConditionss.127.49(1) "CTM property" paragraph (c)(i)-(ii) — the lease is to a qualifying taxpayer (or a partnership all of whose members are qualifying taxpayers) AND is in the ordinary course of a business in Canada of a lessor whose principal business is selling or servicing property of that type, or leasing property, lending money and the related financing businesses the paragraph lists. Required once `leasedToAnotherPerson` is "Y"; unanswered fails closed. | null | string | |
| schedule76.part1Rows[].leasedToAnotherPersonIs the property to be leased by the corporation to another person or partnership? Paragraph (c) of the ITA 127.49(1) definition of CTM property excludes a lease unless the qualifying-lessee conditions are met, so the answer is stated rather than assumed. | null | string | strict |
| schedule76.part1Rows[].mineralCertifications.127.49(2.1) independent engineer / geoscientist certification. REQUIRED on an asset-code-30 row, ignored on every other code. | null | object | |
| schedule76.part1Rows[].mineralCertification.certificationDateDate on the certification (yyyy-mm-dd). Must fall inside the s.127.49(3) filing window for the return. | null | string | |
| schedule76.part1Rows[].mineralCertification.certificationFiledWithReturnPractitioner confirmation that the certification is attached to this schedule and filed with the return. "N" denies the row. | null | string | |
| schedule76.part1Rows[].mineralCertification.certifierDesignations.127.49(1) "independent engineer or geoscientist" paragraph (a). | null | object | |
| schedule76.part1Rows[].mineralCertification.certifierIsIndependents.127.49(1) "independent engineer or geoscientist" paragraph (b) — the individual "is at all times at arm's length with, independent of, and not employed by" the corporation. "N" denies the row. | null | string | |
| schedule76.part1Rows[].mineralCertification.certifyingProfessionalNameName of the individual signing the certification. | null | string | |
| schedule76.part1Rows[].mineralCertification.mineOrWellSites.127.49(2.1)(a) — the "particular mine site or well site" the certification names. | null | string | |
| schedule76.part1Rows[].mineralCertification.planPrimarilyTargetsQualifyingMaterialss.127.49(2.1)(b) — the property is used "in accordance with a plan that primarily targets qualifying materials". "N" denies the row. | null | string | |
| schedule76.part1Rows[].mineralValuationElections.127.49(2.2) valuation-method election. REQUIRED on an asset-code-30 or -31 row, ignored on every other code. | null | object | |
| schedule76.part1Rows[].mineralValuationElection.electionDateDate of the election (yyyy-mm-dd). | null | string | |
| schedule76.part1Rows[].mineralValuationElection.electionFiledWithReturnPractitioner confirmation that the election is filed together with this schedule. "N" denies the row. | null | string | |
| schedule76.part1Rows[].mineralValuationElection.valuationMethodThe elected method. Binding for all relevant tax years. | null | object | |
| schedule76.part1Rows[].otherCleanEconomyCreditClaimedOnPropertyWas an investment tax credit or any other clean economy tax credit deducted on this property by any person? ITA 127.49(5)(a)(ii) allows one clean economy credit per property, and a competing claim can sit on another taxpayer's return, so only an explicit N admits the row. | null | string | strict |
| schedule76.part1Rows[].previouslyUsedOrAcquiredForUseOrLeaseHad the property been used, or acquired for use or lease, for any purpose before the corporation acquired it? Paragraph (b) of the ITA 127.49(1) definition of CTM property requires previously unused property, so an explicit N is what admits the row. | null | string | strict |
| schedule76.part1Rows[].propertyIdentifierFree-text asset key shared with the other clean-economy Part 1 grids. Use the SAME key on every clean-economy schedule for the same asset: matching normalizes case and whitespace only, never a partial match. No CRA box — it exists so one property carrying a clean-economy credit on two schedules is detected, which s.127.49(5)(a)(ii) and the parallel s.127.45(5)(a)(ii) / s.127.48(10)(a)(ii) forbid. | null | string | |
| schedule76.part1Rows[].provinceOrTerritoryBox 108 / column 1D — Province or territory of the property. | null | string | strict |
| schedule76.part1Rows[].situatedAndUsedExclusivelyInCanadaIs the property situated in Canada and intended for use exclusively in Canada? Paragraph (a) of the ITA 127.49(1) definition of CTM property, so an explicit Y is what admits the row. | null | string | strict |
| schedule76.part1Rows[].specifiedPercentageBox 135 / column 1J — Specified percentage (s.127.49(1)). Engine derives from the AFU date; practitioner override surfaces a warning if it disagrees with the statutory bracket. Stored as decimal fraction 0-1 (e.g. 0.30 for 30%). | null | number | |
| schedule76.part1Rows[].storageEnergyConditionMet | null | string | |
| schedule76.part1Rows[].storageExcludedCategory | null | string | |
| schedule76.part1Rows[].storageFixedLocation | null | string | |
| schedule76.part1Rows[].storagePrimaryPurposeConfirmed | null | string | |
| schedule76.part1Rows[].transmittedEnergyFromEligibleGenerationPct | null | number | |
| schedule76.part1Rows[].usedWithEligibleGenerationEquipment | null | string | |
| schedule76.part2Rows | array | |
| schedule76.part2Rows[].availableForUseDateBox 210 / E(26) column 2E — Original available-for-use date. The 10-year recapture window per s.127.49(11)(a) is anchored on this date (current tax year + 10 preceding calendar years). | null | string | |
| schedule76.part2Rows[].capitalCostBox 225 / E(26) column 2H — Capital cost on which the CTM ITC was deducted (denominator of the recapture-proportion formula). | null | number | |
| schedule76.part2Rows[].ccaClassNumberBox 200 / column 2A — CCA class number of disposed/converted/exported CTM property. | null | string | |
| schedule76.part2Rows[].ctmItcRecapturedBox 235 / E(26) column 2J — Derived: lesser of 2F and 2I. | null | number | |
| schedule76.part2Rows[].ctmPropertyDescriptionBox 205 / column 2B — CTM property description. | null | string | |
| schedule76.part2Rows[].ctmUseCodeBox 206 / E(26) column 2C - CTM-use asset code for the property being recaptured. Required current-form evidence; never inferred from class. | null | object | |
| schedule76.part2Rows[].originalCtmItcAmountBox 215 / E(26) column 2F — Original CTM ITC amount claimed for the particular property. | null | number | |
| schedule76.part2Rows[].proceedsOrFmvBox 220 / E(26) column 2G — Proceeds of disposition (arm's length) or fair market value (non-arm's length / conversion to non-CTM use / export from Canada). Per s.127.49(12) footnote 6 + B(i)/B(ii). | null | number | |
| schedule76.part2Rows[].proportionRecapturedBox 230 / E(26) column 2I — Derived: 2F × (2G / 2H). | null | number | |
| schedule76.part2Rows[].provinceOrTerritoryBox 208 / E(26) column 2D — Province or territory. | null | string | |
| schedule76.part2Rows[].purchaserContinuesCtmUses.127.49(13) — is the property "used by the purchaser for a CTM use"? | null | string | |
| schedule76.part2Rows[].purchaserIsQualifyingTaxpayers.127.49(13) — is the purchaser a qualifying taxpayer? | null | string | |
| schedule76.part2Rows[].purchaserRelationshipRelationship of the purchaser to the transferor. | null | string | |
| schedule76.part3RowsRev-(26) per-partnership detail. This is the authority for lines 150/240 and totals 350/355. | array | |
| schedule76.part3Rows[].ctmItcAllocatedLine 310 / column 3C - CTM ITC allocated from T5013 box 292 or letter. | null | number | |
| schedule76.part3Rows[].ctmItcRecaptureAllocatedLine 315 / column 3D - CTM ITC recapture allocated from T5013 box 293 or letter. | null | number | |
| schedule76.part3Rows[].partnershipAccountNumberLine 305 / column 3B - partnership account number. | null | string | |
| schedule76.part3Rows[].partnershipNameLine 300 / column 3A - partnership's legal name. | null | string | |
| schedule76.taxationYearEndDate | null | string | |
| schedule76.taxationYearStartDateTaxation-year bounds (ISO YYYY-MM-DD). Form Part 1 footnote 2 requires the available-for-use date to be "within the current tax year", and that test runs against the real taxation period rather than its calendar label. That date gate is all the bounds do here: S76 has no s.127.46 indexed amount to prorate, since labour requirements do not apply to CTM property. Read-only display, never a preparer entry: the server imposes the return's own fiscalStart/fiscalEnd and blocks a blob carrying a different period. No CRA box. | 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 | string | always |
Strict profile accepted values (42 of 76 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 |
|---|---|
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| schedule76.isCanadianCorporation | one of "Y", "N", null |
| schedule76.isExemptFromTaxUnderPartI | one of "Y", "N", null |
| schedule76.isTaxShelterInvestment | one of "Y", "N", null |
| schedule76.part1Rows[].acquisitionDate | 1 to 10 characters |
| schedule76.part1Rows[].adjustments | -1000000000000000 to 1000000000000000 |
| schedule76.part1Rows[].assistanceRepaid | -1000000000000000 to 1000000000000000 |
| schedule76.part1Rows[].availableForUseDate | 1 to 10 characters |
| schedule76.part1Rows[].batteryProductionBenefitsFromContributionAgreement | one of "Y", "N" |
| schedule76.part1Rows[].capitalCost | -1000000000000000 to 1000000000000000 |
| schedule76.part1Rows[].ccaClassNumber | 1 to 2 characters |
| schedule76.part1Rows[].claimsClass431ElectricalStorage | one of "Y", "N" |
| schedule76.part1Rows[].claimsEligibleTransmissionEquipment | one of "Y", "N" |
| schedule76.part1Rows[].class431Subparagraph | one of "d(ii)", "d(v)", "d(vi)", "d(vii)", "d(xiv)", "d(xix)" |
| schedule76.part1Rows[].ctmPropertyDescription | 1 to 19 characters |
| schedule76.part1Rows[].ctmPropertyScheduleIIRoute | one of "d_i", "d_ii", "d_iii", "d_iv", "d_v", "d_vi", "d_vii" |
| schedule76.part1Rows[].ctmUseCode | 1 to 2 characters |
| schedule76.part1Rows[].ctmUseIsAllOrSubstantiallyAll | one of "Y", "N", null |
| schedule76.part1Rows[].ctmUseMineralOutputTestMet | one of "Y", "N" |
| schedule76.part1Rows[].designedForStreetOrHighwayUse | one of "Y", "N" |
| schedule76.part1Rows[].isBuilding | one of "Y", "N" |
| schedule76.part1Rows[].leaseMeetsQualifyingLesseeConditions | one of "Y", "N" |
| schedule76.part1Rows[].leasedToAnotherPerson | one of "Y", "N", null |
| schedule76.part1Rows[].mineralCertification.certificationFiledWithReturn | one of "Y", "N" |
| schedule76.part1Rows[].mineralCertification.certifierIsIndependent | one of "Y", "N" |
| schedule76.part1Rows[].mineralCertification.planPrimarilyTargetsQualifyingMaterials | one of "Y", "N" |
| schedule76.part1Rows[].mineralValuationElection.electionFiledWithReturn | one of "Y", "N" |
| schedule76.part1Rows[].otherCleanEconomyCreditClaimedOnProperty | one of "Y", "N", null |
| schedule76.part1Rows[].previouslyUsedOrAcquiredForUseOrLease | one of "Y", "N", null |
| schedule76.part1Rows[].propertyIdentifier | 1 to 10 characters |
| schedule76.part1Rows[].provinceOrTerritory | 1 to 2 characters |
| schedule76.part1Rows[].situatedAndUsedExclusivelyInCanada | one of "Y", "N", null |
| schedule76.part1Rows[].storageEnergyConditionMet | one of "Y", "N" |
| schedule76.part1Rows[].storageExcludedCategory | one of "none", "building", "pumped_hydroelectric_storage", "hydroelectric_dam_or_reservoir", "backup_only", "motor_vehicle_battery", "other_vehicle_battery", "other_automotive_equipment_battery", "vehicle_or_automotive_charging_property", "steam_methane_fuel_cell", "class_10_or_17" |
| schedule76.part1Rows[].storageFixedLocation | one of "Y", "N" |
| schedule76.part1Rows[].storagePrimaryPurposeConfirmed | one of "Y", "N" |
| schedule76.part1Rows[].usedWithEligibleGenerationEquipment | one of "Y", "N" |
| schedule76.part2Rows[].purchaserContinuesCtmUse | one of "Y", "N" |
| schedule76.part2Rows[].purchaserIsQualifyingTaxpayer | one of "Y", "N" |
| schedule76.part2Rows[].purchaserRelationship | one of "related", "arms_length" |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (80)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| line_100 | null | string |
| line_105 | null | string |
| line_106 | null | string |
| line_108 | null | string |
| line_110 | null | string |
| line_115 | number |
| line_120 | number |
| line_125 | number |
| line_130 | number |
| line_135 | number |
| line_145 | number |
| line_150 | number |
| line_155 | number |
| amount_a_total_col_1k | number |
| part1Rows[].propertyIdentifier | null | string |
| part1Rows[].ccaClassNumber | null | string |
| part1Rows[].ctmPropertyDescription | null | string |
| part1Rows[].ctmUseCode | null | string |
| part1Rows[].provinceOrTerritory | null | string |
| part1Rows[].availableForUseDate | null | string |
| part1Rows[].capitalCost | number |
| part1Rows[].adjustments | number |
| part1Rows[].assistanceRepaid | number |
| part1Rows[].amountEligibleForItc | number |
| part1Rows[].specifiedPercentage | number |
| part1Rows[].ctmItcAmount | number |
| line_200 | array | boolean | null | number | object | string |
| line_205 | array | boolean | null | number | object | string |
| line_206 | array | boolean | null | number | object | string |
| line_208 | array | boolean | null | number | object | string |
| line_210 | array | boolean | null | number | object | string |
| line_215 | number |
| line_220 | number |
| line_225 | number |
| line_230 | number |
| line_235 | number |
| line_240 | number |
| line_245 | number |
| amount_b_total_col_2j | number |
| part2Rows | array |
| line_300 | array | boolean | null | number | object | string |
| line_305 | array | boolean | null | number | object | string |
| line_310 | number |
| line_315 | number |
| line_350 | number |
| line_355 | number |
| part3_total_itc_line_350 | number |
| part3_total_recapture_line_355 | number |
| part3Rows | array |
| total_itc_line_155 | number |
| total_recapture_line_245 | number |
| s31_feed_ctm_itc | number |
| s31_feed_recapture | 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[].anchor_rowThe Filemark input anchor for the grid ROW a row-scoped finding is about. | string |
| warnings[].box | 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 |
| fired_gates | object |
| provisional | boolean |
| ready | boolean |
| missing_required | array |
| coverageStatus | string |
| coverageReason | string |