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.

Input cells for schedule1
CellTypesRequired
accountsarray
accounts[].accountCodestringstrict
accounts[].accountNamestringstrict
accounts[].classification.adjustmentTypenull | string
accounts[].classification.assumptionstringstrict
accounts[].classification.deductibilitystringstrict
accounts[].classification.deductibilityPercentagenull | number | string
accounts[].classification.deductibilityRulenull | string
accounts[].classification.ruleIdnull | string
accounts[].classification.s1Linenull | stringstrict
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.booleanstrict
accounts[].classification.templateIdnull | string
accounts[].classification.treatmentnull | stringstrict
accounts[].currentYearBalanceinteger | null | number | stringstrict
accounts[].idstringstrict
accounts[].reviewStatusstringstrict
accounts[].userStatusstringstrict
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.integerstrict
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 | stringstrict
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 | stringstrict
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
incomeStatementFlagsobject
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 | nullstrict
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 | nullstrict
isCCPCThe corporation was a Canadian-controlled private corporation (ITA s.125(7) definition) throughout the taxation year.boolean
pyLossPoolsarray
schedule1.additionsarray
schedule1.additions[].accountsarray
schedule1.additions[].categorystring
schedule1.additions[].schedule1Linenull | string
schedule1.additions[].totalAmountnumber
schedule1.deductionsarray
schedule1.deductions[].accountsarray
schedule1.deductions[].categorystring
schedule1.deductions[].schedule1Linenull | string
schedule1.deductions[].totalAmountnumber
schedule1.formobject
schedule1.form.amountAnumber
schedule1.form.amountBnumber
schedule1.form.amountCnumber
schedule1.form.amountDnumber
schedule1.form.amountEnumber
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_199number
schedule1.form.otherAdditionsTablearray
schedule1.form.otherAdditionsTableTotal_296number
schedule1.form.otherAdditionsTable[].amountnumber
schedule1.form.otherAdditionsTable[].descriptionstring
schedule1.form.otherDeductionsFromPage4_499number
schedule1.form.otherDeductionsTablearray
schedule1.form.otherDeductionsTableTotal_396number
schedule1.form.otherDeductionsTable[].amountnumber
schedule1.form.otherDeductionsTable[].descriptionstring
schedule1.form.totalAdditions_500number
schedule1.form.totalDeductions_510number
schedule1.netIncomePerFSnumber
schedule1.s1_line_233_feednull | number
schedule1.section31RestrictedFarmLossnull | object
schedule1.section31RestrictedFarmLoss.appliesboolean | null
schedule1.section31RestrictedFarmLoss.blockedReasonnull | string
schedule1.section31RestrictedFarmLoss.farmingPresenceboolean
schedule1.section31RestrictedFarmLoss.functionalCurrencyContextPresent only for a functional-currency determination; omitted for the established CAD schema-version-1 projection.object
schedule1.section31RestrictedFarmLoss.heldRestrictedFarmLossnumber
schedule1.section31RestrictedFarmLoss.restrictedFarmLossnull | number
schedule1.section31RestrictedFarmLoss.schemaVersioninteger
schedule1.section31RestrictedFarmLoss.worksheetobject
schedule1.section31RestrictedFarmLoss.worksheet.amount_4Anull | number
schedule1.section31RestrictedFarmLoss.worksheet.amount_4Bnull | number
schedule1.section31RestrictedFarmLoss.worksheet.amount_4Cnull | number
schedule1.section31RestrictedFarmLoss.worksheet.amount_4Dnull | number
schedule1.section31RestrictedFarmLoss.worksheet.amount_4Enull | number
schedule1.section31RestrictedFarmLoss.worksheet.appliesboolean | null
schedule1.section31RestrictedFarmLoss.worksheet.blockedboolean
schedule1.section31RestrictedFarmLoss.worksheet.chiefSourceStatusstring
schedule1.section31RestrictedFarmLoss.worksheet.line_485null | number
schedule1.taxableIncomenumber
schedule1.totalAdditionsnumber
schedule1.totalDeductionsnumber
schedule1.warningsarray
schedule125object
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.firstYearAfterAmalgamationbooleanstrict
t2Jacket.filingStatus.firstYearAfterIncorporationbooleanstrict
t2Jacket.filingStatus.subsidiaryWindupS88booleanstrict
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 | stringalways
workpapersobject
workpapers[]boolean | null | number | stringstrict
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.

Strict profile accepted values for schedule1
CellAccepted values
accounts[].accountCode0 to 20000 characters
accounts[].accountName0 to 20000 characters
accounts[].classification.adjustmentType0 to 20000 characters
accounts[].classification.assumption0 to 20000 characters
accounts[].classification.deductibility0 to 20000 characters
accounts[].classification.deductibilityPercentage-1000000000000000 to 1000000000000000; 0 to 20000 characters
accounts[].classification.deductibilityRule0 to 20000 characters
accounts[].classification.ruleId0 to 20000 characters
accounts[].classification.s1Line0 to 20000 characters
accounts[].classification.templateId0 to 20000 characters
accounts[].classification.treatment0 to 20000 characters
accounts[].currentYearBalance-1000000000000000 to 1000000000000000; 0 to 20000 characters
accounts[].id0 to 20000 characters
accounts[].reviewStatus0 to 20000 characters
accounts[].userStatus0 to 20000 characters
daysInYear1 to 1000000000000000
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
schedule1.section31RestrictedFarmLoss.blockedReasonone of "chief_source_unanswered", "line_485_missing"
taxYearmatches ^\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.

Output cells for schedule1
CellTypes
additions[].accounts[].accountBalanceinteger
additions[].accounts[].accountCodestring
additions[].accounts[].accountIdstring
additions[].accounts[].accountNamestring
additions[].accounts[].adjustmentAmountnumber
additions[].accounts[].adjustmentStatusstring
additions[].accounts[].assumptionstring
additions[].accounts[].deductibilityRulestring
additions[].accounts[].descriptionstring
additions[].accounts[].estimatedDeductibilityboolean
additions[].accounts[].formula_idarray | boolean | null | number | object | string
additions[].accounts[].inputs_usedarray
additions[].accounts[].itaReferencesarray
additions[].accounts[].reviewedboolean
additions[].accounts[].sourcestring
additions[].accounts[].templateIdarray | boolean | null | number | object | string
additions[].accounts[].workpaperNamearray | boolean | null | number | object | string
additions[].categorystring
additions[].schedule1Linestring
additions[].totalAmountnumber
deductionsarray
form.amountAnumber
form.amountBnumber
form.amountCnumber
form.amountDnumber
form.amountEnumber
form.formWarningsarray
form.line_101number
form.line_102number
form.line_103number
form.line_104number
form.line_105number
form.line_106number
form.line_107number
form.line_110number
form.line_111number
form.line_112number
form.line_113number
form.line_114number
form.line_115number
form.line_116number
form.line_117number
form.line_118number
form.line_119number
form.line_120number
form.line_121number
form.line_122number
form.line_123number
form.line_124number
form.line_125number
form.line_126number
form.line_127number
form.line_128number
form.line_129number
form.line_130number
form.line_131number
form.line_132number
form.line_201number
form.line_202number
form.line_203number
form.line_204number
form.line_206number
form.line_208number
form.line_209number
form.line_210number
form.line_211number
form.line_212number
form.line_213number
form.line_214number
form.line_215number
form.line_216number
form.line_217number
form.line_218number
form.line_219number
form.line_220number
form.line_221number
form.line_222number
form.line_224number
form.line_226number
form.line_227number
form.line_228number
form.line_229number
form.line_230number
form.line_231number
form.line_232number
form.line_233number
form.line_234number
form.line_235number
form.line_236number
form.line_237number
form.line_238number
form.line_239number
form.line_248number
form.line_249number
form.line_250number
form.line_251number
form.line_252number
form.line_253number
form.line_254number
form.line_300number
form.line_301number
form.line_302number
form.line_303number
form.line_304number
form.line_306number
form.line_307number
form.line_309number
form.line_310number
form.line_311number
form.line_312number
form.line_313number
form.line_314number
form.line_315number
form.line_316number
form.line_340number
form.line_341number
form.line_342number
form.line_344number
form.line_345number
form.line_347number
form.line_348number
form.line_349number
form.line_350number
form.line_401number
form.line_402number
form.line_403number
form.line_404number
form.line_406number
form.line_407number
form.line_408number
form.line_409number
form.line_410number
form.line_411number
form.line_413number
form.line_414number
form.line_416number
form.line_417number
form.line_418number
form.otherAdditionsFromPage3_199number
form.otherAdditionsTablearray
form.otherAdditionsTableTotal_296number
form.otherDeductionsFromPage4_499number
form.otherDeductionsTablearray
form.otherDeductionsTableTotal_396number
form.totalAdditions_500number
form.totalDeductions_510number
lineageErrorsarray
netIncomePerFSnumber
provisionalboolean
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
taxableIncomenumber
totalAdditionsnumber
totalDeductionsnumber
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[].accountIdarray | 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[].reasonstring
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_feednumber
section31RestrictedFarmLoss.appliesarray | boolean | null | number | object | string
section31RestrictedFarmLoss.blockedReasonarray | boolean | null | number | object | string
section31RestrictedFarmLoss.chiefSourceStatusarray | boolean | null | number | object | string
section31RestrictedFarmLoss.farmingPresenceboolean
section31RestrictedFarmLoss.heldRestrictedFarmLossnumber
section31RestrictedFarmLoss.restrictedFarmLossarray | boolean | null | number | object | string
section31RestrictedFarmLoss.schemaVersioninteger
section31RestrictedFarmLoss.worksheet.amount_4Aarray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.amount_4Barray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.amount_4Carray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.amount_4Darray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.amount_4Earray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.appliesarray | boolean | null | number | object | string
section31RestrictedFarmLoss.worksheet.blockedboolean
section31RestrictedFarmLoss.worksheet.chiefSourceStatusstring
section31RestrictedFarmLoss.worksheet.line_485array | boolean | null | number | object | string
section149FirstPostEventReserveReceiptsarray
section149PropertyAdjustmentReceiptsarray
Filemark | schedule1 cells