schedule28
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2016 and later
- Strict profile
- s28_2025_two_other_corps_v1
- Payload schema version
- 0.6.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": [
"schedule28"
],
"inputs": {
"taxYear": 2025,
"schedule28": {
"amendedElection": false,
"thirdCorpName": "Cedar Ridge Holdings Inc.",
"thirdCorpBn": "333333334RC0001",
"thirdCorpTaxYearEnd": "2025-12-31",
"otherCorps": [
{
"name": "Cedar Ridge Manufacturing Inc.",
"businessNumber": "123456782RC0001"
},
{
"name": "Birchline Tools Ltd.",
"businessNumber": "222222226RC0001"
}
]
}
}
}Input cells (16)
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 return's tax year-end, pinned exactly. Sending it selects the branch that runs the box 050 equality check. The other current-year branch omits it, and the engine blocks on the missing year-end. | string | strict |
| fiscalStartThe return's fiscal-period start. Together with fiscalEnd it establishes the filer-owned taxation period; a lone year-end is not period evidence. | string | strict |
| isCCPCThe corporation-type fact at the request root, required on this branch. Schedule 28 reads its own schedule28.thirdCorpIsCcpc fact instead, so setting this one does not clear the unanswered-CCPC gate, and it does not establish legal status. | boolean | strict |
| schedule28.amendedElectionPinned to false. That does not establish this is an original election or that an election exists. | boolean | null | strict |
| schedule28.dateFiledPinned to null: box 010 is outside this profile. Null does not establish whether or when anything was filed. | null | string | |
| schedule28.otherCorpsPer-row "other" corporation entries. Must contain at least 2 populated rows for local structural completeness, based on the form's description of two other corporations and its per-corporation table. This does not establish that an election is legally effective. | array | |
| schedule28.otherCorps[].businessNumberThe first box 200 row's business number, pinned to a distinct fixed synthetic value. It is not a real business number, and it does not establish identity, registration, or association. | null | string | strict |
| schedule28.otherCorps[].nameA single-line name with at least one character and no leading or trailing whitespace. The 10,000-character ceiling is a Filemark limit, not a CRA field limit, a legal-name check, or proof of corporate identity or status. | null | string | strict |
| schedule28.othersAssociatedWithThirdCorpWhether the two other corporations were associated with the third corporation. Boolean is the canonical form. An absent answer leaves the ITA s.256(2)(b)(ii) election conclusion unanswered and the schedule fails closed. | boolean | null | number | string | |
| schedule28.othersNotOtherwiseAssociatedWhether the two other corporations would not otherwise be associated with each other. Boolean is the canonical form. An absent answer leaves the ITA s.256(2)(b)(ii) election conclusion unanswered. | boolean | null | number | string | |
| schedule28.supplementaryPagesAttachedTE-2026-08-27-062 — the printed grid holds 15 rows and the form says "If you need more space, attach additional schedules." The generated package prints only the 15, so a corporation in row 16 or beyond is covered by the election only if that attachment was really filed. s.256(2) deems non-association only for corporations the third corporation "elects in prescribed form" to cover, and Schedule 23 consumes that election into the business limit. Null is unanswered and holds; it is only asked when the grid overflows. | boolean | null | |
| schedule28.thirdCorpBnThe box 040 business number, pinned to one fixed synthetic value. It is not a real business number, and it does not establish that the number exists, belongs to the submitted name, or identifies a CCPC. | null | string | strict |
| schedule28.thirdCorpIsCcpcWhether the third corporation is a Canadian-controlled private corporation. Schedule 28 reads this fact rather than the request-root corporation type, so setting the root fact alone does not clear the unanswered-CCPC gate. | boolean | null | number | string | |
| schedule28.thirdCorpNameA single-line name with at least one character and no leading or trailing whitespace. The 10,000-character ceiling is a Filemark limit, not a CRA field limit, a legal-name check, or proof of corporate identity or status. | null | string | strict |
| schedule28.thirdCorpTaxYearEndPinned to the same 2025 tax year the request states, so the schedule body's year cannot disagree with the return's year. | null | 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 (12 of 16 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 |
| schedule28.dateFiled | 0 to 20000 characters |
| schedule28.otherCorps[].businessNumber | 0 to 20000 characters |
| schedule28.otherCorps[].name | matches ^\S(?:[^\r\n\u000b\u000c\u0085\u2028\u2029]*\S)?$; 1 to 10000 characters |
| schedule28.othersAssociatedWithThirdCorp | one of true, false, 0, 1, "true", "false" |
| schedule28.othersNotOtherwiseAssociated | one of true, false, 0, 1, "true", "false" |
| schedule28.thirdCorpBn | 0 to 20000 characters |
| schedule28.thirdCorpIsCcpc | one of true, false, 0, 1, "true", "false" |
| schedule28.thirdCorpName | matches ^\S(?:[^\r\n\u000b\u000c\u0085\u2028\u2029]*\S)?$; 1 to 10000 characters |
| schedule28.thirdCorpTaxYearEnd | date (YYYY-MM-DD); 10 to 10 characters |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027; 0 to 20000 characters |
Output cells (215)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| date_filed | null |
| amended_electionBox 020, 'Is this an amended election?', answered Yes. The engine echoes the answer; no other published member moves with it. | boolean | null |
| third_corp_name | null | string |
| third_corp_bn | null | string |
| third_corp_tax_year_end | null | string |
| third_corp_business_limit_deemed_nilThe engine emits no deemed-nil business limit for this branch because the election is not structurally complete. | null |
| other_corps[].name | null | string |
| other_corps[].businessNumber | null | string |
| warnings[].box | string |
| warnings[].severity | string |
| warnings[].messageExact current engine message. This contract records the string; it does not adopt it as a determination of the underlying statutory or association facts. | string |
| warnings[].gate_id | string |
| warnings[].citation.gate_id | string |
| warnings[].citation.form_id | string |
| warnings[].citation.rule | string |
| warnings[].citation.cra_text_verbatim | string |
| warnings[].citation.source | string |
| warnings[].citation.source_url | string |
| warnings[].citation.form_revision | string |
| warnings[].citation.applies_to_boxes[] | string |
| warnings[].citation.verified_at | string |
| fired_gates.box_040_matches_filing_corporation.gate_id | string |
| fired_gates.box_040_matches_filing_corporation.form_id | string |
| fired_gates.box_040_matches_filing_corporation.rule | string |
| fired_gates.box_040_matches_filing_corporation.cra_text_verbatim | string |
| fired_gates.box_040_matches_filing_corporation.source | string |
| fired_gates.box_040_matches_filing_corporation.source_url | string |
| fired_gates.box_040_matches_filing_corporation.form_revision | string |
| fired_gates.box_040_matches_filing_corporation.applies_to_boxes[] | string |
| fired_gates.box_040_matches_filing_corporation.verified_at | string |
| fired_gates.box_050_within_return_tax_year.gate_id | string |
| fired_gates.box_050_within_return_tax_year.form_id | string |
| fired_gates.box_050_within_return_tax_year.rule | string |
| fired_gates.box_050_within_return_tax_year.cra_text_verbatim | string |
| fired_gates.box_050_within_return_tax_year.source | string |
| fired_gates.box_050_within_return_tax_year.source_url | string |
| fired_gates.box_050_within_return_tax_year.form_revision | string |
| fired_gates.box_050_within_return_tax_year.applies_to_boxes[] | string |
| fired_gates.box_050_within_return_tax_year.verified_at | string |
| fired_gates.s256_2_a_conditions_answered.gate_id | string |
| fired_gates.s256_2_a_conditions_answered.form_id | string |
| fired_gates.s256_2_a_conditions_answered.rule | string |
| fired_gates.s256_2_a_conditions_answered.cra_text_verbatim | string |
| fired_gates.s256_2_a_conditions_answered.source | string |
| fired_gates.s256_2_a_conditions_answered.source_url | string |
| fired_gates.s256_2_a_conditions_answered.form_revision | string |
| fired_gates.s256_2_a_conditions_answered.applies_to_boxes[] | string |
| fired_gates.s256_2_a_conditions_answered.verified_at | string |
| fired_gates.third_corp_must_be_ccpc.gate_id | string |
| fired_gates.third_corp_must_be_ccpc.form_id | string |
| fired_gates.third_corp_must_be_ccpc.rule | string |
| fired_gates.third_corp_must_be_ccpc.cra_text_verbatim | string |
| fired_gates.third_corp_must_be_ccpc.source | string |
| fired_gates.third_corp_must_be_ccpc.source_url | string |
| fired_gates.third_corp_must_be_ccpc.form_revision | string |
| fired_gates.third_corp_must_be_ccpc.applies_to_boxes[] | string |
| fired_gates.third_corp_must_be_ccpc.verified_at | string |
| provisional | boolean |
| ready | boolean |
| coverageStatus | string |
| coverageReason | string |
| formId | string |
| formRevision | string |
| taxYear | integer |
| missing_required | array |
| warnings[].codeStable machine identity of the disclosure, independent of its prose. | string |
| 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 |
| warnings[].sources[] | string |
| warnings[].taxYears[] | integer |
| fired_gates.box_030_third_corp_name_required.gate_id | string |
| fired_gates.box_030_third_corp_name_required.form_id | string |
| fired_gates.box_030_third_corp_name_required.rule | string |
| fired_gates.box_030_third_corp_name_required.cra_text_verbatim | string |
| fired_gates.box_030_third_corp_name_required.source | string |
| fired_gates.box_030_third_corp_name_required.source_url | string |
| fired_gates.box_030_third_corp_name_required.form_revision | string |
| fired_gates.box_030_third_corp_name_required.applies_to_boxes[] | string |
| fired_gates.box_030_third_corp_name_required.verified_at | string |
| fired_gates.box_040_third_corp_bn_required.gate_id | string |
| fired_gates.box_040_third_corp_bn_required.form_id | string |
| fired_gates.box_040_third_corp_bn_required.rule | string |
| fired_gates.box_040_third_corp_bn_required.cra_text_verbatim | string |
| fired_gates.box_040_third_corp_bn_required.source | string |
| fired_gates.box_040_third_corp_bn_required.source_url | string |
| fired_gates.box_040_third_corp_bn_required.form_revision | string |
| fired_gates.box_040_third_corp_bn_required.applies_to_boxes[] | string |
| fired_gates.box_040_third_corp_bn_required.verified_at | string |
| fired_gates.box_040_third_corp_bn_format.gate_id | string |
| fired_gates.box_040_third_corp_bn_format.form_id | string |
| fired_gates.box_040_third_corp_bn_format.rule | string |
| fired_gates.box_040_third_corp_bn_format.cra_text_verbatim | string |
| fired_gates.box_040_third_corp_bn_format.source | string |
| fired_gates.box_040_third_corp_bn_format.source_url | string |
| fired_gates.box_040_third_corp_bn_format.form_revision | string |
| fired_gates.box_040_third_corp_bn_format.applies_to_boxes[] | string |
| fired_gates.box_040_third_corp_bn_format.verified_at | string |
| fired_gates.box_050_tax_year_end_required.gate_id | string |
| fired_gates.box_050_tax_year_end_required.form_id | string |
| fired_gates.box_050_tax_year_end_required.rule | string |
| fired_gates.box_050_tax_year_end_required.cra_text_verbatim | string |
| fired_gates.box_050_tax_year_end_required.source | string |
| fired_gates.box_050_tax_year_end_required.source_url | string |
| fired_gates.box_050_tax_year_end_required.form_revision | string |
| fired_gates.box_050_tax_year_end_required.applies_to_boxes[] | string |
| fired_gates.box_050_tax_year_end_required.verified_at | string |
| fired_gates.box_050_tax_year_end_iso_date_format.gate_id | string |
| fired_gates.box_050_tax_year_end_iso_date_format.form_id | string |
| fired_gates.box_050_tax_year_end_iso_date_format.rule | string |
| fired_gates.box_050_tax_year_end_iso_date_format.cra_text_verbatim | string |
| fired_gates.box_050_tax_year_end_iso_date_format.source | string |
| fired_gates.box_050_tax_year_end_iso_date_format.source_url | string |
| fired_gates.box_050_tax_year_end_iso_date_format.form_revision | string |
| fired_gates.box_050_tax_year_end_iso_date_format.applies_to_boxes[] | string |
| fired_gates.box_050_tax_year_end_iso_date_format.verified_at | string |
| fired_gates.box_010_date_filed_iso_date_format.gate_id | string |
| fired_gates.box_010_date_filed_iso_date_format.form_id | string |
| fired_gates.box_010_date_filed_iso_date_format.rule | string |
| fired_gates.box_010_date_filed_iso_date_format.cra_text_verbatim | string |
| fired_gates.box_010_date_filed_iso_date_format.source | string |
| fired_gates.box_010_date_filed_iso_date_format.source_url | string |
| fired_gates.box_010_date_filed_iso_date_format.form_revision | string |
| fired_gates.box_010_date_filed_iso_date_format.applies_to_boxes[] | string |
| fired_gates.box_010_date_filed_iso_date_format.verified_at | string |
| fired_gates.box_020_amended_election_required.gate_id | string |
| fired_gates.box_020_amended_election_required.form_id | string |
| fired_gates.box_020_amended_election_required.rule | string |
| fired_gates.box_020_amended_election_required.cra_text_verbatim | string |
| fired_gates.box_020_amended_election_required.source | string |
| fired_gates.box_020_amended_election_required.source_url | string |
| fired_gates.box_020_amended_election_required.form_revision | string |
| fired_gates.box_020_amended_election_required.applies_to_boxes[] | string |
| fired_gates.box_020_amended_election_required.verified_at | string |
| fired_gates.minimum_two_other_corporations_required.gate_id | string |
| fired_gates.minimum_two_other_corporations_required.form_id | string |
| fired_gates.minimum_two_other_corporations_required.rule | string |
| fired_gates.minimum_two_other_corporations_required.cra_text_verbatim | string |
| fired_gates.minimum_two_other_corporations_required.source | string |
| fired_gates.minimum_two_other_corporations_required.source_url | string |
| fired_gates.minimum_two_other_corporations_required.form_revision | string |
| fired_gates.minimum_two_other_corporations_required.applies_to_boxes[] | string |
| fired_gates.minimum_two_other_corporations_required.verified_at | string |
| fired_gates.box_100_other_corp_name_required.gate_id | string |
| fired_gates.box_100_other_corp_name_required.form_id | string |
| fired_gates.box_100_other_corp_name_required.rule | string |
| fired_gates.box_100_other_corp_name_required.cra_text_verbatim | string |
| fired_gates.box_100_other_corp_name_required.source | string |
| fired_gates.box_100_other_corp_name_required.source_url | string |
| fired_gates.box_100_other_corp_name_required.form_revision | string |
| fired_gates.box_100_other_corp_name_required.applies_to_boxes[] | string |
| fired_gates.box_100_other_corp_name_required.verified_at | string |
| fired_gates.box_200_other_corp_bn_required.gate_id | string |
| fired_gates.box_200_other_corp_bn_required.form_id | string |
| fired_gates.box_200_other_corp_bn_required.rule | string |
| fired_gates.box_200_other_corp_bn_required.cra_text_verbatim | string |
| fired_gates.box_200_other_corp_bn_required.source | string |
| fired_gates.box_200_other_corp_bn_required.source_url | string |
| fired_gates.box_200_other_corp_bn_required.form_revision | string |
| fired_gates.box_200_other_corp_bn_required.applies_to_boxes[] | string |
| fired_gates.box_200_other_corp_bn_required.verified_at | string |
| fired_gates.box_200_other_corp_bn_format.gate_id | string |
| fired_gates.box_200_other_corp_bn_format.form_id | string |
| fired_gates.box_200_other_corp_bn_format.rule | string |
| fired_gates.box_200_other_corp_bn_format.cra_text_verbatim | string |
| fired_gates.box_200_other_corp_bn_format.source | string |
| fired_gates.box_200_other_corp_bn_format.source_url | string |
| fired_gates.box_200_other_corp_bn_format.form_revision | string |
| fired_gates.box_200_other_corp_bn_format.applies_to_boxes[] | string |
| fired_gates.box_200_other_corp_bn_format.verified_at | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.gate_id | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.form_id | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.rule | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.cra_text_verbatim | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.source | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.source_url | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.form_revision | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.applies_to_boxes[] | string |
| fired_gates.other_corp_bn_distinct_from_third_corp.verified_at | string |
| fired_gates.other_corp_bn_unique_within_election.gate_id | string |
| fired_gates.other_corp_bn_unique_within_election.form_id | string |
| fired_gates.other_corp_bn_unique_within_election.rule | string |
| fired_gates.other_corp_bn_unique_within_election.cra_text_verbatim | string |
| fired_gates.other_corp_bn_unique_within_election.source | string |
| fired_gates.other_corp_bn_unique_within_election.source_url | string |
| fired_gates.other_corp_bn_unique_within_election.form_revision | string |
| fired_gates.other_corp_bn_unique_within_election.applies_to_boxes[] | string |
| fired_gates.other_corp_bn_unique_within_election.verified_at | string |
| fired_gates.other_corp_nr_name_unique_within_election.gate_id | string |
| fired_gates.other_corp_nr_name_unique_within_election.form_id | string |
| fired_gates.other_corp_nr_name_unique_within_election.rule | string |
| fired_gates.other_corp_nr_name_unique_within_election.cra_text_verbatim | string |
| fired_gates.other_corp_nr_name_unique_within_election.source | string |
| fired_gates.other_corp_nr_name_unique_within_election.source_url | string |
| fired_gates.other_corp_nr_name_unique_within_election.form_revision | string |
| fired_gates.other_corp_nr_name_unique_within_election.applies_to_boxes[] | string |
| fired_gates.other_corp_nr_name_unique_within_election.verified_at | string |
| fired_gates.other_corp_rows_overflow_supplementary.gate_id | string |
| fired_gates.other_corp_rows_overflow_supplementary.form_id | string |
| fired_gates.other_corp_rows_overflow_supplementary.rule | string |
| fired_gates.other_corp_rows_overflow_supplementary.cra_text_verbatim | string |
| fired_gates.other_corp_rows_overflow_supplementary.source | string |
| fired_gates.other_corp_rows_overflow_supplementary.source_url | string |
| fired_gates.other_corp_rows_overflow_supplementary.form_revision | string |
| fired_gates.other_corp_rows_overflow_supplementary.applies_to_boxes[] | string |
| fired_gates.other_corp_rows_overflow_supplementary.verified_at | string |
| fired_gates.third_corp_business_limit_deemed_nil.gate_id | string |
| fired_gates.third_corp_business_limit_deemed_nil.form_id | string |
| fired_gates.third_corp_business_limit_deemed_nil.rule | string |
| fired_gates.third_corp_business_limit_deemed_nil.cra_text_verbatim | string |
| fired_gates.third_corp_business_limit_deemed_nil.source | string |
| fired_gates.third_corp_business_limit_deemed_nil.source_url | string |
| fired_gates.third_corp_business_limit_deemed_nil.form_revision | string |
| fired_gates.third_corp_business_limit_deemed_nil.applies_to_boxes[] | string |
| fired_gates.third_corp_business_limit_deemed_nil.verified_at | string |