schedule74
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2023 and later
- Strict profile
- s74_exact_single_request_target_value_v1
- Payload schema version
- 0.10.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": [
"schedule74"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"schedule74": {
"isCanadianCorporation": "Y",
"isExemptFromTaxUnderPartI": "N",
"nrcanProjectCode": "NRCAN-PUBLIC-74",
"firstDayComplianceperiod": "2025-01-01",
"projectExpectedCarbonIntensity": 0.5,
"isTaxShelterInvestment": "N",
"part1Rows": [
{
"propertyIdentifier": "FA-74-0001",
"ccaClassNumber": "43.1",
"assetCode": "01",
"provinceOrTerritory": "AB",
"acquisitionDate": "2024-11-01",
"availableForUseDate": "2025-06-15",
"designatedWorkSites": "WS-74",
"capitalCost": 100000,
"adjustments": 0,
"electingLabourRequirements": "Y",
"otherCleanEconomyCreditClaimedOnProperty": "N",
"percentageForHydrogenProduction": 1,
"percentageForAmmoniaProduction": 0,
"preparedOrInstalledDate": "2025-06-15",
"previouslyUsedOrAcquiredForUseOrLease": "N"
}
],
"signingOfficerFirstName": "Jane",
"signingOfficerLastName": "Smith",
"signingOfficerPosition": "CFO",
"attestationDate": "2025-12-01",
"metLabourRequirements": "Y"
}
}
}Input cells (99)
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 | |
| schedule74.apprenticeHoursActual | null | number | |
| schedule74.apprenticeHoursRequired | null | number | |
| schedule74.attestationDate | null | string | strict |
| schedule74.dateOfPurchase | null | string | |
| schedule74.dateOfSale | null | string | |
| schedule74.daysBelowPrevailingWage | null | number | |
| schedule74.eligiblePathway | null | string | |
| schedule74.firstDayComplianceperiodLine 105: the first day of the project's compliance period. Required before the s.127.48(30) post-compliance carbon-intensity substitution can be tested for any acquired property. | null | string | |
| schedule74.firstDayHydrogenProduced | null | string | |
| schedule74.firstElectionDelay | null | string | |
| schedule74.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 | |
| schedule74.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 | |
| schedule74.isTaxShelterInvestments.127.48(14) — is the eligible clean hydrogen 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. No CRA box; tri-state with null = unanswered. | null | string | |
| schedule74.lastAnnualCiReportDate | null | string | |
| schedule74.line190PartnershipAllocatedItc | null | number | |
| schedule74.line335PartnershipAllocatedLabourAddition | null | number | |
| schedule74.line645PartnershipAllocatedRecapture | null | number | |
| schedule74.line700ExpectedCarbonIntensity | null | number | |
| schedule74.line705ComplianceperiodEndedDate | null | string | |
| schedule74.line710AverageActualCarbonIntensityLine 710. Required for a Part 1 property acquired after the compliance period even when no Part 7 recovery-tax row is filed. | null | number | |
| schedule74.line715FiledRevisedPlan | null | string | |
| schedule74.line720DeemedAverageActualCarbonIntensity | null | number | |
| schedule74.line760PartnershipAllocatedRecoveryTax | null | number | |
| schedule74.metLabourRequirementsPart 3 line-300 answer confirming that the elected prevailing-wage and apprenticeship requirements were met. | null | string | |
| schedule74.nrcanProjectCode | null | string | strict |
| schedule74.part1Rows | array | |
| schedule74.part1Rows[].acquisitionDateThe real acquisition date (ISO YYYY-MM-DD). Paragraph (a) of the s.127.48(1) "eligible clean hydrogen property" definition tests acquisition and available-for-use separately, so the AFU date alone cannot establish the acquisition limb. No CRA box — an engine operand, like the Part 6/7 AFU dates. Absent, the row blocks with a box-120 error; supplied, s.127.48(5) picks the later of the two dates to select the specified-percentage bracket. | null | string | strict |
| schedule74.part1Rows[].adjustmentsT2 SCH 74 Part 1 column 1G: government and non-government assistance in respect of the property that was received, is receivable, or can reasonably be expected. ITA 127.48(10)(c) reduces the capital cost the credit runs on by that total, so the amount is established before the credit is computed. Enter 0 when there is none; a blank is not a nil and holds the row's credit at zero. | null | number | strict |
| schedule74.part1Rows[].amountEligibleForItc | null | number | |
| schedule74.part1Rows[].assetCode | null | string | strict |
| schedule74.part1Rows[].assistanceRepaidColumn 1H — assistance repaid or no longer reasonably expected (s.127.48(11)). INCREASES the amount eligible for ITC. Blank is the ordinary "nothing was repaid" state; an unreadable entry blocks. | null | number | |
| schedule74.part1Rows[].availableForUseDate | null | string | strict |
| schedule74.part1Rows[].capitalCost | null | number | strict |
| schedule74.part1Rows[].ccaClassNumber | null | string | strict |
| schedule74.part1Rows[].cleanHydrogenItcAmount | null | number | |
| schedule74.part1Rows[].cleanHydrogenPortion | null | number | |
| schedule74.part1Rows[].designatedWorkSites | null | string | strict |
| schedule74.part1Rows[].electingLabourRequirements | null | string | strict |
| schedule74.part1Rows[].otherCleanEconomyCreditClaimedOnPropertyWas an investment tax credit or any other clean economy tax credit deducted on this property by any person? ITA 127.48(10)(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 |
| schedule74.part1Rows[].percentageForAmmoniaProductionColumn 1M: the expected-use percentage allocated to ammonia production. Both s.127.48(10)(g) allocation legs must be readable - an explicit zero, never a blank. | null | number | |
| schedule74.part1Rows[].percentageForHydrogenProductionColumn 1L. Enter explicitly, including 0, unless code 06 proves the statutory sole-ammonia use. | null | number | strict |
| schedule74.part1Rows[].percentageForQualifiedProject | null | number | |
| schedule74.part1Rows[].preparedOrInstalledDateThe date preparation or installation of the property was COMPLETED (ISO YYYY-MM-DD). The s.127.46(1) "installation taxation year" operand, and the only date that decides whether the labour requirements reach the property — the available-for-use date is not a substitute for it. No CRA box — an engine operand, the same one Schedule 75 and Schedule 78 collect. Blank blocks a claiming row; there is no fallback. | null | string | |
| schedule74.part1Rows[].previouslyUsedOrAcquiredForUseOrLeaseHad the property been used, or acquired for use or lease, by any person or partnership for any purpose before the corporation acquired it? Paragraph (b) of the ITA 127.48(1) definition of eligible clean hydrogen property requires previously unused property, so an explicit N is what admits the row. The prescribed form prints no column for it, which does not make the definition optional. | null | string | strict |
| schedule74.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.48(10)(a)(ii) and the parallel s.127.45(5)(a)(ii) / s.127.49(5)(a)(ii) forbid. | null | string | |
| schedule74.part1Rows[].provinceOrTerritory | null | string | strict |
| schedule74.part1Rows[].specifiedPercentageAmmonia | null | number | |
| schedule74.part1Rows[].specifiedPercentageHydrogen | null | number | |
| schedule74.part4Rows | array | |
| schedule74.part4Rows[].daysNotOperating | null | number | |
| schedule74.part4Rows[].endDate | null | string | |
| schedule74.part4Rows[].operatingYear | number | |
| schedule74.part4Rows[].startDate | null | string | |
| schedule74.part6Rows | array | |
| schedule74.part6Rows[].adjustedItc | null | number | |
| schedule74.part6Rows[].assetCode | null | string | |
| schedule74.part6Rows[].availableForUseDate | null | string | |
| schedule74.part6Rows[].capitalCost | null | number | |
| schedule74.part6Rows[].ccaClassNumber | null | string | |
| schedule74.part6Rows[].cleanHydrogenItcRecaptured | null | number | |
| schedule74.part6Rows[].originalCleanHydrogenItcAmount | null | number | |
| schedule74.part6Rows[].priorRecoveryTaxPaid | null | number | |
| schedule74.part6Rows[].proceedsOrFmv | null | number | |
| schedule74.part6Rows[].provinceOrTerritory | null | string | |
| schedule74.part7Rows | array | |
| schedule74.part7Rows[].assetCode | null | string | |
| schedule74.part7Rows[].availableForUseDate | null | string | |
| schedule74.part7Rows[].capitalCost | null | number | |
| schedule74.part7Rows[].ccaClassNumber | null | string | |
| schedule74.part7Rows[].electingLabourRequirementsThe row's s.127.46(2) labour-requirements election, on the same terms as the Part 1 column 1Q answer. The s.127.48(18) counterfactual varies the carbon intensity alone and holds the labour status constant, so column 7F mirrors this answer. Unanswered leaves 7F at the regular rate and reports the status as unproven rather than inventing one. No CRA box — an engine operand. | null | string | |
| schedule74.part7Rows[].preparedOrInstalledDateThe date preparation or installation of the property was COMPLETED (ISO YYYY-MM-DD; slashes tolerated). The s.127.46(1) "installation taxation year" operand, and the only date that decides whether the labour requirements reach the property at all: a date before the 2023-11-27 cutover puts the property outside s.127.46 entirely, so the election answer cannot change column 7F. A malformed value is treated as unproven, never as the cutover date. The same operand the Part 1 grid collects. No CRA box. | null | string | |
| schedule74.part7Rows[].provinceOrTerritory | null | string | |
| schedule74.part7Rows[].recoveryTax | null | number | |
| schedule74.part7Rows[].specifiedPercentageUsed | null | number | |
| schedule74.part7Rows[].specifiedPercentageWouldApply | null | number | |
| schedule74.priorYearRegularRateClaimForInstallationYears.127.46(6)/(7) assess the addition in the INSTALLATION taxation year for a credit claimed at the regular rate "in a taxation year" — which need not be this one. Current Part 1 rows cannot prove an earlier year's claim, so the corporation states it. Unanswered holds lines 315/330. | null | string | |
| schedule74.projectExpectedCarbonIntensity | null | number | strict |
| schedule74.purchaserBusinessNumber | null | string | |
| schedule74.purchaserElectionTick | null | string | |
| schedule74.purchaserName | null | string | |
| schedule74.purchaserSignedDate | null | string | |
| schedule74.purchaserSigningOfficer | null | string | |
| schedule74.secondElectionDelay | null | string | |
| schedule74.signingOfficerFirstName | null | string | strict |
| schedule74.signingOfficerLastName | null | string | strict |
| schedule74.signingOfficerPosition | null | string | strict |
| schedule74.signingOfficerTelephone | null | string | |
| schedule74.submittedFinalDesigns | null | string | |
| schedule74.taxationYearEndDate | null | string | |
| schedule74.taxationYearStartDateTaxation-year bounds (ISO YYYY-MM-DD). They gate every Part 1 s.127.48 date against the real taxation period rather than its calendar label, and they drive the s.127.46(8) proration of the Part 3 additions to tax. 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 | |
| schedule74.vendorBusinessNumber | null | string | |
| schedule74.vendorElectionTick | null | string | |
| schedule74.vendorName | null | string | |
| schedule74.vendorSignedDate | null | string | |
| schedule74.vendorSigningOfficer | null | string | |
| schedule74.workersBelowPrevailingWageCount | null | number | |
| 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 (39 of 99 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 |
| schedule74.attestationDate | 1 to 10 characters |
| schedule74.firstDayComplianceperiod | 0 to 20000 characters |
| schedule74.firstElectionDelay | one of "Y", "N" |
| schedule74.isCanadianCorporation | one of "Y", "N", null |
| schedule74.isExemptFromTaxUnderPartI | one of "Y", "N", null |
| schedule74.isTaxShelterInvestment | one of "Y", "N", null |
| schedule74.line715FiledRevisedPlan | one of "Y", "N" |
| schedule74.metLabourRequirements | one of "Y", "N", null |
| schedule74.nrcanProjectCode | 1 to 15 characters |
| schedule74.part1Rows[].acquisitionDate | 1 to 10 characters |
| schedule74.part1Rows[].adjustments | -1000000000000000 to 1000000000000000 |
| schedule74.part1Rows[].assetCode | one of "01", "02", "03", "04", "05", "06", "07", "08", "09", null |
| schedule74.part1Rows[].availableForUseDate | 1 to 10 characters |
| schedule74.part1Rows[].capitalCost | -1000000000000000 to 1000000000000000 |
| schedule74.part1Rows[].ccaClassNumber | 1 to 4 characters |
| schedule74.part1Rows[].designatedWorkSites | 1 to 5 characters |
| schedule74.part1Rows[].electingLabourRequirements | one of "Y", "N", null |
| schedule74.part1Rows[].otherCleanEconomyCreditClaimedOnProperty | one of "Y", "N", null |
| schedule74.part1Rows[].percentageForAmmoniaProduction | -1000000000000000 to 1000000000000000 |
| schedule74.part1Rows[].percentageForHydrogenProduction | -1000000000000000 to 1000000000000000 |
| schedule74.part1Rows[].preparedOrInstalledDate | 0 to 20000 characters |
| schedule74.part1Rows[].previouslyUsedOrAcquiredForUseOrLease | one of "Y", "N", null |
| schedule74.part1Rows[].propertyIdentifier | 1 to 10 characters |
| schedule74.part1Rows[].provinceOrTerritory | 1 to 2 characters |
| schedule74.part6Rows[].assetCode | one of "01", "02", "03", "04", "05", "06", "07", "08", "09" |
| schedule74.part7Rows[].assetCode | one of "01", "02", "03", "04", "05", "06", "07", "08", "09" |
| schedule74.part7Rows[].electingLabourRequirements | one of "Y", "N" |
| schedule74.priorYearRegularRateClaimForInstallationYear | one of "Y", "N" |
| schedule74.projectExpectedCarbonIntensity | -1000000000000000 to 1000000000000000 |
| schedule74.purchaserElectionTick | one of "Y", "N" |
| schedule74.secondElectionDelay | one of "Y", "N" |
| schedule74.signingOfficerFirstName | 1 to 4 characters |
| schedule74.signingOfficerLastName | 1 to 5 characters |
| schedule74.signingOfficerPosition | 1 to 3 characters |
| schedule74.submittedFinalDesigns | one of "Y", "N" |
| schedule74.vendorElectionTick | one of "Y", "N" |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (134)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| line_099 | null | string |
| line_100 | array | boolean | null | number | object | string |
| line_101 | array | boolean | null | number | object | string |
| line_102 | array | boolean | null | number | object | string |
| line_103 | array | boolean | null | number | object | string |
| line_104 | array | boolean | null | number | object | string |
| line_105 | null | string |
| line_106 | null | string |
| line_110 | null | string |
| line_115 | null | string |
| line_120 | null | string |
| line_125 | null | string |
| line_130 | number |
| line_135 | number |
| line_140 | number |
| line_145 | number |
| line_150 | number |
| line_155 | number |
| line_160 | number |
| line_165 | number |
| line_170 | number |
| line_175 | number |
| line_180 | number |
| line_185 | null | string |
| line_190 | number |
| line_195 | number |
| part1Rows[].propertyIdentifier | null | string |
| part1Rows[].ccaClassNumber | null | string |
| part1Rows[].assetCode | null | string |
| part1Rows[].provinceOrTerritory | null | string |
| part1Rows[].availableForUseDate | null | string |
| part1Rows[].designatedWorkSites | null | string |
| part1Rows[].capitalCost | number |
| part1Rows[].adjustments | number |
| part1Rows[].assistanceRepaid | number |
| part1Rows[].amountEligibleForItc | number |
| part1Rows[].percentageForQualifiedProject | number |
| part1Rows[].cleanHydrogenPortion | number |
| part1Rows[].percentageForHydrogenProduction | number |
| part1Rows[].percentageForAmmoniaProduction | number |
| part1Rows[].specifiedPercentageHydrogen | number |
| part1Rows[].specifiedPercentageAmmonia | number |
| part1Rows[].cleanHydrogenItcAmount | number |
| part1Rows[].electingLabourRequirements | null | string |
| part1Rows[]._labourReductionApplied | boolean |
| line_200 | null | string |
| line_201 | null | string |
| line_202 | null | string |
| line_203 | null | string |
| line_204 | array | boolean | null | number | object | string |
| line_300 | null | string |
| line_305 | number |
| line_310 | number |
| line_315 | number |
| line_320 | number |
| line_325 | number |
| line_330 | number |
| line_335 | number |
| line_340 | number |
| line_400 | array | boolean | null | number | object | string |
| line_401 | number |
| line_402 | array | boolean | null | number | object | string |
| line_403 | array | boolean | null | number | object | string |
| part4Rows | array |
| line_500 | array | boolean | null | number | object | string |
| line_501 | array | boolean | null | number | object | string |
| line_502 | array | boolean | null | number | object | string |
| line_503 | array | boolean | null | number | object | string |
| line_504 | array | boolean | null | number | object | string |
| line_505 | array | boolean | null | number | object | string |
| line_506 | array | boolean | null | number | object | string |
| line_507 | array | boolean | null | number | object | string |
| line_508 | array | boolean | null | number | object | string |
| line_509 | array | boolean | null | number | object | string |
| line_510 | array | boolean | null | number | object | string |
| line_511 | array | boolean | null | number | object | string |
| line_600 | array | boolean | null | number | object | string |
| line_605 | array | boolean | null | number | object | string |
| line_610 | array | boolean | null | number | object | string |
| line_615 | number |
| line_620 | number |
| line_625 | number |
| line_630 | number |
| line_635 | number |
| line_640 | number |
| line_645 | number |
| line_650 | number |
| part6Rows | array |
| line_700 | number |
| line_705 | array | boolean | null | number | object | string |
| line_710 | number |
| line_715 | array | boolean | null | number | object | string |
| line_720 | number |
| line_725 | array | boolean | null | number | object | string |
| line_730 | array | boolean | null | number | object | string |
| line_735 | array | boolean | null | number | object | string |
| line_740 | number |
| line_745 | number |
| line_750 | number |
| line_755 | number |
| line_760 | number |
| line_765 | number |
| part7Rows | array |
| total_itc_line_195 | number |
| total_labour_addition_line_340 | number |
| total_recapture_line_650 | number |
| total_recovery_tax_line_765 | number |
| s31_feed_clean_hydrogen_itc | number |
| s31_feed_clean_hydrogen_clawback | number |
| t2_line_580_feed_labour_addition | number |
| warnings[].box | string |
| warnings[].anchor_field | string |
| warnings[].severity | string |
| warnings[].code | string |
| warnings[].message | string |
| warnings[].gate_id | string |
| warnings[].citation.gate_id | string |
| warnings[].citation.form_id | string |
| warnings[].citation.rule | string |
| warnings[].citation.cra_text_verbatim | string |
| warnings[].citation.source | string |
| warnings[].citation.source_url | string |
| warnings[].citation.form_revision | string |
| warnings[].citation.applies_to_boxes[] | string |
| warnings[].citation.verified_at | string |
| warnings[].anchor_row | string |
| fired_gates | object |
| provisional | boolean |
| ready | boolean |
| missing_required[] | string |
| recovery_tax_assessment_year_unproven | boolean |
| amount_a_total_col_1p | number |
| amount_b_total_col_6i | number |
| amount_c_total_col_7g | number |