t2142
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2025 and later
- Strict profile
- t2142_2026_exact_prescribed_form_v1
- Payload schema version
- 2.0.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": [
"t2142"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"isLifeInsurer": true,
"t2142": {
"amendedReturn": false,
"isNonResident": false,
"corporationName": "Harbourlight Life Insurance Company",
"businessNumberRoot": "123456782",
"businessNumberReference": "0001",
"address": "1 Main Street",
"city": "Toronto",
"provinceTerritoryState": "ON",
"postalOrZipCode": "M5V1A1",
"country": "Canada",
"contactPerson": "Jane Smith",
"firmName": "Northstar Tax LLP",
"telephoneNumber": "4165551212",
"reg1401ReserveReviewStatus": "complete",
"reg1401ReserveRows": [
{
"policyId": "P1",
"sourceRef": "certified actuarial reserve packet",
"actuarialCertificationConfirmed": true,
"policyGroup": "individual",
"paragraph": "a",
"segregatedFundLiability": false,
"taxabilityCategory": "taxable",
"direction": "direct",
"current": {
"reportedLiability": 1000000
},
"prior": {
"reportedLiability": 1000000
}
}
],
"investmentPolicyReviewStatus": "complete",
"investmentPolicyRows": [
{
"policyId": "P1",
"classificationConfirmed": true,
"taxableLifePolicyConfirmed": true,
"investmentRateClass": "full_rate",
"currentMaximumReserve": 1000000,
"priorMaximumReserve": 1000000
}
],
"cfrReviewStatus": "no_cfr_policies",
"cfrPolicyRows": [],
"policyholderAdjustmentReviewStatus": "no_policyholder_adjustments",
"policyholderAdjustmentRows": [],
"lossContinuityStatus": "no_prior_losses",
"lossRows": [],
"instalmentPayments": [],
"amountEnclosed": 0,
"estimatedCurrentYearPartXii3Tax": 2046,
"priorYearPartXii3Tax": 0,
"priorYearDaysExcludingFebruary29": 365,
"officerName": "Jane Smith",
"officerTitle": "CFO",
"certificationDate": "2026-03-01",
"certificationConfirmed": true
}
}
}Input cells (54)
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 |
|---|---|---|
| fiscalEndThe last day of the taxation year in ISO YYYY-MM-DD form, which bounds every disposition date. Send it with fiscalStart and daysInYear: the three are the canonical taxation-period trio, and all three are mandatory whenever the request reaches Part I through its dependency closure. Strict YYYY-MM-DD, and not before fiscalStart. | null | string | strict |
| fiscalStartThe first day of the taxation year (ISO YYYY-MM-DD). With fiscalEnd and daysInYear it is the canonical taxation-period trio, and all three are mandatory whenever the request reaches Part I through its dependency closure — the request is refused before any computation when one is missing. The bounds also drive Schedule 8's Reg 1100(3) short-year CCA proration and the Reg 1104(3.5)(b) immediate-expensing limit proration. | null | string | strict |
| isLifeInsurer | boolean | strict |
| t2142Part XII.3 life-insurer return inputs. The server injects canonical identity, life-insurer status, and the signed prior-return closure. | null | object | |
| t2142.address | string | strict |
| t2142.amendedReturn | boolean | strict |
| t2142.amountEnclosed | integer | strict |
| t2142.businessNumberReferenceThe four-digit RC account reference printed at T2142 line 001. | null | string | strict |
| t2142.businessNumberRootThe nine-digit business-number root printed at T2142 line 001. | null | string | strict |
| t2142.certificationConfirmed | boolean | strict |
| t2142.certificationDate | string | strict |
| t2142.cfrPolicyRowsReviewed Canadian federal and provincial registered-policy rows for T2142 Part 5. Send an empty array with a no_cfr_policies review status when none exist. | array | null | strict |
| t2142.cfrReviewStatusConclusion of the T2142 Canadian federal and provincial registered-policy review. | null | string | strict |
| t2142.city | string | strict |
| t2142.contactPerson | string | strict |
| t2142.corporationName | string | strict |
| t2142.country | string | strict |
| t2142.estimatedCurrentYearPartXii3TaxPractitioner estimate of current-year Part XII.3 tax used to calculate the monthly ITA section 211.3 instalment base. | null | number | string | strict |
| t2142.firmName | string | strict |
| t2142.instalmentPayments | array | strict |
| t2142.investmentPolicyReviewStatusConclusion of the T2142 taxable investment-policy review. | null | string | strict |
| t2142.investmentPolicyRowsReviewed taxable investment-policy rows for T2142 Part 4. Send an empty array with a no_taxable_policies review status when none exist. | array | null | |
| t2142.investmentPolicyRows[].classificationConfirmed | boolean | strict |
| t2142.investmentPolicyRows[].currentMaximumReserve | integer | strict |
| t2142.investmentPolicyRows[].investmentRateClass | string | strict |
| t2142.investmentPolicyRows[].policyId | string | strict |
| t2142.investmentPolicyRows[].priorMaximumReserve | integer | strict |
| t2142.investmentPolicyRows[].taxableLifePolicyConfirmed | boolean | strict |
| t2142.isNonResidentT2142 line 003 answer stating whether the life insurer is non-resident. | boolean | null | strict |
| t2142.lossContinuityStatusConclusion of the authenticated Part XII.3 loss-continuity review. | null | string | strict |
| t2142.lossRowsAuthenticated Part XII.3 loss-continuity rows for T2142 Part 7. Send an empty array with a no_prior_losses status when no prior losses remain. | array | null | strict |
| t2142.officerName | string | strict |
| t2142.officerTitle | string | strict |
| t2142.policyholderAdjustmentReviewStatusConclusion of the T2142 policyholder-adjustment review. | null | string | strict |
| t2142.policyholderAdjustmentRowsReviewed policyholder-adjustment rows for T2142 Part 6. Send an empty array with a no_policyholder_adjustments status when none exist. | array | null | strict |
| t2142.postalOrZipCode | string | strict |
| t2142.priorYearDaysExcludingFebruary29Authenticated prior taxation-year day count excluding February 29, used to annualize prior Part XII.3 tax for sections 211.3 and 211.5. The signed prior-filed closure overwrites this editable copy. | null | number | strict |
| t2142.priorYearPartXii3TaxAuthenticated prior-year Part XII.3 tax used for the sections 211.3 and 211.5 instalment bases. The signed prior-filed closure overwrites this editable copy and reconciliation detects a stale mismatch. | null | number | string | strict |
| t2142.provinceTerritoryState | string | strict |
| t2142.reg1401ReserveReviewStatusConclusion of the Regulation 1401 reserve review for T2142 Part 3. | null | string | strict |
| t2142.reg1401ReserveRowsReviewed Regulation 1401 policy reserve rows for T2142 Part 3. Send an empty array with a no_reserves status when none exist. | array | null | |
| t2142.reg1401ReserveRows[].actuarialCertificationConfirmed | boolean | strict |
| t2142.reg1401ReserveRows[].current.reportedLiability | integer | strict |
| t2142.reg1401ReserveRows[].direction | string | strict |
| t2142.reg1401ReserveRows[].paragraph | string | strict |
| t2142.reg1401ReserveRows[].policyGroup | string | strict |
| t2142.reg1401ReserveRows[].policyId | string | strict |
| t2142.reg1401ReserveRows[].prior.reportedLiability | integer | strict |
| t2142.reg1401ReserveRows[].segregatedFundLiability | boolean | strict |
| t2142.reg1401ReserveRows[].sourceRef | string | strict |
| t2142.reg1401ReserveRows[].taxabilityCategory | string | strict |
| t2142.taxpayerIdentificationNumberNon-resident taxpayer identification number printed at T2142 line 020; required when line 003 is Yes. | null | string | |
| t2142.telephoneNumber | string | strict |
| taxYearFour-digit taxation year accepted by the batch reader. Historical applicability is decided by the requested form; years after 2027 fail at the shared verified-rate horizon. | integer | string | always |
Strict profile accepted values (42 of 54 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 |
| t2142.address | 0 to 20000 characters |
| t2142.amountEnclosed | -1000000000000000 to 1000000000000000 |
| t2142.businessNumberReference | 0 to 20000 characters |
| t2142.businessNumberRoot | 0 to 20000 characters |
| t2142.certificationDate | 0 to 20000 characters |
| t2142.cfrPolicyRows | exactly []pinned |
| t2142.cfrReviewStatus | one of "complete", "no_cfr_policies", null |
| t2142.city | 0 to 20000 characters |
| t2142.contactPerson | 0 to 20000 characters |
| t2142.corporationName | 0 to 20000 characters |
| t2142.country | 0 to 20000 characters |
| t2142.estimatedCurrentYearPartXii3Tax | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| t2142.firmName | 0 to 20000 characters |
| t2142.instalmentPayments | exactly []pinned |
| t2142.investmentPolicyReviewStatus | one of "complete", "no_taxable_policies", null |
| t2142.investmentPolicyRows[].currentMaximumReserve | -1000000000000000 to 1000000000000000 |
| t2142.investmentPolicyRows[].investmentRateClass | 0 to 20000 characters |
| t2142.investmentPolicyRows[].policyId | 0 to 20000 characters |
| t2142.investmentPolicyRows[].priorMaximumReserve | -1000000000000000 to 1000000000000000 |
| t2142.lossContinuityStatus | one of "complete", "no_prior_losses", null |
| t2142.lossRows | exactly []pinned |
| t2142.officerName | 0 to 20000 characters |
| t2142.officerTitle | 0 to 20000 characters |
| t2142.policyholderAdjustmentReviewStatus | one of "complete", "no_policyholder_adjustments", null |
| t2142.policyholderAdjustmentRows | exactly []pinned |
| t2142.postalOrZipCode | 0 to 20000 characters |
| t2142.priorYearDaysExcludingFebruary29 | -1000000000000000 to 1000000000000000 |
| t2142.priorYearPartXii3Tax | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| t2142.provinceTerritoryState | 0 to 20000 characters |
| t2142.reg1401ReserveReviewStatus | one of "complete", "no_reserves", null |
| t2142.reg1401ReserveRows[].current.reportedLiability | -1000000000000000 to 1000000000000000 |
| t2142.reg1401ReserveRows[].direction | 0 to 20000 characters |
| t2142.reg1401ReserveRows[].paragraph | 0 to 20000 characters |
| t2142.reg1401ReserveRows[].policyGroup | 0 to 20000 characters |
| t2142.reg1401ReserveRows[].policyId | 0 to 20000 characters |
| t2142.reg1401ReserveRows[].prior.reportedLiability | -1000000000000000 to 1000000000000000 |
| t2142.reg1401ReserveRows[].sourceRef | 0 to 20000 characters |
| t2142.reg1401ReserveRows[].taxabilityCategory | 0 to 20000 characters |
| t2142.telephoneNumber | 0 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 (292)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| applicable | boolean | null |
| attachments.instalmentList | array |
| attachments.part4Overflow | array |
| attachments.part7Overflow | array |
| authority | string |
| cfrPolicyCalculations | array |
| daysExcludingFebruary29 | integer |
| filingProjectionReady | boolean |
| filingWarnings[].code | string |
| filingWarnings[].field | string |
| filingWarnings[].message | string |
| filingWarnings[].severity | string |
| fiscalEnd | string |
| fiscalStart | string |
| form.address | string |
| form.amendedReturn | boolean |
| form.businessNumberReference | string |
| form.businessNumberRoot | string |
| form.certificationDate | string |
| form.city | string |
| form.contactPerson | string |
| form.corporationName | string |
| form.country | string |
| form.extensionNumber | string |
| form.firmName | string |
| form.fiscalEnd | string |
| form.fiscalStart | string |
| form.fullRatePolicies[].currentMaximumReserve | number |
| form.fullRatePolicies[].guaranteedRateFraction | number |
| form.fullRatePolicies[].guaranteedRatePct | number |
| form.fullRatePolicies[].investmentRateClass | string |
| form.fullRatePolicies[].meanMaximumReserve | number |
| form.fullRatePolicies[].policyId | string |
| form.fullRatePolicies[].prePercentageAmount | number |
| form.fullRatePolicies[].priorMaximumReserve | number |
| form.fullRatePolicies[].rateDifferenceFraction | number |
| form.fullRatePolicies[].rateDifferencePct | number |
| form.isNonResident | boolean |
| form.lines.100 | number |
| form.lines.105 | number |
| form.lines.110 | number |
| form.lines.115 | number |
| form.lines.120 | number |
| form.lines.125 | number |
| form.lines.130 | number |
| form.lines.135 | number |
| form.lines.200 | number |
| form.lines.202 | number |
| form.lines.204 | number |
| form.lines.206 | number |
| form.lines.208 | number |
| form.lines.210 | number |
| form.lines.212 | number |
| form.lines.214 | number |
| form.lines.216 | number |
| form.lines.218 | number |
| form.lines.220 | number |
| form.lines.222 | number |
| form.lines.224 | number |
| form.lines.226 | number |
| form.lines.228 | number |
| form.lines.230 | number |
| form.lines.232 | number |
| form.lines.234 | number |
| form.lines.236 | number |
| form.lines.238 | number |
| form.lines.240 | number |
| form.lines.242 | number |
| form.lines.244 | number |
| form.lines.400 | number |
| form.lines.530 | number |
| form.lines.565 | number |
| form.lines.570 | number |
| form.lines.575 | number |
| form.lines.600 | number |
| form.lines.610 | number |
| form.lines.620 | number |
| form.lines.630 | number |
| form.lines.640 | number |
| form.lines.650 | number |
| form.lines.660 | number |
| form.lines.670 | number |
| form.lines.700 | number |
| form.lines.701 | number |
| form.lines.702 | number |
| form.lines.703 | number |
| form.lines.704 | number |
| form.lines.705 | number |
| form.lines.706 | number |
| form.lines.707 | number |
| form.lines.708 | number |
| form.lines.709 | number |
| form.lines.710 | number |
| form.lines.711 | number |
| form.lines.712 | number |
| form.lines.713 | number |
| form.lines.714 | number |
| form.lines.715 | number |
| form.lines.716 | number |
| form.lines.717 | number |
| form.lines.718 | number |
| form.lines.719 | number |
| form.lines.720 | number |
| form.lines.721 | number |
| form.lines.722 | number |
| form.lines.723 | number |
| form.lines.724 | number |
| form.lines.725 | number |
| form.lines.726 | number |
| form.lines.727 | number |
| form.lines.728 | number |
| form.lines.729 | number |
| form.lines.730 | number |
| form.lines.A | number |
| form.lines.B | number |
| form.lines.C | number |
| form.lines.D | number |
| form.lines.E | number |
| form.lines.F | number |
| form.lines.G | number |
| form.lines.H | number |
| form.lines.I | number |
| form.lines.J | number |
| form.lines.K | number |
| form.lines.L | number |
| form.lines.M | number |
| form.lines.N | number |
| form.lines.O | number |
| form.lines.P | number |
| form.lines.Q | number |
| form.lines.R | number |
| form.lossContinuity | array |
| form.officerName | string |
| form.officerTitle | string |
| form.policyholderAdjustments[].adjustment | number |
| form.policyholderAdjustments[].percentage | number |
| form.policyholderAdjustments[].section12_2Amount | number |
| form.policyholderAdjustments[].section56_1_jAmount | number |
| form.policyholderAdjustments[].taxableYearCount | integer | string |
| form.policyholderAdjustments[].total | number |
| form.postalOrZipCode | string |
| form.provinceTerritoryState | string |
| form.reducedRatePolicies | array |
| form.taxpayerIdentificationNumber | string |
| form.telephoneNumber | string |
| formId | string |
| instalmentPayments | array |
| investmentPolicyCalculations[].currentMaximumReserve | number |
| investmentPolicyCalculations[].guaranteedRateFraction | number |
| investmentPolicyCalculations[].guaranteedRatePct | number |
| investmentPolicyCalculations[].investmentRateClass | string |
| investmentPolicyCalculations[].meanMaximumReserve | number |
| investmentPolicyCalculations[].policyId | string |
| investmentPolicyCalculations[].prePercentageAmount | number |
| investmentPolicyCalculations[].priorMaximumReserve | number |
| investmentPolicyCalculations[].rateDifferenceFraction | number |
| investmentPolicyCalculations[].rateDifferencePct | number |
| lines.100 | number |
| lines.105 | number |
| lines.110 | number |
| lines.115 | number |
| lines.120 | number |
| lines.125 | number |
| lines.130 | number |
| lines.135 | number |
| lines.200 | number |
| lines.202 | number |
| lines.204 | number |
| lines.206 | number |
| lines.208 | number |
| lines.210 | number |
| lines.212 | number |
| lines.214 | number |
| lines.216 | number |
| lines.218 | number |
| lines.220 | number |
| lines.222 | number |
| lines.224 | number |
| lines.226 | number |
| lines.228 | number |
| lines.230 | number |
| lines.232 | number |
| lines.234 | number |
| lines.236 | number |
| lines.238 | number |
| lines.240 | number |
| lines.242 | number |
| lines.244 | number |
| lines.400 | number |
| lines.530 | number |
| lines.565 | number |
| lines.570 | number |
| lines.575 | number |
| lines.600 | number |
| lines.610 | number |
| lines.620 | number |
| lines.630 | number |
| lines.640 | number |
| lines.650 | number |
| lines.660 | number |
| lines.670 | number |
| lines.700 | number |
| lines.701 | number |
| lines.702 | number |
| lines.703 | number |
| lines.704 | number |
| lines.705 | number |
| lines.706 | number |
| lines.707 | number |
| lines.708 | number |
| lines.709 | number |
| lines.710 | number |
| lines.711 | number |
| lines.712 | number |
| lines.713 | number |
| lines.714 | number |
| lines.715 | number |
| lines.716 | number |
| lines.717 | number |
| lines.718 | number |
| lines.719 | number |
| lines.720 | number |
| lines.721 | number |
| lines.722 | number |
| lines.723 | number |
| lines.724 | number |
| lines.725 | number |
| lines.726 | number |
| lines.727 | number |
| lines.728 | number |
| lines.729 | number |
| lines.730 | number |
| lines.A | number |
| lines.B | number |
| lines.C | number |
| lines.D | number |
| lines.E | number |
| lines.F | number |
| lines.G | number |
| lines.H | number |
| lines.I | number |
| lines.J | number |
| lines.K | number |
| lines.L | number |
| lines.M | number |
| lines.N | number |
| lines.O | number |
| lines.P | number |
| lines.Q | number |
| lines.R | number |
| lossContinuity | array |
| missing_required[] | string |
| partXii3Obligations.actualCurrentAnnualizedTax | number |
| partXii3Obligations.estimatedCurrentAnnualizedTax | null | number |
| partXii3Obligations.priorAnnualizedTax | null | number |
| partXii3Obligations.section211_3MonthlyObligations[].amount | number |
| partXii3Obligations.section211_3MonthlyObligations[].nominalDueDate | string |
| partXii3Obligations.section211_3MonthlyObligations[].statutoryBasis | string |
| partXii3Obligations.section211_5ActualInterestBaseObligations[].amount | number |
| partXii3Obligations.section211_5ActualInterestBaseObligations[].nominalDueDate | string |
| partXii3Obligations.section211_5ActualInterestBaseObligations[].statutoryBasis | string |
| partXii3TaxPayable | number |
| policyholderAdjustmentCalculations | array |
| priorClosureAuthenticated | boolean |
| priorClosureLineage | array | boolean | null | number | object | string |
| provisional | boolean |
| rate.fraction | number |
| rate.observationCount | integer |
| rate.percent | number |
| rate.rawResponseSha256 | string |
| rate.series | string |
| rate.sourceUrl | string |
| rate.windowEnd | string |
| rate.windowStart | string |
| ready | boolean |
| reserveCalculations[].currentMaximum | number |
| reserveCalculations[].disabledCurrent | number |
| reserveCalculations[].disabledPrior | number |
| reserveCalculations[].line | string |
| reserveCalculations[].paragraph | string |
| reserveCalculations[].policyId | string |
| reserveCalculations[].priorMaximum | number |
| schedule | string |
| shortYearProrationApplies | boolean |
| taxYear | integer |
| taxableCanadianLifeInvestmentIncome | number |
| warnings[].code | string |
| warnings[].field | string |
| warnings[].message | string |
| warnings[].severity | string |
| firstReturnAttestationAccepted | boolean |
| priorAuthorityAccepted | boolean |