schedule1
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2023 and later
- Strict profile
- s1_2025_line103_reconciliation_target_value_v1
- Payload schema version
- 0.8.0
- Dependencies (run automatically)
- foreign_affiliate_analysis, reserve_continuity, schedule10, schedule13, schedule130, schedule15, schedule17, schedule21, schedule25, schedule3, schedule6, schedule73, schedule8, 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": [
"schedule1"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"accounts": [
{
"id": "acct-revenue-target",
"accountCode": "8000",
"accountName": "Cedar Ridge sales revenue",
"currentYearBalance": -100000,
"userStatus": "default",
"reviewStatus": "default",
"classification": {
"schedule1Relevant": false,
"treatment": "no_adjustment",
"deductibility": "100%",
"assumption": "Caller-supplied book-income fact"
}
},
{
"id": "acct-tax-penalty-target",
"accountCode": "9000",
"accountName": "Interest and penalties on taxes",
"currentYearBalance": 1000,
"userStatus": "default",
"reviewStatus": "default",
"classification": {
"schedule1Relevant": true,
"adjustmentType": "addition",
"treatment": "full_addition",
"deductibility": "0%",
"assumption": "Caller-supplied line-103 classification; legal deductibility not verified",
"s1Line": "103"
}
}
],
"incomeStatementFlags": {
"acct-revenue-target": true,
"acct-tax-penalty-target": true
},
"workpapers": [],
"isCCPC": true,
"daysInYear": 365,
"t2Jacket": {
"filingStatus": {
"firstYearAfterIncorporation": false,
"firstYearAfterAmalgamation": false,
"subsidiaryWindupS88": false
}
}
}
}Input cells (89)
Paths are relative to the request’s inputs object; [] marks an array element.
Required says when a cell must be present. Always means every request needs it: the default boundary rejects the call when the cell is omitted or null. Strict means only a request that sends this target’s payloadContract selector needs it. See Run computations for the default boundary.
These cells are everything this target accepts. A member that is not published here, or is sent with the wrong JSON type, fails the call with a 400 naming each failing cell.
| Cell | Types | Required |
|---|---|---|
| accounts | array | |
| accounts[].accountCode | string | strict |
| accounts[].accountName | string | strict |
| accounts[].classification.adjustmentType | null | string | |
| accounts[].classification.assumption | string | strict |
| accounts[].classification.deductibility | string | strict |
| accounts[].classification.deductibilityPercentage | null | number | string | |
| accounts[].classification.deductibilityRule | null | string | |
| accounts[].classification.ruleId | null | string | |
| accounts[].classification.s1Line | null | string | strict |
| accounts[].classification.schedule1RelevantMarks the account's concept as one to review for Schedule 1. It does not decide the posting; the classification's line and treatment do. | boolean | strict |
| accounts[].classification.templateId | null | string | |
| accounts[].classification.treatment | null | string | strict |
| accounts[].currentYearBalance | integer | null | number | string | strict |
| accounts[].id | string | strict |
| accounts[].reviewStatus | string | strict |
| accounts[].userStatus | string | strict |
| combinedAdjustmentsPosted adjusting journal entries, as a map from account id to the net amount posted against that account. Each amount may be a number or a numeric string. It is added to the trial-balance balance before the account is measured, and an unreadable entry is reported as an error rather than filed as zero. | null | object | |
| daysInYearInclusive day count for the canonical fiscalStart/fiscalEnd period required by the settled Part I dependency closure. | integer | strict |
| fiscalEndLast day of the taxation year, as YYYY-MM-DD, on or after fiscalStart. Its calendar year must equal taxYear. Required for the same reason as fiscalStart. | null | string | strict |
| fiscalStartFirst day of the taxation year, as YYYY-MM-DD. Required because this target's dependency closure reaches part_i_tax, whose rates and limits are day-weighted; ITA s.249(1)(a) makes the taxation year the fiscal period, and the engine will not invent calendar-year bounds. | null | string | strict |
| functionalCurrencyContextThe functional-currency election sidecar for the taxation year, used to restate statutory dollar thresholds under ITA s.261(5)(b). Send it only for a functional-currency filer; it carries reportingCurrency, periodStart, a firstDayRate object with rate, spotRateSource and firstDayDate, and optional statutoryThresholdRoundingOverrides. | null | object | |
| gifiAssignmentsMap of account id to the accepted GIFI code, folded onto accounts before consumers read them. An assignment overrides an account's embedded gifiCode and an empty string clears it. The merged view drives statutory paths including Schedule 1's lines 239/347 OCI treatment and Schedule 4's farming-presence signal, as well as Schedule 33's reference panel and prefill. | null | object | |
| incomeStatementFlags | object | |
| incomeStatementFlags.acct-revenue-targetTrue when the trial-balance account with this id is an income-statement account; flagged balances form net income per financial statements, Schedule 1 amount A. | boolean | null | strict |
| incomeStatementFlags.acct-tax-penalty-targetTrue when the trial-balance account with this id is an income-statement account; flagged balances form net income per financial statements, Schedule 1 amount A. | boolean | null | strict |
| isCCPCThe corporation was a Canadian-controlled private corporation (ITA s.125(7) definition) throughout the taxation year. | boolean | |
| pyLossPools | array | |
| schedule1.additions | array | |
| schedule1.additions[].accounts | array | |
| schedule1.additions[].category | string | |
| schedule1.additions[].schedule1Line | null | string | |
| schedule1.additions[].totalAmount | number | |
| schedule1.deductions | array | |
| schedule1.deductions[].accounts | array | |
| schedule1.deductions[].category | string | |
| schedule1.deductions[].schedule1Line | null | string | |
| schedule1.deductions[].totalAmount | number | |
| schedule1.form | object | |
| schedule1.form.amountA | number | |
| schedule1.form.amountB | number | |
| schedule1.form.amountC | number | |
| schedule1.form.amountD | number | |
| schedule1.form.amountE | number | |
| schedule1.form.formWarningsTie-out mismatches and grid-overflow notes (an "other" grid holding more than its 4 printed rows; 296/396 still total every item). Rendered, so nothing is silently truncated. | array | |
| schedule1.form.otherAdditionsFromPage3_199 | number | |
| schedule1.form.otherAdditionsTable | array | |
| schedule1.form.otherAdditionsTableTotal_296 | number | |
| schedule1.form.otherAdditionsTable[].amount | number | |
| schedule1.form.otherAdditionsTable[].description | string | |
| schedule1.form.otherDeductionsFromPage4_499 | number | |
| schedule1.form.otherDeductionsTable | array | |
| schedule1.form.otherDeductionsTableTotal_396 | number | |
| schedule1.form.otherDeductionsTable[].amount | number | |
| schedule1.form.otherDeductionsTable[].description | string | |
| schedule1.form.totalAdditions_500 | number | |
| schedule1.form.totalDeductions_510 | number | |
| schedule1.netIncomePerFS | number | |
| schedule1.s1_line_233_feed | null | number | |
| schedule1.section31RestrictedFarmLoss | null | object | |
| schedule1.section31RestrictedFarmLoss.applies | boolean | null | |
| schedule1.section31RestrictedFarmLoss.blockedReason | null | string | |
| schedule1.section31RestrictedFarmLoss.farmingPresence | boolean | |
| schedule1.section31RestrictedFarmLoss.functionalCurrencyContextPresent only for a functional-currency determination; omitted for the established CAD schema-version-1 projection. | object | |
| schedule1.section31RestrictedFarmLoss.heldRestrictedFarmLoss | number | |
| schedule1.section31RestrictedFarmLoss.restrictedFarmLoss | null | number | |
| schedule1.section31RestrictedFarmLoss.schemaVersion | integer | |
| schedule1.section31RestrictedFarmLoss.worksheet | object | |
| schedule1.section31RestrictedFarmLoss.worksheet.amount_4A | null | number | |
| schedule1.section31RestrictedFarmLoss.worksheet.amount_4B | null | number | |
| schedule1.section31RestrictedFarmLoss.worksheet.amount_4C | null | number | |
| schedule1.section31RestrictedFarmLoss.worksheet.amount_4D | null | number | |
| schedule1.section31RestrictedFarmLoss.worksheet.amount_4E | null | number | |
| schedule1.section31RestrictedFarmLoss.worksheet.applies | boolean | null | |
| schedule1.section31RestrictedFarmLoss.worksheet.blocked | boolean | |
| schedule1.section31RestrictedFarmLoss.worksheet.chiefSourceStatus | string | |
| schedule1.section31RestrictedFarmLoss.worksheet.line_485 | null | number | |
| schedule1.taxableIncome | number | |
| schedule1.totalAdditions | number | |
| schedule1.totalDeductions | number | |
| schedule1.warnings | array | |
| schedule125 | object | |
| schedule125.insuranceUnderwritingTypeThe insurance underwriting subtype, read with isInsuranceCorp to decide whether the RC4088 Rev.23 p.5 PDF financial statement supplement advisory fires. Send it whenever isInsuranceCorp is true, using non_underwriting for brokerages, MGAs, agency subsidiaries and non-underwriting holding companies. No enum is published because the engine routes every unrecognized string to the ordinary-filer branch rather than rejecting it. | null | string | |
| t2Jacket.filingStatus.firstYearAfterAmalgamation | boolean | strict |
| t2Jacket.filingStatus.firstYearAfterIncorporation | boolean | strict |
| t2Jacket.filingStatus.subsidiaryWindupS88 | boolean | 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 |
| workpapers | object | |
| workpapers[] | boolean | null | number | string | strict |
Strict profile accepted values (21 of 89 cells)
These values apply only when the request sends this target’s payloadContract selector. A cell marked pinned must equal the value shown to satisfy the strict profile. On the default boundary the same cell accepts any value of its published type.
| Cell | Accepted values |
|---|---|
| accounts[].accountCode | 0 to 20000 characters |
| accounts[].accountName | 0 to 20000 characters |
| accounts[].classification.adjustmentType | 0 to 20000 characters |
| accounts[].classification.assumption | 0 to 20000 characters |
| accounts[].classification.deductibility | 0 to 20000 characters |
| accounts[].classification.deductibilityPercentage | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| accounts[].classification.deductibilityRule | 0 to 20000 characters |
| accounts[].classification.ruleId | 0 to 20000 characters |
| accounts[].classification.s1Line | 0 to 20000 characters |
| accounts[].classification.templateId | 0 to 20000 characters |
| accounts[].classification.treatment | 0 to 20000 characters |
| accounts[].currentYearBalance | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| accounts[].id | 0 to 20000 characters |
| accounts[].reviewStatus | 0 to 20000 characters |
| accounts[].userStatus | 0 to 20000 characters |
| daysInYear | 1 to 1000000000000000 |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| schedule1.section31RestrictedFarmLoss.blockedReason | one of "chief_source_unanswered", "line_485_missing" |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
| workpapers[] | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
Output cells (220)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| additions[].accounts[].accountBalance | integer |
| additions[].accounts[].accountCode | string |
| additions[].accounts[].accountId | string |
| additions[].accounts[].accountName | string |
| additions[].accounts[].adjustmentAmount | number |
| additions[].accounts[].adjustmentStatus | string |
| additions[].accounts[].assumption | string |
| additions[].accounts[].deductibilityRule | string |
| additions[].accounts[].description | string |
| additions[].accounts[].estimatedDeductibility | boolean |
| additions[].accounts[].formula_id | array | boolean | null | number | object | string |
| additions[].accounts[].inputs_used | array |
| additions[].accounts[].itaReferences | array |
| additions[].accounts[].reviewed | boolean |
| additions[].accounts[].source | string |
| additions[].accounts[].templateId | array | boolean | null | number | object | string |
| additions[].accounts[].workpaperName | array | boolean | null | number | object | string |
| additions[].category | string |
| additions[].schedule1Line | string |
| additions[].totalAmount | number |
| deductions | array |
| form.amountA | number |
| form.amountB | number |
| form.amountC | number |
| form.amountD | number |
| form.amountE | number |
| form.formWarnings | array |
| form.line_101 | number |
| form.line_102 | number |
| form.line_103 | number |
| form.line_104 | number |
| form.line_105 | number |
| form.line_106 | number |
| form.line_107 | number |
| form.line_110 | number |
| form.line_111 | number |
| form.line_112 | number |
| form.line_113 | number |
| form.line_114 | number |
| form.line_115 | number |
| form.line_116 | number |
| form.line_117 | number |
| form.line_118 | number |
| form.line_119 | number |
| form.line_120 | number |
| form.line_121 | number |
| form.line_122 | number |
| form.line_123 | number |
| form.line_124 | number |
| form.line_125 | number |
| form.line_126 | number |
| form.line_127 | number |
| form.line_128 | number |
| form.line_129 | number |
| form.line_130 | number |
| form.line_131 | number |
| form.line_132 | number |
| form.line_201 | number |
| form.line_202 | number |
| form.line_203 | number |
| form.line_204 | number |
| form.line_206 | number |
| form.line_208 | number |
| form.line_209 | number |
| form.line_210 | number |
| form.line_211 | number |
| form.line_212 | number |
| form.line_213 | number |
| form.line_214 | number |
| form.line_215 | number |
| form.line_216 | number |
| form.line_217 | number |
| form.line_218 | number |
| form.line_219 | number |
| form.line_220 | number |
| form.line_221 | number |
| form.line_222 | number |
| form.line_224 | number |
| form.line_226 | number |
| form.line_227 | number |
| form.line_228 | number |
| form.line_229 | number |
| form.line_230 | number |
| form.line_231 | number |
| form.line_232 | number |
| form.line_233 | number |
| form.line_234 | number |
| form.line_235 | number |
| form.line_236 | number |
| form.line_237 | number |
| form.line_238 | number |
| form.line_239 | number |
| form.line_248 | number |
| form.line_249 | number |
| form.line_250 | number |
| form.line_251 | number |
| form.line_252 | number |
| form.line_253 | number |
| form.line_254 | number |
| form.line_300 | number |
| form.line_301 | number |
| form.line_302 | number |
| form.line_303 | number |
| form.line_304 | number |
| form.line_306 | number |
| form.line_307 | number |
| form.line_309 | number |
| form.line_310 | number |
| form.line_311 | number |
| form.line_312 | number |
| form.line_313 | number |
| form.line_314 | number |
| form.line_315 | number |
| form.line_316 | number |
| form.line_340 | number |
| form.line_341 | number |
| form.line_342 | number |
| form.line_344 | number |
| form.line_345 | number |
| form.line_347 | number |
| form.line_348 | number |
| form.line_349 | number |
| form.line_350 | number |
| form.line_401 | number |
| form.line_402 | number |
| form.line_403 | number |
| form.line_404 | number |
| form.line_406 | number |
| form.line_407 | number |
| form.line_408 | number |
| form.line_409 | number |
| form.line_410 | number |
| form.line_411 | number |
| form.line_413 | number |
| form.line_414 | number |
| form.line_416 | number |
| form.line_417 | number |
| form.line_418 | number |
| form.otherAdditionsFromPage3_199 | number |
| form.otherAdditionsTable | array |
| form.otherAdditionsTableTotal_296 | number |
| form.otherDeductionsFromPage4_499 | number |
| form.otherDeductionsTable | array |
| form.otherDeductionsTableTotal_396 | number |
| form.totalAdditions_500 | number |
| form.totalDeductions_510 | number |
| lineageErrors | array |
| netIncomePerFS | number |
| provisional | boolean |
| readyFalse when the result is held and must not be filed as computed. The member is present only on a result that carries a rate-authority finding; a result held for any other reason states that through `provisional` and its findings. | boolean |
| taxableIncome | number |
| totalAdditions | number |
| totalDeductions | number |
| warnings[].accountBalanceThe dollar amount the finding is about. Null where the engine refuses to echo a malformed or non-finite value back, and the caller's own unparsed string where the finding echoes the account balance as supplied. | null | number | string |
| warnings[].accountCodeThe account's code as supplied, or the Schedule 1 pseudo-code the engine uses for a finding that belongs to no account row ("S1", "S3", "S4-P4"). | null | string |
| warnings[].accountId | array | boolean | null | number | object | string |
| warnings[].accountNameThe account's name as supplied, or the label the engine gives a finding that belongs to no account row. | null | string |
| warnings[].adjustmentAmountThe dollar amount the finding is about, on the routing and slip-reconciliation notices that name one. Absent on every notice that does not. | number |
| warnings[].codeThe finding's machine-readable code. Optional: Schedule 1's account-scoped notices are identified by 'kind' alone, and only the batch dependency-hold disclosure carries a code. | string |
| warnings[].competingS1Lines[] | string |
| warnings[].competingTemplateIds[] | string |
| warnings[].computedDirectionThe addition/deduction direction the workpaper or classification computed, on the routing findings that refuse it against the registered direction of the line. | null | string |
| warnings[].conditionalOnThe statutory fact a conditional classification turns on and that the return has not resolved. Nothing is posted while it is open. | string |
| warnings[].conflictingLines[] | string |
| warnings[].controlledAffiliateCountThe number of box 300 code 1 selections Schedule 25 reports, on the ITA 91(1) foreign accrual property income finding. | integer |
| warnings[].coveredByPostedAjeTrue on the reconciliation finding raised when a posted adjusting entry already moved the accounts a GL-built workpaper measures, so letting both amounts post would reconcile the same item twice. | boolean |
| warnings[].fieldThe request path of the cell the finding is about, in the wire shape the request itself used. The two identity notices publish it because a row that states no id can be addressed no other way: an account row by its ordinal and id, and a workpaper by its ordinal and id when the request sent a list, or by its workpaper key and id when it sent the mapping keyed by workpaper id. The balance and posted-adjustment validation notices publish the cell they could not read, 'accounts.<accountId>.currentYearBalance' or 'combinedAdjustments.<accountId>'. Absent on every notice that names its subject by account or workpaper id instead. | string |
| warnings[].gifiCodes[] | string |
| warnings[].incomeAmountCountHow many foreign accrual income amounts share the affiliate class the prior-year claim was recorded against. | integer |
| warnings[].incomeAmountIdThe foreign accrual income amount the finding is about, as the engine keys it. | string |
| warnings[].inferredCategoryThe Schedule 1 category the engine inferred for an amount whose classification named no line. | string |
| warnings[].itaReferences[] | string |
| warnings[].kindThe finding's family: classification, coverage, cross_schedule, form_projection, formula, provenance, reconciliation, routing, validation, workpaper, or dependency_hold. | string |
| warnings[].lineThe Schedule 1 line whose amount a canonical producer replaced, on the cross-schedule finding that names the replacement. | string |
| warnings[].lineDefaultTaxThe default tax treatment the chosen Schedule 1 line registers. Null when the line registers none, or when no line was chosen. | null | string |
| warnings[].messageThe same preparer sentence as 'reason'. Optional: not every Schedule 1 notice states both. | string |
| warnings[].ownerThe schedule that owns the replaced Schedule 1 line, on the cross-schedule replacement finding. | string |
| warnings[].pairedLineThe opposite-direction Schedule 1 line registered for the same concept, when one exists. Null when the registry pairs none. | null | string |
| warnings[].pairedLineFeedsScheduleThe schedule the paired line is printed as sourced from, which is why the amount cannot simply be re-anchored there. Null when the registry pairs no line. | null | string |
| warnings[].postedAjeAccountIds[] | string |
| warnings[].producerKeyThe canonical producer whose amount replaced the account-derived one, on the cross-schedule replacement finding. | string |
| warnings[].producers[] | string |
| warnings[].reason | string |
| warnings[].receiverThe canonical receiver that must carry this concept's opposite-direction amount, on the canonical-receiver refusal. | string |
| warnings[].registeredDirectionThe direction the Schedule 1 line registry records for the line the amount was routed to. Null when the line is not in the registry. | null | string |
| warnings[].replacedTotalThe account-derived total the canonical producer's amount replaced. | number |
| warnings[].schedule1LineThe Schedule 1 line the finding is about. Null where the classification or the registry names none, which is itself the subject of several of these findings. | null | string |
| warnings[].sectionThe statute the finding rests on, on the section 31 restricted farm loss blockers Schedule 1 carries through from Schedule 4 Part 4. | string |
| warnings[].severityThe finding's severity. Optional for the same reason as 'code'. | string |
| warnings[].sourceThe canonical producer's source label, on the cross-schedule replacement finding. | string |
| warnings[].statusThe workpaper's stated adjustment status, on the formula findings that refuse an adjustment the workpaper did not compute cleanly. Null when the workpaper states none. | null | string |
| warnings[].taxTreatmentThe tax treatment the classification states. Null when it states none. | null | string |
| warnings[].templateIdThe workpaper template or classification rule the account's classification names, on the routing notices that name one. Null when the classification states neither. | null | string |
| warnings[].treatmentThe classification's Schedule 1 treatment verdict. Null when the classification states none. | null | string |
| warnings[].unfundedAccountIds[] | string |
| warnings[].unreadableEntryCountHow many foreign accrual ledger entries could not be read, on the coverage finding that refuses to treat them as absent. | integer |
| warnings[].workpaperIdThe workpaper the finding is about, on the workpaper-scoped notices that name one. Null when the workpaper states no id: that is the whole subject of the workpaper-identity notice, which addresses it by ordinal in 'field' instead. | null | string |
| warnings[].notesWhat the rate manifest records against the year, including what is still outstanding before the year can be verified. | string |
| warnings[].sources[] | string |
| warnings[].taxYearThe taxation year whose rate tables are unverified. | integer |
| warnings[].taxYears[] | integer |
| s1_line_233_feed | number |
| section31RestrictedFarmLoss.applies | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.blockedReason | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.chiefSourceStatus | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.farmingPresence | boolean |
| section31RestrictedFarmLoss.heldRestrictedFarmLoss | number |
| section31RestrictedFarmLoss.restrictedFarmLoss | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.schemaVersion | integer |
| section31RestrictedFarmLoss.worksheet.amount_4A | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.amount_4B | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.amount_4C | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.amount_4D | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.amount_4E | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.applies | array | boolean | null | number | object | string |
| section31RestrictedFarmLoss.worksheet.blocked | boolean |
| section31RestrictedFarmLoss.worksheet.chiefSourceStatus | string |
| section31RestrictedFarmLoss.worksheet.line_485 | array | boolean | null | number | object | string |
| section149FirstPostEventReserveReceipts | array |
| section149PropertyAdjustmentReceipts | array |