schedule31
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2024 and later
- Strict profile
- s31_single_apprenticeship_itc_profile_target_value_v1
- Payload schema version
- 0.9.0
- Dependencies (run automatically)
- part_i_tax, schedule23, schedule4, schedule49, schedule74, schedule75, schedule76, schedule78, t661
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": [
"schedule31"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"daysInYear": 365,
"corpType": "1",
"filerBn": "123456782RC0001",
"schedule31": {
"hasRelatedEmployersForApprentices": false,
"part19Rows": [
{
"contractNumber": "CTR-001",
"eligibleTradeName": "Electrician",
"eligibleSalaryWages": 10000
}
]
}
}
}Input cells (168)
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 |
|---|---|---|
| corpType | string | strict |
| daysInYearDays in the taxation year, tied to the inclusive fiscalStart-to-fiscalEnd span. ITA s.249(1)(a) makes the taxation year the fiscal period, and the Part I rates and limits this request's dependency closure computes are day-weighted, so the engine requires the stated count instead of assuming a calendar year. | integer | strict |
| filerBn | string | 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 |
| schedule31Schedule 31 (Investment Tax Credit, s.127) practitioner blob. A result is emitted only when the blob is present, so an unopened form never blocks export. | object | |
| schedule31.amount25CRecapturedCleanHydrogenAmount 25C — Clean Hydrogen recapture / recovery (s.127.48). | null | number | |
| schedule31.amount25DRecapturedCleanTechAmount 25D — Clean Tech recapture (s.127.45). From Schedule 75. | null | number | |
| schedule31.amount25ERecapturedCleanTechMfgAmount 25E — Clean Tech Mfg recapture (s.127.49). | null | number | |
| schedule31.amount25GRecapturedCleanElectricityClean electricity investment tax credit recapture for the year, printed as form amount 24E. A negative value is floored to zero. Where the canonical ITA s.127.491(17) recapture events are also supplied, the calculated amount controls and a disagreement is reported as an error. | null | number | string | |
| schedule31.apprenticeshipItcOtherwiseBasisReducedWas the credit already absorbed by one of the carve-outs — most often ITA 13(7.1)(e), which subtracts "all amounts deducted under subsection 127(5) or (6) ..." from the deemed capital cost of the property? A `true` answer makes the 12(1)(t) inclusion NIL: government grinds the pool or includes the credit in income, never both. `null` blocks. | boolean | null | |
| schedule31.apprenticeshipItcRelatedToDeductedSalaryExpenditureDid the credit relate to salary and wages that were themselves DEDUCTED in computing income? That is the ITA 12(1)(t) precondition. `null` blocks the following year's Schedule 1. | boolean | null | |
| schedule31.ecpcConsolidatedGroupAgreementConfirmed | boolean | null | |
| schedule31.ecpcConsolidatedGroupExpenditureLimit | null | number | |
| schedule31.ecpcConsolidatedGroupMemberWas the ECPC a member of a consolidated group at any time in the year? ITA 127(10.61) makes a member's expenditure limit nil absent an allocation under 127(10.62)/(10.63). | boolean | null | |
| schedule31.ecpcConsolidatedGroupMemberAllocation | null | number | |
| schedule31.ecpcEligibilityConfirmedUnderlying ITA 127(9) residence, public-corporation/control or eligible- subsidiary tests have been reviewed and documented. Box 382 alone is not treated as a second copy of that legal-status evidence. | boolean | null | |
| schedule31.ecpcRefundabilityApplicationConfirmedThe ECPC refund claim satisfies S.C. 2026, c. 3, s.48(5)'s property- acquisition / lease-cost application dates. | boolean | null | |
| schedule31.farmingContributionNotAlreadyInT661The check-off contribution entered in Part 3 is not already included in the producer corporation's Form T661. Explicit false blocks duplication. | boolean | null | |
| schedule31.farmingGrossContributionGross contribution amount (engine applies 80% factor → line 103). | null | number | |
| schedule31.hasRelatedEmployersForApprenticesT2 SCH 31 Part 19 box 611: related employers employ the same eligible apprentice, so the s.127(9) apprenticeship expenditure cap must be shared under the related-employer agreement. | boolean | null | strict |
| schedule31.isAssociatedForExpLimitPart 9 line 385 — Associated with another CCPC for SR&ED expenditure-limit purposes (per s.127(10.1)/(10.2)). When true, triggers Schedule 49 dependency. | boolean | null | |
| schedule31.isCcpcThroughout-the-year CCPC status per s.125(7). Gates the 35% enhanced SR&ED rate (s.127(10.1)) and refundability under Part 14/15. | boolean | null | |
| schedule31.isEcpcLine 382 — Are you an eligible Canadian public corporation (ECPC)? | boolean | null | |
| schedule31.isElectingRevenueBasedLimitLine 383 — Are you a CCPC electing under s.127(10.31) (single) or s.127(10.32) (associated group) to determine the SR&ED expenditure limit on the REVENUE measure instead of taxable capital? When true (or for an ECPC) in a TYS-after-Dec-15-2024 year, Part 10B substitutes line 399 for line 398 in the $6M × [($60M − A) ÷ $60M] formula. | boolean | null | |
| schedule31.isExcludedCorpPart 2B line 650 — Excluded corporation per s.127.1(2) (controlled by / related to tax-exempt or public-authority persons). Triggers footnote-7 40%-on-all refund tier. | boolean | null | |
| schedule31.isFarmingCheckOffDuesClaimantPart 3 line 102 — Claiming an agricultural-organization SR&ED contribution (e.g. check-off dues). 80% factor applies. | boolean | null | |
| schedule31.isQualifyingCorpPart 2A line 101 — Qualifying corporation per s.127.1(2) (CCPC + PY taxable income ≤ qualifying income limit). | boolean | null | |
| schedule31.itcBusinessContinuesPostAocTri-state attestation: the same or a similar business (s.127(9.1)(d)(i)) is carried on for profit post-AoC and substantially all post-AoC tax payable is attributable to it, so the s.127(5) tax-payable cap already binds. null = unanswered — a Part-I deduction drawing on a pre-AoC opening pool FAILS CLOSED (error severity, removed from T2 line 652) until this is answered or the s.127(9.1)(d) cap below is supplied. | boolean | null | |
| schedule31.itcLossRestrictionEventDateISO YYYY-MM-DD date of the loss restriction event the corporation was last subject to. Send it with the pre-event vintages or cohorts when no linked prior filed return carries that provenance. An unparseable value raises and blocks the restriction calculation. | null | string | |
| schedule31.line140CleanHydrogenItcLine 140 — Clean Hydrogen ITC (s.127.48). Sourced from Schedule 76 (RETRIEVAL-OPEN — CRA may publish later); entered directly today. | null | number | |
| schedule31.line155CleanTechItcLine 155 — Clean Technology ITC (s.127.45). From Schedule 75. | null | number | |
| schedule31.line170CleanTechMfgItcLine 170 — Clean Tech Manufacturing ITC (s.127.49). Entered directly on S31 (no separate companion form per Part 24). | null | number | |
| schedule31.line185CleanElectricityApprenticeHoursActual | null | number | |
| schedule31.line185CleanElectricityApprenticeHoursRequired | null | number | |
| schedule31.line185CleanElectricityAttestationDate | null | string | |
| schedule31.line185CleanElectricityClaimFormAuthorizeds.127.491(2) prescribed form containing prescribed information was completed by the filing-due date. | boolean | null | |
| schedule31.line185CleanElectricityDaysBelowPrevailingWage | null | number | |
| schedule31.line185CleanElectricityItcLine 185 — Clean electricity ITC (s.127.491). E (26) fifth clean-economy stream; property acquired after Apr 15 2024. | null | number | |
| schedule31.line185CleanElectricityLabourElections.127.46(2) election to claim the regular rather than reduced rate. | boolean | null | |
| schedule31.line185CleanElectricityMetLabourRequirementsInstallation-year s.127.46(3)/(5) compliance answer. | null | string | |
| schedule31.line185CleanElectricityPropertiesPer-property authority for line 185. | array | |
| schedule31.line185CleanElectricityProperties[].acquisitionDate | null | string | |
| schedule31.line185CleanElectricityProperties[].assistanceAmount | null | number | |
| schedule31.line185CleanElectricityProperties[].availableForUseDate | null | string | |
| schedule31.line185CleanElectricityProperties[].capitalCost | null | number | |
| schedule31.line185CleanElectricityProperties[].designatedWorkSitess.127.46(1) designated work site(s) covered by the labour election. | null | string | |
| schedule31.line185CleanElectricityProperties[].otherCleanEconomyCreditClaimedOnPropertyITA 127.491(9)(a)(ii): another clean-economy credit claimed by any person. | null | string | |
| schedule31.line185CleanElectricityProperties[].preparedOrInstalledDates.127.46(1) installation taxation year: the date preparation or installation was completed. s.127.46 reaches this credit only for property prepared or installed on or after 2023-11-28, and the available-for-use date is not a substitute. | null | string | |
| schedule31.line185CleanElectricityProperties[].propertyIdentifierShared fixed-asset key for the five-credit anti-stacking register. | null | string | |
| schedule31.line185CleanElectricityProperties[].qualifyingEntityType | null | string | |
| schedule31.line185CleanElectricityProperties[].writtenAgreementConfirmed | null | string | |
| schedule31.line185CleanElectricitySigningOfficerFirstNamePrescribed-form signing-officer evidence for a regular-rate election. | null | string | |
| schedule31.line185CleanElectricitySigningOfficerLastName | null | string | |
| schedule31.line185CleanElectricitySigningOfficerPosition | null | string | |
| schedule31.line185CleanElectricityWorkersBelowPrevailingWageCount | null | number | |
| schedule31.line200CcusItcLine 200 — Carbon Capture, Utilization & Storage ITC (s.127.44). From Schedule 78. | null | number | |
| schedule31.line210CoopRemittanceQpLine 210 — Credit deemed as a remittance of co-op corporations. | null | number | |
| schedule31.line215CreditExpiredQpExtraLine 215 EXTRA — Manual addition to the engine-computed expiry amount (carryforward expiries are auto-detected from vintage ledger; this captures any non-vintage-tracked adjustments). | null | number | |
| schedule31.line230AmalgamTransferInQpLine 230 — Credit transferred on amalgamation / wind-up (s.87/88). | null | number | |
| schedule31.line235ItcFromRepaymentQpLegacy reported line 235. The engine neutralizes it until an authenticated repayment/property authority path is implemented. | null | number | |
| schedule31.line250PartnershipAllocationQpLine 250 — Credit allocated from a partnership (s.127(8)). | null | number | |
| schedule31.line260DeductedFromPartIQpLine 260 — Credit deducted from Part I tax. | null | number | |
| schedule31.line280TransferredToPartViiQpLine 280 — Credit transferred to offset Part VII tax liability. | null | number | |
| schedule31.line310RefundClaimedQpLine 310 — Refund amount designated on the prescribed form under ITA 127.1(1)(d), capped by the Part 7 maximum. Explicit 0 is a valid designation; null leaves the designation unanswered. | null | number | |
| schedule31.line360CapitalExpendituresT661Line 360 — Capital SR&ED expenditures incurred after December 15, 2024 (T661 line 558). E (26): the 2024 reform restores capital SR&ED for depreciable property acquired after Dec 15 2024 used for SR&ED. | null | number | |
| schedule31.line370RepaymentsT661Line 370 — Repayments made in the year (T661 line 560). | null | number | |
| schedule31.line390PriorYearTaxableIncomeBox 390 — PY taxable income (pre loss-carrybacks). Short-year prorated by the engine per form note. | null | number | |
| schedule31.line398PyTaxableCapitalMinus10MLegacy/import line 398 value. Hub computation derives this stand-alone CCPC line from canonical Prior-Year Tax Attributes TCEC; associated CCPCs use Schedule 49. Retained for imported form data and API backward compatibility, never derived from the current-year draft S33 node. | null | number | |
| schedule31.line399EcpcRevenueMinus15MLine 399 — variable A of s.127(10.6): three-year average annual revenue MINUS $15M (floored at 0, capped at $60M). The form-faithful DIRECT input — the practitioner enters the already-averaged/grossed-up figure. Supply this OR the raw revenuePriorYear1/2/3 inputs below (the raw path, when supplied, wins and lets the engine do the averaging). | null | number | |
| schedule31.line400Schedule49AllocationLegacy/import line 400 value. Hub computation resolves the filing corporation's canonical Schedule 49 row; retained only as an API/import fallback for records without a matched Schedule 49 result. | null | number | |
| schedule31.line460RepaymentAssistanceCcpcLine 460 — Repayment of assistance that reduced a qualifying expenditure for a CCPC. 35% rate applied. | null | number | |
| schedule31.line480RepaymentPre2015Line 480 — Repayment of assistance made after Sep 16, 2016 that reduced a qualifying expenditure incurred BEFORE 2015. 20% rate. | null | number | |
| schedule31.line490RepaymentPost2014Line 490 — Repayment of assistance made after Sep 16, 2016 that reduced a qualifying expenditure incurred AFTER 2014. 15% rate. | null | number | |
| schedule31.line510CoopRemittanceSred | null | number | |
| schedule31.line515CreditExpiredSredExtra | null | number | |
| schedule31.line530AmalgamTransferInSred | null | number | |
| schedule31.line550PartnershipAllocationSred | null | number | |
| schedule31.line560DeductedFromPartISred | null | number | |
| schedule31.line580TransferredToPartViiSred | null | number | |
| schedule31.line610RefundClaimedSredBox 610, the refund of the SR&ED investment tax credit claimed for the year. On an eligible Canadian private corporation in a reform year it is the separate ITA s.127.1 refund claim that S.C. 2026, c. 3, s.48(5) governs: ECPC status and the tax-year-start rule prove the enhanced rate, not this refund rule, so state the amount rather than leaving it to be inferred. | null | number | string | |
| schedule31.line611RelatedEmployerSingleClaimerAgreementPart 19 line 611 — Related-employer single-claimer agreement is on file per s.127(11.4) when multiple s.251(2)-related employers jointly employ an apprentice. | boolean | null | |
| schedule31.line612CoopRemittanceAjctc | null | number | |
| schedule31.line615CreditExpiredAjctcExtra | null | number | |
| schedule31.line630AmalgamTransferInAjctc | null | number | |
| schedule31.line635ItcFromRepaymentAjctcLegacy reported line 635. The engine neutralizes it until an authenticated repayment/apprentice authority path is implemented. | null | number | |
| schedule31.line655PartnershipAllocationAjctc | null | number | |
| schedule31.line660DeductedFromPartIAjctc | null | number | |
| schedule31.line760PartnershipExcessSredLine 760 — Corporate partner's share of partnership-level excess SR&ED ITC recapture (s.127(28)). | null | number | |
| schedule31.line765CoopRemittanceChildCare | null | number | |
| schedule31.line770CreditExpiredChildCareExtra | null | number | |
| schedule31.line777AmalgamTransferInChildCare | null | number | |
| schedule31.line782PartnershipAllocationChildCare | null | number | |
| schedule31.line785DeductedFromPartIChildCare | null | number | |
| schedule31.line799PartnershipExcessChildCareLine 799 — Corporate partner's share of partnership-level excess child-care-spaces ITC recapture. | null | number | |
| schedule31.line841CoopRemittancePpm | null | number | |
| schedule31.line845CreditExpiredPpmExtra | null | number | |
| schedule31.line860AmalgamTransferInPpm | null | number | |
| schedule31.line885CarryforwardAppliedPpmLine 885 — Carryforward applied to reduce Part I tax. | null | number | |
| schedule31.line901CarrybackY1QpLine 901 — Credit applied to 1st previous tax year. | null | number | |
| schedule31.line902CarrybackY2QpLine 902 — Credit applied to 2nd previous tax year. | null | number | |
| schedule31.line903CarrybackY3QpLine 903 — Credit applied to 3rd previous tax year. | null | number | |
| schedule31.line911CarrybackY1Sred | null | number | |
| schedule31.line912CarrybackY2Sred | null | number | |
| schedule31.line913CarrybackY3Sred | null | number | |
| schedule31.line931CarrybackY1Ajctc | null | number | |
| schedule31.line932CarrybackY2Ajctc | null | number | |
| schedule31.line933CarrybackY3Ajctc | null | number | |
| schedule31.openingCarryforwardApprenticeshipByVintage | null | object | |
| schedule31.openingCarryforwardChildCareByVintage | null | object | |
| schedule31.openingCarryforwardPpmByVintage | null | object | |
| schedule31.openingCarryforwardQpByVintageOpening carryforward by vintage year (per s.127(9)(c) 20-year clock). Key is the year-of-original-generation (as string per JSON convention). Vintages older than tax_year − 20 are expired by the engine and rolled into the per-stream line 215/515/615/770. | null | object | |
| schedule31.openingCarryforwardSredByVintage | null | object | |
| schedule31.openingPreLossRestrictionCohortsPer credit stream, the opening carryforward earned before the loss restriction event keyed by vintage year, as stream to year to amount and taxationPeriodId. The streams are qualifiedProperty, sred, apprenticeship, preProductionMining and childCareSpaces; a bare amount may stand in for the object. Each amount must be non-negative. | null | object | |
| schedule31.openingPreLossRestrictionVintagesPer credit stream, the list of vintage years whose opening carryforward was earned before the loss restriction event. Each year may be an integer or a four-digit string. This is the coarser sibling of openingPreLossRestrictionCohorts, kept for filed renders that carry no cohort detail. | null | object | |
| schedule31.part16Calc1Rows | array | |
| schedule31.part16Calc1Rows[].acquisitionYearTax year in which the property was acquired. 20-year lookback. | null | number | |
| schedule31.part16Calc1Rows[].description | null | string | |
| schedule31.part16Calc1Rows[].isArmLengthDispositionWhether the disposition was at arm's length. Drives the former s.127(27.1) carve-out (repealed 2017, c. 20, s. 23). | boolean | null | |
| schedule31.part16Calc1Rows[].nonArmLengthIntendsAllOrSubstantiallyAllSredUsePer form Part 16 note + former s.127(27.1) (repealed 2017, c. 20, s. 23): when true AND isArmLengthDisposition is false, recapture is deferred to the purchaser. | boolean | null | |
| schedule31.part16Calc1Rows[].originalItcColumn 700 — original ITC amount calculated on the property when acquired (or original user's ITC for non-arm's-length acquirees). | null | number | |
| schedule31.part16Calc1Rows[].recalcAtAcquisitionRateColumn 710 — ITC rate at acquisition × proceeds-of-disposition (arm's-length) or fair-market-value (non-arm's-length). | null | number | |
| schedule31.part16Calc2Rows | array | |
| schedule31.part16Calc2Rows[].alreadyRecapturedCalc1Column 740 — Amount already recaptured under Calc 1 on the same property (avoids double-counting on partial transfers). | null | number | |
| schedule31.part16Calc2Rows[].description | null | string | |
| schedule31.part16Calc2Rows[].itcEarnedByTransfereeColumn 750 — ITC earned by the transferee for the transferred expenditures (caps the formula result). | null | number | |
| schedule31.part16Calc2Rows[].podOrFmvColumn 730 — Proceeds of disposition (arm's-length) or FMV (other cases) at conversion / disposition. | null | number | |
| schedule31.part16Calc2Rows[].transfereeRateColumn 720 — Rate the transferee used in determining its ITC for qualified expenditures under the s.127(13) agreement. | null | number | |
| schedule31.part19Rows | array | |
| schedule31.part19Rows[].contractNumberColumn 601 — Apprenticeship contract number (or SIN or name when contract # unavailable). | null | string | strict |
| schedule31.part19Rows[].eligibleSalaryWagesColumn 603 — Eligible salary and wages payable to the apprentice for the tax year (net of any other government / non-government assistance). | null | number | strict |
| schedule31.part19Rows[].eligibleSalaryWagesNetConfirmedExplicit s.127(11.1)(c.4) confirmation; the wage amount alone cannot prove that assistance was removed. | boolean | null | |
| schedule31.part19Rows[].eligibleTradeNameColumn 602 — Name of the eligible Red-Seal trade. | null | string | strict |
| schedule31.part19Rows[].isEmployedInCanadaITA 127(9) "eligible apprentice" — employed in Canada. | boolean | null | |
| schedule31.part19Rows[].isWithinFirst24MonthsOfRegisteredContractITA 127(9) "eligible apprentice" — within the registered contract's first 24 months. | boolean | null | |
| schedule31.part19Rows[].sourceEmploymentIdStable apprentice/payroll identity. Reuse it if the same individual has more than one contract row so the per-apprentice cap cannot be duplicated. | null | string | |
| schedule31.part19Rows[].tradeIsPrescribedITA 127(9) "eligible apprentice" — trade prescribed for Canada/province. | boolean | null | |
| schedule31.part23Rows | array | |
| schedule31.part23Rows[].acquisitionYearTax year in which the property was acquired. 60-month lookback (5 years) per former s.127(27.12) (repealed 2017, c. 20, s. 23). | null | number | |
| schedule31.part23Rows[].description | null | string | |
| schedule31.part23Rows[].originalItcChildCareSpaceLine 792 — Original ITC amount on a disposed child care space (former s.127(27.12)(a), repealed 2017, c. 20, s. 23). | null | number | |
| schedule31.part23Rows[].originalItcEligibleExpenditureLine 795 — Original ITC on a disposed eligible expenditure property (former s.127(27.12)(b) input, repealed 2017, c. 20, s. 23). | null | number | |
| schedule31.part23Rows[].podOrFmvProceeds of disposition (arm's-length) or FMV (other cases). Drives line 797 = 25% × this amount. | null | number | |
| schedule31.part4Rows | array | |
| schedule31.part4Rows[].assistanceAmountAssistance reasonably attributable to acquiring the property under s.127(11.1)(b); the engine subtracts it when publishing box 125. | null | number | |
| schedule31.part4Rows[].assistanceSourceCategoryWhether that assistance is government, non-government, or affirmatively none. | null | string | |
| schedule31.part4Rows[].atlanticLocationColumn 120 — Atlantic Canada province code or "Gaspé Peninsula" / "offshore" identifier per Reg 4610 + Reg 4609. | null | string | |
| schedule31.part4Rows[].ccaClassColumn 105 — CCA class number (e.g. "8", "10", "53"). | null | string | |
| schedule31.part4Rows[].dateAvailableForUseColumn 115 — date available for use (ISO YYYY-MM-DD). Drives the s.127(11.2) AFU timing gate. | null | string | |
| schedule31.part4Rows[].descriptionColumn 110 — free-form description of the investment. | null | string | |
| schedule31.part4Rows[].investmentAmountCapital cost before the s.127(11.1)(b) assistance reduction and before s.13(7.1)/(7.4) grinds. The engine publishes the net at box 125. | null | number | |
| schedule31.priorFiscalPeriodsCompleteAttestation that every taxation period preceding this one is present in the binder, so the preceding-period count can be used as the statutory count for the carryback and vintage arithmetic. Must be true, false or null; anything else is rejected. | boolean | null | |
| schedule31.priorYearS13_7_1UccReductionSchedule 31's prior-year qualified-property investment tax credit grind on undepreciated capital cost under ITA s.13(7.1), as an object with appliesToTaxYear, itcDeductedQp, itcRefundedQp, total, byClass and unattributed. Sent on this blob it is lifted into Schedule 8; the identically named root key is the other accepted spelling. | null | object | |
| schedule31.priorYearTaxYearDaysDays in the prior tax year. Drives short-year proration of line 390. | null | number | |
| schedule31.priorYearTaxYearS249_4_bElectionWhether the corporation elected under ITA paragraph 249(4)(b) for the preceding taxation year. Paragraph 249.1(1)(a) caps a corporate fiscal period at 53 weeks, and 249(4)(b) extends that by up to seven days where the prior year would otherwise have ended in the seven-day period before an acquisition of control, but only where the taxpayer so elects in its return for that year. Only an explicit true buys the extra days, so an unelected day count above the 53-week ceiling stays unlawful and the prior-year day count is refused. | boolean | null | |
| schedule31.revenuePriorYear1RAW-revenue path (s.127(10.6)/(10.64), form line-399 footnote 5): the annual revenue reflected in the financial statements for the 1st/2nd/3rd fiscal year immediately preceding and ending before this tax year. The engine requires the set matching the canonical prior periods. For a consolidated-group ECPC, the accompanying ultimate-parent fiscal-year day counts are required by s.127(10.64)(d). | null | number | |
| schedule31.revenuePriorYear2 | null | number | |
| schedule31.revenuePriorYear3 | null | number | |
| schedule31.schedule125FarmingIndustryLinkedSchedule 125 identifies the corporation's farming industry, as required by the Schedule 31 Part 3 instruction once box 102 is Yes. | boolean | null | |
| schedule31.schedule31FilingDueDateThe taxpayer's filing-due date, as an exact ISO YYYY-MM-DD date after the tax-year end. Read with schedule31PrescribedFormFiledDate to test the ITA s.127(9) rule that the prescribed Schedule 31 information be filed no later than 12 months after it. Required once a T661 claim exposes a current-year ITC base; either date missing or on or before the year end blocks at error severity. | null | string | |
| schedule31.schedule31PrescribedFormFiledDateThe date the prescribed Schedule 31 information was or will be filed, as an exact ISO YYYY-MM-DD date after the tax-year end. The other half of the ITA s.127(9) 12-month deadline test; see schedule31FilingDueDate. | null | string | |
| schedule31.schedule31PrescribedInformationCompleteConfirmation that Schedule 31 itself contains the prescribed ITC information. The ITA s.127(9) form deadline is a separate statutory gate from the T661 s.37 prescribed-information deadline, so a complete and timely T661 is not a substitute. Only true releases the current-year T661 credit base; blank and false both hold it at error severity. | boolean | null | |
| schedule31.t661Line559SredPoolT661 line 559 — SR&ED qualified expenditure pool. Engine adds the Part 3 line 103 (farming check-off × 80%) automatically. | null | number | |
| schedule31.taxPayableAttributableToSameOrSimilarBusinesss.127(9.1)(d) cap — Part I tax otherwise payable × same-or-similar business income ÷ taxable income (practitioner-computed; the income streaming is not derivable from S31's own inputs). The pre-AoC claim is ground to this cap. Explicit 0 is valid; null = not supplied. | null | number | |
| schedule31.ultimateParentFiscalYearDaysPriorYear1 | null | number | |
| schedule31.ultimateParentFiscalYearDaysPriorYear2 | null | number | |
| schedule31.ultimateParentFiscalYearDaysPriorYear3 | 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 (14 of 168 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 |
|---|---|
| corpType | 0 to 20000 characters |
| daysInYear | 1 to 1000000000000000 |
| filerBn | 0 to 20000 characters |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| schedule31.line185CleanElectricityMetLabourRequirements | one of "Y", "N" |
| schedule31.line185CleanElectricityProperties[].otherCleanEconomyCreditClaimedOnProperty | one of "Y", "N" |
| schedule31.line185CleanElectricityProperties[].qualifyingEntityType | one of "taxable_corporation", "qualifying_trust" |
| schedule31.line185CleanElectricityProperties[].writtenAgreementConfirmed | one of "Yes", "No" |
| schedule31.part19Rows[].contractNumber | 0 to 20000 characters |
| schedule31.part19Rows[].eligibleSalaryWages | -1000000000000000 to 1000000000000000 |
| schedule31.part19Rows[].eligibleTradeName | 0 to 20000 characters |
| schedule31.part4Rows[].assistanceSourceCategory | one of "none", "government", "non_government" |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (322)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| amount_10A | number |
| amount_10B | number |
| amount_10C | number |
| amount_10D | number |
| amount_10D_selected_base | number |
| amount_10D_tax_year_days | integer |
| amount_11A | number |
| amount_11B | number |
| amount_11C | number |
| amount_11D | number |
| amount_11E | number |
| amount_11F | number |
| amount_11G | number |
| amount_11H | number |
| amount_11I | number |
| amount_11J | number |
| amount_12A | number |
| amount_12B | number |
| amount_12C | number |
| amount_12D | number |
| amount_12E | number |
| amount_12F | number |
| amount_12G | number |
| amount_13A | number |
| amount_14A | number |
| amount_14B | number |
| amount_14C | number |
| amount_14D | number |
| amount_14E | number |
| amount_14F | number |
| amount_14G | number |
| amount_15A | number |
| amount_15B | number |
| amount_15C | number |
| amount_15D | number |
| amount_15E | number |
| amount_15F | number |
| amount_15G | number |
| amount_16A | number |
| amount_16B | number |
| amount_17A | number |
| amount_17B | number |
| amount_17C | number |
| amount_17D | number |
| amount_18A | number |
| amount_18B | number |
| amount_18C | number |
| amount_19A | number |
| amount_20A | number |
| amount_20B | number |
| amount_20C | number |
| amount_20D | number |
| amount_20E | number |
| amount_20F | number |
| amount_21A | number |
| amount_22A | number |
| amount_22B | number |
| amount_22C | number |
| amount_22D | number |
| amount_23A_total | number |
| amount_23B | number |
| amount_24A | number |
| amount_25A | number |
| amount_25B | number |
| amount_25C | number |
| amount_25D | number |
| amount_25E | number |
| amount_25F | number |
| amount_25G_clean_electricity | number |
| amount_26A | number |
| amount_26B | number |
| amount_26C | number |
| amount_26D | number |
| amount_26E | number |
| amount_26F | number |
| amount_4A | number |
| amount_5A | number |
| amount_5B | number |
| amount_5C | number |
| amount_5D | number |
| amount_5E | number |
| amount_5F | number |
| amount_5G | number |
| amount_6A | number |
| amount_7A | number |
| amount_7B | number |
| amount_7C | number |
| closingCarryforwardByVintage.apprenticeship | object |
| closingCarryforwardByVintage.childCareSpaces | object |
| closingCarryforwardByVintage.preProductionMining | object |
| closingCarryforwardByVintage.qualifiedProperty | object |
| closingCarryforwardByVintage.sred | object |
| expired_apprentice_detail | array |
| expired_childcare_detail | array |
| expired_ppm_detail | array |
| expired_qp_detail | array |
| expired_sred_detail | array |
| farmingGrossContribution | number |
| fired_gates | object |
| hasRelatedEmployersForApprenticesThe caller's answer to the related-employers question. Null when the request does not state it, which the schedule reports rather than reading as No. | boolean | null |
| isAssociatedForExpLimit | boolean |
| isCcpc | boolean |
| isExcludedCorp | array | boolean | null | number | object | string |
| isQualifyingCorp | boolean |
| itcBusinessContinuesPostAoc | array | boolean | null | number | object | string |
| line_101 | boolean |
| line_102 | boolean |
| line_103 | number |
| line_105 | array | boolean | null | number | object | string |
| line_110 | array | boolean | null | number | object | string |
| line_115 | array | boolean | null | number | object | string |
| line_120 | array | boolean | null | number | object | string |
| line_125 | number |
| line_140 | number |
| line_155 | number |
| line_170 | number |
| line_185 | number |
| line_200 | number |
| line_210 | number |
| line_215 | number |
| line_220 | number |
| line_230 | number |
| line_235 | number |
| line_240 | number |
| line_250 | number |
| line_260 | number |
| line_280 | number |
| line_310 | number |
| line_320 | number |
| line_350 | number |
| line_360 | number |
| line_370 | number |
| line_380 | number |
| line_382 | boolean |
| line_383 | boolean |
| line_385 | array | boolean | null | number | object | string |
| line_385_input_source | string |
| line_390 | number |
| line_398 | number |
| line_398_authoritative_input_provided | boolean |
| line_398_input_metadata.asOf | array | boolean | null | number | object | string |
| line_398_input_metadata.basis | array | boolean | null | number | object | string |
| line_398_input_metadata.confirmed | boolean |
| line_398_input_metadata.expectedAsOf | string |
| line_398_input_metadata.expectedBasis | string |
| line_398_input_metadata.source | array | boolean | null | number | object | string |
| line_398_input_source | string |
| line_399 | number |
| line_399_source | array | boolean | null | number | object | string |
| line_400 | number |
| line_400_authoritative_input_provided | boolean |
| line_400_input_source | string |
| line_400_matched_business_number | array | boolean | null | number | object | string |
| line_400_matched_corporation_type_code | array | boolean | null | number | object | string |
| line_410 | number |
| line_420 | number |
| line_430 | number |
| line_440 | number |
| line_450 | number |
| line_460 | number |
| line_480 | number |
| line_490 | number |
| line_510 | number |
| line_515 | number |
| line_520 | number |
| line_530 | number |
| line_540 | number |
| line_550 | number |
| line_560 | number |
| line_580 | number |
| line_601Box 601, the apprenticeship contract number. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | string |
| line_602Box 602, the eligible trade name. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | string |
| line_603Box 603, eligible salary and wages payable to the apprentice. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | number |
| line_604 | number |
| line_605 | number |
| line_610 | number |
| line_611 | array | boolean | null | number | object | string |
| line_612 | number |
| line_615 | number |
| line_620 | number |
| line_625 | number |
| line_630 | number |
| line_635 | number |
| line_640 | number |
| line_650 | array | boolean | null | number | object | string |
| line_655 | number |
| line_660 | number |
| line_690 | number |
| line_700 | number |
| line_710 | number |
| line_720 | number |
| line_730 | number |
| line_740 | number |
| line_750 | number |
| line_760 | number |
| line_765 | number |
| line_770 | number |
| line_775 | number |
| line_777 | number |
| line_782 | number |
| line_785 | number |
| line_790 | number |
| line_792 | number |
| line_795 | number |
| line_797 | number |
| line_799 | number |
| line_841 | number |
| line_845 | number |
| line_850 | number |
| line_860 | number |
| line_885 | number |
| line_890 | number |
| line_901 | number |
| line_901_target_tax_year_end | array | boolean | null | number | object | string |
| line_902 | number |
| line_902_target_tax_year_end | array | boolean | null | number | object | string |
| line_903 | number |
| line_903_target_tax_year_end | array | boolean | null | number | object | string |
| line_911 | number |
| line_911_target_tax_year_end | array | boolean | null | number | object | string |
| line_912 | number |
| line_912_target_tax_year_end | array | boolean | null | number | object | string |
| line_913 | number |
| line_913_target_tax_year_end | array | boolean | null | number | object | string |
| line_931 | number |
| line_931_target_tax_year_end | array | boolean | null | number | object | string |
| line_932 | number |
| line_932_target_tax_year_end | array | boolean | null | number | object | string |
| line_933 | number |
| line_933_target_tax_year_end | array | boolean | null | number | object | string |
| missing_required | array |
| part16Calc1Rows | array |
| part16Calc2Rows | array |
| part19Rows[].line_601Box 601, the apprenticeship contract number. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | string |
| part19Rows[].line_602Box 602, the eligible trade name. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | string |
| part19Rows[].line_603Box 603, eligible salary and wages payable to the apprentice. Null when the Part 19 row does not state it; the schedule reports the unanswered cell rather than filing a substitute value. | null | number |
| part19Rows[].line_604 | number |
| part19Rows[].line_605 | number |
| part19Rows[].sourceEmploymentId | array | boolean | null | number | object | string |
| part23Rows | array |
| part4Rows | array |
| provisional | boolean |
| ready | boolean |
| reported_legacy_line_398 | array | boolean | null | number | object | string |
| reported_legacy_line_400 | array | boolean | null | number | object | string |
| revenue_election_active | boolean |
| s127_9_1_pre_aoc_deducted | number |
| s127_9_1_pre_aoc_opening_total | number |
| s127_9_1_restricted_excess | number |
| s127_9_1_same_business_tax_cap | array | boolean | null | number | object | string |
| s13_7_1NextYearUccReduction.appliesToTaxYear | array | boolean | null | number | object | string |
| s13_7_1NextYearUccReduction.byClass | array |
| s13_7_1NextYearUccReduction.itcDeductedQp | number |
| s13_7_1NextYearUccReduction.itcRefundedQp | number |
| s13_7_1NextYearUccReduction.sourceTaxYearEnd | array | boolean | null | number | object | string |
| s13_7_1NextYearUccReduction.sourceTaxYearId | array | boolean | null | number | object | string |
| s13_7_1NextYearUccReduction.total | number |
| s13_7_1NextYearUccReduction.unattributed | number |
| short_year_proration_applied | boolean |
| t2_line_602_recapture | number |
| t2_line_652_deducted | number |
| t2_line_780_refunded | number |
| t661Line559SredPool | number |
| 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.displayThe citation as it is shown to a preparer. | string |
| warnings[].citation.kindThe authority family the section belongs to. | string |
| warnings[].citation.sectionThe cited provision. | string |
| 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[].severityAlways an error: a divergent or unprovable opening blocks the return. | string |
| 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[].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[].fieldThe Filemark input field a finding names when it is not a printed box. | string |
| warnings[].gate_idIdentifier of the registered T4012 gate that raised the finding; travels with `citation`. | string |
| warnings[].section | string |
| warnings[].taxYear | integer | null |
| warnings[]A Schedule 31 refusal that cites the governing statute or the printed form directly rather than a registered form gate, or a gate-cited refusal that names the paragraph its neutralization rests on. | object |
| warnings[].kindAlways the validation family. | string |
| warnings[].law_citation.display | string |
| warnings[].law_citation.kind | string |
| warnings[].law_citation.section | string |
| warnings[].citation.form | string |
| warnings[].citation.path | string |
| warnings[].citation.revision | string |
| warnings[].grid | string |
| warnings[].actualThe opening amount this return states. | number |
| warnings[].expectedThe closing amount the authenticated prior filed return proves, or null when no filed projection exists to reconcile against. | null | number |
| warnings[].keyThe reconciled balance, named for a preparer. | string |
| warnings[].reasonWhat broke and what to do about it. | string |
| formRevision | string |
| closingCarryforwardTaxationPeriodIds.apprenticeship | object |
| closingCarryforwardTaxationPeriodIds.childCareSpaces | object |
| closingCarryforwardTaxationPeriodIds.preProductionMining | object |
| closingCarryforwardTaxationPeriodIds.qualifiedProperty | object |
| closingCarryforwardTaxationPeriodIds.sred | object |
| expired_transfer_detail | array |
| transferInByVintage.apprenticeship | object |
| transferInByVintage.childCareSpaces | object |
| transferInByVintage.preProductionMining | object |
| transferInByVintage.qualifiedProperty | object |
| transferInByVintage.sred | object |
| closingPreLossRestrictionVintages.apprenticeship | array |
| closingPreLossRestrictionVintages.childCareSpaces | array |
| closingPreLossRestrictionVintages.preProductionMining | array |
| closingPreLossRestrictionVintages.qualifiedProperty | array |
| closingPreLossRestrictionVintages.sred | array |
| s127_9_1_loss_restriction_event_date_cy | array | boolean | null | number | object | string |
| closingPreLossRestrictionCohorts.apprenticeship | object |
| closingPreLossRestrictionCohorts.childCareSpaces | object |
| closingPreLossRestrictionCohorts.preProductionMining | object |
| closingPreLossRestrictionCohorts.qualifiedProperty | object |
| closingPreLossRestrictionCohorts.sred | object |
| t2_line_580_feed_labour_addition | number |
| cleanElectricityPropertyRows | array |