schedule24

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2023 and later
Strict profile
s24_versioned_profile_target_value_v1
Payload schema version
0.3.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": [
    "schedule24"
  ],
  "inputs": {
    "taxYear": 2025,
    "schedule24": {
      "filingTriggers": [
        "incorporation"
      ],
      "operationCode": "01",
      "predecessors": [],
      "subsidiaries": []
    }
  }
}

Input cells (15)

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 schedule24
CellTypesRequired
schedule24.filingTriggersWhich trigger(s) caused this S24 to be filed. May contain multiple values for the (rare) case where the corporation experienced more than one trigger in its first tax year. Empty array = practitioner has opened the form but not yet selected a trigger (incomplete).array
schedule24.filingTriggers[]stringstrict
schedule24.operationCodeOne box 100 operation-type code printed on T2 SCH 24 E (23). The schema validates only membership in the printed list, not the corporation's actual operation type.null | stringstrict
schedule24.predecessorsPart 2 predecessor rows. Empty array is valid when filingTriggers does NOT include "amalgamation"; otherwise at least one row with both name and BN is required.array
schedule24.predecessors[].businessNumberBox 300 — Business number (9 digits + 2 uppercase letters + 4 digits, e.g. "123456789RC0001"), or "NR" if the predecessor was never CRA-registered (typically a foreign-amalgamation predecessor).null | string
schedule24.predecessors[].nameBox 200 — Name of predecessor corporation.null | string
schedule24.subsidiariesPart 3 subsidiary rows. Empty array is valid when filingTriggers does NOT include "windup"; otherwise at least one fully-populated row is required.array
schedule24.subsidiaries[].assetDistributionCompletedInThatYearFilemark-internal, non-printed tri-state. Reviewed affirmation that the winding-up distribution was completed in the taxation year ending on assetsDistributedTaxationYearEnd. Only true lets the matching filed subsidiary period authenticate a predecessor closing or RDTOH transfer.boolean | null
schedule24.subsidiaries[].assetsDistributedTaxationYearEndFilemark-internal, non-printed. End date of the subsidiary taxation year in which its assets were distributed to the parent on the winding-up (ISO YYYY-MM-DD). ITA s.88(1)(e.2)(v) substitutes that year, and box 700 is only the date of wind-up, so this fact is collected separately. Null stays unanswered.null | string
schedule24.subsidiaries[].businessNumberBox 500 — Business number (same format as box 300, or "NR").null | string
schedule24.subsidiaries[].commencementDateBox 600 — Commencement date of wind-up (ISO YYYY-MM-DD). Typically the board resolution / shareholder approval date.null | string
schedule24.subsidiaries[].nameBox 400 — Name of subsidiary corporation.null | string
schedule24.subsidiaries[].qualifiesUnderSection88_1Filemark-internal, non-printed tri-state. Schedule 24 proves the event roster but not the taxable-Canadian-corporation, 90%-of-each-class, and arm's-length-minority conditions in the ITA s.88(1) chapeau. Pool continuity remains blocked until this reviewed conclusion is answered.boolean | null
schedule24.subsidiaries[].windUpDateBox 700 — Date of wind-up (ISO YYYY-MM-DD). This is not the date the subsidiary's assets were distributed. Must be ≥ commencementDate per the validator's date-order gate.null | string
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
Strict profile accepted values (10 of 15 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 schedule24
CellAccepted values
schedule24.filingTriggers[]0 to 20000 characters
schedule24.operationCodeone of "01", "02", "03", "04", "05", "06", "07", "09", "10", "11", "12", "13", "14", "15", "16", "17", "99"
schedule24.predecessors[].businessNumber0 to 20000 characters
schedule24.predecessors[].name0 to 20000 characters
schedule24.subsidiaries[].assetsDistributedTaxationYearEnd0 to 20000 characters
schedule24.subsidiaries[].businessNumber0 to 20000 characters
schedule24.subsidiaries[].commencementDate0 to 20000 characters
schedule24.subsidiaries[].name0 to 20000 characters
schedule24.subsidiaries[].windUpDate0 to 20000 characters
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (46)

Paths are relative to this target’s result object in the response.

Output cells for schedule24
CellTypes
filing_triggers[]string
operation_codeBox 100, the type of operation. Null when the request does not state it, which is itself one of the gated conditions.null | string
predecessorsarray
subsidiariesarray
warningsarray
fired_gatesEvery registered gate this result raised, keyed by gate identifier. At least one member is what selects this branch.object
provisionalboolean
readyboolean
warnings[].boxThe form box the finding is about, or the em dash the engine prints when the gate is about the form rather than one box.null | string
warnings[].severitystring
warnings[].codeStable machine identity of the disclosure, independent of its prose.string
warnings[].messagestring
warnings[].citation.kindstring
warnings[].citation.sectionstring
warnings[].citation.displaystring
coverageStatusstring
coverageReasonstring
formIdstring
formRevisionstring
taxYearinteger
missing_requiredarray
warnings[].notesWhat the rate manifest records against the year, including what is still outstanding before the year can be verified.string
warnings[].sectionThe module that emitted the disclosure.string
warnings[].taxYearThe taxation year whose rate tables are unverified.integer
predecessors[].namenull | string
predecessors[].businessNumbernull | string
subsidiaries[].namenull | string
subsidiaries[].businessNumbernull | string
subsidiaries[].commencementDatenull | string
subsidiaries[].windUpDatenull | string
subsidiaries[].qualifiesUnderSection88_1boolean | null
subsidiaries[].assetsDistributedTaxationYearEndnull | string
subsidiaries[].assetDistributionCompletedInThatYearboolean | null
warnings[].citation.applies_to_boxes[]string
warnings[].citation.cra_text_verbatimstring
warnings[].citation.form_idstring
warnings[].citation.form_revisionstring
warnings[].citation.gate_idstring
warnings[].citation.rulestring
warnings[].citation.sourcestring
warnings[].citation.source_urlstring
warnings[].citation.verified_atstring
warnings[].gate_idstring
warnings[].box_formstring
warnings[].sources[]string
warnings[].taxYears[]integer
Filemark | schedule24 cells