schedule25

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
1998 and later
Strict profile
s25_versioned_profile_target_value_v1
Payload schema version
0.10.0
Dependencies (run automatically)
foreign_affiliate_analysis

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": [
    "schedule25"
  ],
  "inputs": {
    "taxYear": 2025,
    "t2Jacket": {
      "identification": {
        "isResidentOfCanada": true
      }
    },
    "schedule25": {
      "hasForeignAffiliates": true,
      "isNonResidentOwnedInvestmentCorp": false,
      "section212_3ForeignAffiliateInvestmentMade": false,
      "affiliateRows": [
        {
          "affiliateName": "Cedar Ridge USA Holdings Inc.",
          "equityPercentHeld": 10,
          "controlStatus": 2
        }
      ]
    }
  }
}

Input cells (11)

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 schedule25
CellTypesRequired
schedule25.affiliateRowsarray
schedule25.affiliateRows[].affiliateNameA 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 foreign-affiliate status.null | stringstrict
schedule25.affiliateRows[].controlStatusExact submitted printed option 2 for this branch. It is not a legal determination that the entity is an 'other' rather than controlled foreign affiliate.null | numberstrict
schedule25.affiliateRows[].equityPercentHeldThe equity percentage, pinned to one exact value by this profile. The form prints 'Equity % held' without stating which statutory measurement applies, so the value you send does not establish that measurement or its accuracy.null | numberstrict
schedule25.affiliateRows[].relatedPersonsAggregateEquityPercentPractitioner-stated total of the equity percentages in this affiliate held by the corporation plus each related person — limb (b) of the s.95(1) "foreign affiliate" definition, which requires that total to be not less than 10%. Not a printed CRA column. Only consulted when `equityPercentHeld` is at least 1% and below 10%, the band where classification turns entirely on related persons; at 10% or more the corporation's own holding satisfies limb (b) by itself. In that band an unanswered or below-10% total draws a review warning, never a block.null | number
schedule25.hasForeignAffiliatesSubmitted true branch flag only; it does not establish that the named entity satisfies the Income Tax Act foreign-affiliate definition.boolean | nullstrict
schedule25.isNonResidentOwnedInvestmentCorpThis candidate excludes the non-resident-owned investment corporation branch and requires the submitted value false; it does not independently determine that status.boolean | nullstrict
schedule25.section212_3ForeignAffiliateInvestmentMadeExplicit false answer to the ITA 212.3 foreign-affiliate-investment question required when the affiliate roster is open. The engine keeps omission fail-closed.boolean | null
schedule25.section212_3NonResidentControlAtInvestmentITA 212.3(1)(b): was the investing Canadian corporation, or the relevant other Canadian corporation, under non-resident control?boolean | null
t2Jacket.identification.isResidentOfCanadaT2 box 080: the corporation was resident in Canada in the taxation year. A no answer requires the box 081 country of residence.booleanstrict
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 (4 of 11 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 schedule25
CellAccepted values
schedule25.affiliateRows[].affiliateNamematches ^\S(?:[^\r\n\u000b\u000c\u0085\u2028\u2029]*\S)?$; 1 to 10000 characters
schedule25.affiliateRows[].controlStatus-1000000000000000 to 1000000000000000
schedule25.affiliateRows[].equityPercentHeld-1000000000000000 to 1000000000000000
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (145)

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

Output cells for schedule25
CellTypes
line_100The single-line name you submitted, echoed back. It is not a legal-name check or proof of foreign-affiliate status.null | string
line_200Exact current projection of the admitted submitted numeric value; it is not proof of the statutory measurement or accuracy of box 200.null | number
line_300Exact current projection of submitted printed option 2; it is not a legal classification determination.integer | null
affiliateRows[].affiliateIdPer-affiliate reconciliation key. Taken from the row's persisted key when the Schedule 25 blob carries one, and otherwise from the whitespace-collapsed upper-cased submitted name. It is a positional identity for the Schedule 1 ITA 91(1) reconciliation, not legal-name validation and not proof of foreign-affiliate status.null | string
affiliateRows[].affiliateNameThe single-line name you submitted, echoed back. It is not a legal-name check or proof of foreign-affiliate status.null | string
affiliateRows[].equityPercentHeldnull | number
affiliateRows[].controlStatusinteger | null
affiliate_countinteger
controlledAffiliatesThe CONTROLLED subset of the roster, published so Schedule 1 can reconcile its ITA 91(1) inclusion rows affiliate by affiliate instead of comparing two counts. Empty on this branch, whose single row is controlStatus 2 ("Other"). Emission does not classify any affiliate as controlled and is not proof of positive FAPI or a participating percentage.array
box_300_code_1_countMechanical count of submitted box-300 code 1 selections on the roster. It is a projection of the submitted printed option, not a Filemark determination of either s.95(1) control arm. Zero on this branch, whose single row is controlStatus 2 ("Other").integer
controlled_affiliate_countLegacy wire alias of box_300_code_1_count, retained additively for existing integrations.integer
other_affiliate_countinteger
filingPropositions[].schemaVersioninteger
filingPropositions[].propositionIdstring
filingPropositions[].statestring
filingPropositions[].filingDispositionstring
filingPropositions[].targets[]string
filingPropositions[].evidence[]string
warningsThe findings for this branch: a non-blocking T1134 review note, an error-severity T2 box 169 reconciliation (a populated roster and a box 169 answer that is not Yes cannot both be right), and a non-blocking T2 box 271 reconciliation warning. No entry establishes T1134 completeness, relief, deadline or penalty treatment, and none answers a jacket box on the filer's behalf.array
fired_gatesExact current metadata emitted by the five gates fired for this narrow branch. Emission records branch execution and source context; it does not prove the submitted legal facts or filing completeness.object
provisionalThe branch carries an error-severity finding (the T2 box 169 reconciliation), which the current engine reports as provisional. Provisional records that a blocking finding is open, not that any submitted fact was disproved.boolean
readyFalse on this branch. The request answers no T2 jacket applicability box, so box 169 is unanswered while the roster is populated, and the engine blocks on that contradiction. True would mean only that this branch produced no blocking result for the values sent.boolean
missing_requiredarray
coverageStatusstring
coverageReasonstring
formIdstring
formRevisionstring
taxYearinteger
warnings[].codestring
warnings[].severitystring
warnings[].messagestring
warnings[].notesstring
warnings[].sectionstring
warnings[].taxYearinteger
warnings[]object
controlledAffiliates[].affiliateIdnull | string
controlledAffiliates[].affiliateNamenull | string
controlledAffiliates[].equityPercentHeldnull | number
controlledAffiliates[].controlStatusinteger | null
warnings[].boxnull | string
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[].anchor_rowThe per-row navigation anchor the affiliate-roster findings carry, `s25-affiliate-<row index>`.string
warnings[].citation.displaystring
warnings[].citation.kindstring
warnings[].citation.sectionstring
fired_gates.filing_trigger_owns_foreign_affiliate.applies_to_boxes[]string
fired_gates.filing_trigger_owns_foreign_affiliate.cra_text_verbatimstring
fired_gates.filing_trigger_owns_foreign_affiliate.form_idstring
fired_gates.filing_trigger_owns_foreign_affiliate.form_revisionstring
fired_gates.filing_trigger_owns_foreign_affiliate.gate_idstring
fired_gates.filing_trigger_owns_foreign_affiliate.rulestring
fired_gates.filing_trigger_owns_foreign_affiliate.sourcestring
fired_gates.filing_trigger_owns_foreign_affiliate.source_urlstring
fired_gates.filing_trigger_owns_foreign_affiliate.verified_atstring
fired_gates.nroic_exemption_regime_repealed.applies_to_boxes[]string
fired_gates.nroic_exemption_regime_repealed.cra_text_verbatimstring
fired_gates.nroic_exemption_regime_repealed.form_idstring
fired_gates.nroic_exemption_regime_repealed.form_revisionstring
fired_gates.nroic_exemption_regime_repealed.gate_idstring
fired_gates.nroic_exemption_regime_repealed.rulestring
fired_gates.nroic_exemption_regime_repealed.sourcestring
fired_gates.nroic_exemption_regime_repealed.source_urlstring
fired_gates.nroic_exemption_regime_repealed.verified_atstring
fired_gates.box_100_affiliate_name_required.applies_to_boxes[]string
fired_gates.box_100_affiliate_name_required.cra_text_verbatimstring
fired_gates.box_100_affiliate_name_required.form_idstring
fired_gates.box_100_affiliate_name_required.form_revisionstring
fired_gates.box_100_affiliate_name_required.gate_idstring
fired_gates.box_100_affiliate_name_required.rulestring
fired_gates.box_100_affiliate_name_required.sourcestring
fired_gates.box_100_affiliate_name_required.source_urlstring
fired_gates.box_100_affiliate_name_required.verified_atstring
fired_gates.box_200_equity_percentage_definition.applies_to_boxes[]string
fired_gates.box_200_equity_percentage_definition.cra_text_verbatimstring
fired_gates.box_200_equity_percentage_definition.form_idstring
fired_gates.box_200_equity_percentage_definition.form_revisionstring
fired_gates.box_200_equity_percentage_definition.gate_idstring
fired_gates.box_200_equity_percentage_definition.rulestring
fired_gates.box_200_equity_percentage_definition.sourcestring
fired_gates.box_200_equity_percentage_definition.source_urlstring
fired_gates.box_200_equity_percentage_definition.verified_atstring
fired_gates.box_300_controlled_means_s95_1_cfa.applies_to_boxes[]string
fired_gates.box_300_controlled_means_s95_1_cfa.cra_text_verbatimstring
fired_gates.box_300_controlled_means_s95_1_cfa.form_idstring
fired_gates.box_300_controlled_means_s95_1_cfa.form_revisionstring
fired_gates.box_300_controlled_means_s95_1_cfa.gate_idstring
fired_gates.box_300_controlled_means_s95_1_cfa.rulestring
fired_gates.box_300_controlled_means_s95_1_cfa.sourcestring
fired_gates.box_300_controlled_means_s95_1_cfa.source_urlstring
fired_gates.box_300_controlled_means_s95_1_cfa.verified_atstring
fired_gates.cross_link_s91_1_fapi_inclusion.applies_to_boxes[]string
fired_gates.cross_link_s91_1_fapi_inclusion.cra_text_verbatimstring
fired_gates.cross_link_s91_1_fapi_inclusion.form_idstring
fired_gates.cross_link_s91_1_fapi_inclusion.form_revisionstring
fired_gates.cross_link_s91_1_fapi_inclusion.gate_idstring
fired_gates.cross_link_s91_1_fapi_inclusion.rulestring
fired_gates.cross_link_s91_1_fapi_inclusion.sourcestring
fired_gates.cross_link_s91_1_fapi_inclusion.source_urlstring
fired_gates.cross_link_s91_1_fapi_inclusion.verified_atstring
fired_gates.cross_link_t1134_filing_required.applies_to_boxes[]string
fired_gates.cross_link_t1134_filing_required.cra_text_verbatimstring
fired_gates.cross_link_t1134_filing_required.form_idstring
fired_gates.cross_link_t1134_filing_required.form_revisionstring
fired_gates.cross_link_t1134_filing_required.gate_idstring
fired_gates.cross_link_t1134_filing_required.rulestring
fired_gates.cross_link_t1134_filing_required.sourcestring
fired_gates.cross_link_t1134_filing_required.source_urlstring
fired_gates.cross_link_t1134_filing_required.verified_atstring
fired_gates.cross_link_s130_part2m_cfa_table.applies_to_boxes[]string
fired_gates.cross_link_s130_part2m_cfa_table.cra_text_verbatimstring
fired_gates.cross_link_s130_part2m_cfa_table.form_idstring
fired_gates.cross_link_s130_part2m_cfa_table.form_revisionstring
fired_gates.cross_link_s130_part2m_cfa_table.gate_idstring
fired_gates.cross_link_s130_part2m_cfa_table.rulestring
fired_gates.cross_link_s130_part2m_cfa_table.sourcestring
fired_gates.cross_link_s130_part2m_cfa_table.source_urlstring
fired_gates.cross_link_s130_part2m_cfa_table.verified_atstring
fired_gates.form_capacity_21_rows_supplementary_attach.applies_to_boxes[]string
fired_gates.form_capacity_21_rows_supplementary_attach.cra_text_verbatimstring
fired_gates.form_capacity_21_rows_supplementary_attach.form_idstring
fired_gates.form_capacity_21_rows_supplementary_attach.form_revisionstring
fired_gates.form_capacity_21_rows_supplementary_attach.gate_idstring
fired_gates.form_capacity_21_rows_supplementary_attach.rulestring
fired_gates.form_capacity_21_rows_supplementary_attach.sourcestring
fired_gates.form_capacity_21_rows_supplementary_attach.source_urlstring
fired_gates.form_capacity_21_rows_supplementary_attach.verified_atstring
fired_gates.consistency_has_affiliates_implies_rows.applies_to_boxes[]string
fired_gates.consistency_has_affiliates_implies_rows.cra_text_verbatimstring
fired_gates.consistency_has_affiliates_implies_rows.form_idstring
fired_gates.consistency_has_affiliates_implies_rows.form_revisionstring
fired_gates.consistency_has_affiliates_implies_rows.gate_idstring
fired_gates.consistency_has_affiliates_implies_rows.rulestring
fired_gates.consistency_has_affiliates_implies_rows.sourcestring
fired_gates.consistency_has_affiliates_implies_rows.source_urlstring
fired_gates.consistency_has_affiliates_implies_rows.verified_atstring
missing_required[]string
Filemark | schedule25 cells