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.
| Cell | Types | Required |
|---|---|---|
| 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[] | string | strict |
| 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 | string | strict |
| 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 | string | always |
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.
| Cell | Accepted values |
|---|---|
| schedule24.filingTriggers[] | 0 to 20000 characters |
| schedule24.operationCode | one of "01", "02", "03", "04", "05", "06", "07", "09", "10", "11", "12", "13", "14", "15", "16", "17", "99" |
| schedule24.predecessors[].businessNumber | 0 to 20000 characters |
| schedule24.predecessors[].name | 0 to 20000 characters |
| schedule24.subsidiaries[].assetsDistributedTaxationYearEnd | 0 to 20000 characters |
| schedule24.subsidiaries[].businessNumber | 0 to 20000 characters |
| schedule24.subsidiaries[].commencementDate | 0 to 20000 characters |
| schedule24.subsidiaries[].name | 0 to 20000 characters |
| schedule24.subsidiaries[].windUpDate | 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 (46)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| 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 |
| predecessors | array |
| subsidiaries | array |
| warnings | array |
| fired_gatesEvery registered gate this result raised, keyed by gate identifier. At least one member is what selects this branch. | object |
| provisional | boolean |
| ready | boolean |
| 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[].severity | string |
| warnings[].codeStable machine identity of the disclosure, independent of its prose. | string |
| warnings[].message | string |
| warnings[].citation.kind | string |
| warnings[].citation.section | string |
| warnings[].citation.display | string |
| coverageStatus | string |
| coverageReason | string |
| formId | string |
| formRevision | string |
| taxYear | integer |
| missing_required | array |
| 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[].name | null | string |
| predecessors[].businessNumber | null | string |
| subsidiaries[].name | null | string |
| subsidiaries[].businessNumber | null | string |
| subsidiaries[].commencementDate | null | string |
| subsidiaries[].windUpDate | null | string |
| subsidiaries[].qualifiesUnderSection88_1 | boolean | null |
| subsidiaries[].assetsDistributedTaxationYearEnd | null | string |
| subsidiaries[].assetDistributionCompletedInThatYear | boolean | null |
| 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[].gate_id | string |
| warnings[].box_form | string |
| warnings[].sources[] | string |
| warnings[].taxYears[] | integer |