schedule71

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2011 and later
Strict profile
s71_2024_single_tier_worked_example_target_value_v1
Payload schema version
0.11.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": [
    "schedule71"
  ],
  "inputs": {
    "schedule71": {
      "becameBankruptInYear": false,
      "corpTaxYearEnd": "2025-12-31",
      "corpTaxYearStart": "2025-01-01",
      "isMultiTierPartnership": false,
      "isProfessionalCorp": false,
      "multiTierAlignmentYear1Suspension": false,
      "partnershipIsForeignAffiliateSurrogate": false,
      "partnerships": [
        {
          "continuousMembershipSinceBeforeMarch22_2011": true,
          "corpSharePercentage": 50,
          "particularPeriodEnd": "2026-01-31",
          "particularPeriodStart": "2025-02-01",
          "partnershipBN": "123456782RZ0001",
          "partnershipFYEndInYear": "2025-01-31",
          "partnershipFYStartInYear": "2024-02-01",
          "partnershipName": "Cedar Ridge Operations LP",
          "significantInterestConfirmed": true,
          "var_A_share_of_income_and_tcg": 1000000,
          "var_A_tcg_component": 0,
          "var_B_acl_component": 0,
          "var_B_share_of_loss_and_acl": 0,
          "var_E_designated_qre": 0,
          "var_F_discretionary": 0,
          "corpEntitledToShareAtParticularPeriodEnd": true,
          "var_A_active_business_component": 1000000,
          "var_A_property_component": 0,
          "var_A_other_component": 0
        }
      ]
    },
    "taxYear": 2025
  }
}

Input cells (68)

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 schedule71
CellTypesRequired
schedule71.becameBankruptInYears.34.2(7) carve-out: the corporation became bankrupt in the year, so neither the ASPA inclusion nor the s.34.2(3) new-partner designation applies.boolean | nullstrict
schedule71.corpFilingDueDateYYYY-MM-DD override of the ITA 150(1)(a) filing-due date the engine derives (six months after the tax-year end, CRA day-of-month rule, rolled off a holiday). s.34.2(3) is available only where the particular period ends on or before that date.null | string
schedule71.corpTaxYearEndnull | stringstrict
schedule71.corpTaxYearStartYYYY-MM-DD. Used for the variable-C / 3C day computations.null | stringstrict
schedule71.isMultiTierPartnershipScope check: the partnership is itself a member of another partnership (s.102(2), s.249.1(1)(c)); multi-tier partnerships use Schedule 72, not Schedule 71.boolean | nullstrict
schedule71.isProfessionalCorps.34.2(2) chapeau carve-out: a professional corporation accrues stub-period income under s.34.1 instead of the ASPA regime.boolean | nullstrict
schedule71.multiTierAlignmentYear1Suspensions.34.2(9): ASPA is suspended for taxation years preceding the year that includes the end of the first aligned fiscal period.boolean | nullstrict
schedule71.partnershipIsForeignAffiliateSurrogates.34.2(8) carve-out: s.34.2 does not apply in computing FAPI or foreign-affiliate surplus; the accrual flows through the surplus computation instead.boolean | nullstrict
schedule71.partnershipsarray
schedule71.partnerships[].actual_stub_period_accrual_s343Form 4K analogue — actual stub period accrual (s.34.3(1) A-side).null | number
schedule71.partnerships[].avg_daily_prescribed_rate_reg_4301_aForm 4S — average daily Reg 4301(a) rate (daily, NOT annualized). Engine blocks the shortfall with an error when missing.null | number
schedule71.partnerships[].avg_daily_prescribed_rate_reg_4301_a_sourceWhere a practitioner-entered amount 4S daily rate comes from, as free text. ITA s.34.3(1) variable D is determined by reference to the rate prescribed under Regulation 4301(a), so an entered rate is admissible only for a variable-C window no published quarter reaches, and then only with a named source. Blank or omitted leaves the rate unusable and blocks the shortfall.null | string
schedule71.partnerships[].base_year_aspa_inclusionBase-year ASPA inclusion under s.34.2(2) (s.34.3(1) B).null | number
schedule71.partnerships[].base_year_aspa_with_F_set_nilForm amount 4N — base-year ASPA recomputed with F = nil (s.34.3(1) A-side cap). When null the engine derives it as amount 4L + amount 4M per the form face, floored at zero.null | number
schedule71.partnerships[].base_year_var_F_discretionaryForm amount 4M — discretionary amount designated in the BASE year (base-year amount 2K). Carried forward automatically; supplied so amount 4N can be derived.null | number
schedule71.partnerships[].box_3A_designated_in_return_before_filing_due_date3A support — designated in return before filing-due date?boolean | null
schedule71.partnerships[].box_3A_discretionary_designationForm amount 3A — discretionary designation by the corp.null | number
schedule71.partnerships[].box_3B_corp_income_particular_periodForm amount 3B — corp income from particular period (excl s.112/113).null | number
schedule71.partnerships[].box_3C_day_ratioForm amount 3C — day-ratio override (auto from dates if null).null | number
schedule71.partnerships[].continuousMembershipSinceBeforeMarch22_2011s.34.2(13)(a) transitional condition: the corporation has been a member of the partnership continuously since before March 22, 2011; required for the qualifying transitional income reserve.boolean | nullstrict
schedule71.partnerships[].corpBankruptOrDissolvedOtherThanS881boolean | null
schedule71.partnerships[].corpEntitledToShareAtParticularPeriodEndWhether, at the end of the year, the corporation is entitled to a share of the partnership's income, loss, taxable capital gain or allowable capital loss for the fiscal period — the ITA 34.2(2)(c) condition. Strict tri-state: true admits the row's ASPA, false applies the (2)(c) carveout and zeroes it, and an absent answer withholds the ASPA and blocks. The answer is a submitted practitioner fact and is not proof that the corporation was so entitled.boolean | nullstrict
schedule71.partnerships[].corpNonResidentNoPEboolean | null
schedule71.partnerships[].corpSharePercentageBox 230 — corp share % at end of last FY (0-100).null | numberstrict
schedule71.partnerships[].corpTaxExemptboolean | null
schedule71.partnerships[].corp_income_before_reserveCap (iii) — income before claiming the reserve.null | number
schedule71.partnerships[].days_base_year_end_to_ty_endForm 4Q — days from day-after-base-year-end to TY-end.null | number
schedule71.partnerships[].deemedContinuingPartnerUnderS342_14s.34.2(14) deemed-continuity exception for a successor partner.boolean | null
schedule71.partnerships[].eligibleAlignmentIncomeOne-time eligible alignment income (persists year-over-year).null | number
schedule71.partnerships[].firstQtiTaxationYearEndYearCalendar year in which the corporation's FIRST taxation year with qualifying transitional income ends. Selects s.34.2(1) paragraph (a) 2011, (b) 2012 or (c) 2013 outright; null derives it from qtiYearIndex.null | number
schedule71.partnerships[].firstTaxationYearS342_17AppliesEndYearITA 34.3(2)(b) — calendar year in which the corporation's first taxation year to which s.34.2(17) applies ends. Consulted only when this row carries QTI; ITA 34.2(16) fixes the historical year, so an absent answer blocks rather than assuming the condition is met.null | number
schedule71.partnerships[].firstYearAspaForQtiFirst-year ASPA component of the QTI base.null | number
schedule71.partnerships[].isNewCorpMemberInParticularPeriodboolean | null
schedule71.partnerships[].noFiscalPeriodEndedInYearTrue iff no FY ended in TY (AoC short year / amalgamation). Per CRA T.I. 2014-0539191E5 — row ASPA = 0.boolean | null
schedule71.partnerships[].particularPeriodEndParticular [stub] period end (FY ending after TY).null | stringstrict
schedule71.partnerships[].particularPeriodStartBox 225 — particular [stub] period start (FY beginning in TY).null | stringstrict
schedule71.partnerships[].partnershipBNBox 210 — full 15-character RZ partnership account.null | stringstrict
schedule71.partnerships[].partnershipBusinessContinuedboolean | null
schedule71.partnerships[].partnershipFYEndInYearBox 220 — partnership FY end (last FY ending in TY). YYYY-MM-DD.null | stringstrict
schedule71.partnerships[].partnershipFYStartInYearPartnership FY START, used to derive variable D (box 255). There is no 365-day fallback: send this or `var_D_days_in_FYs_ending_in_year`, or the row is blocked.null | stringstrict
schedule71.partnerships[].partnershipNameBox 200 — partnership's name.null | stringstrict
schedule71.partnerships[].post_2012_s112_s113_dividend_deductionsCap (iii) — post-2012 s.112/s.113 dividend deductions.null | number
schedule71.partnerships[].qtiComputedUsingMaximumDeductionsS342_15Confirms the s.34.2(15) maximum-deductions premise for QTI.boolean | null
schedule71.partnerships[].qtiReserveClaimedRowBox 115 input — QTI reserve claimed (least-of-three capped).null | number
schedule71.partnerships[].qtiTcgComponentThe taxable-capital-gain component of this row's qualifying transitional income for the ITA 34.2(11)(b)(ii) reserve-character split. Enter 0 when the historical QTI contained no taxable capital gains; absence is unanswered when a reserve is claimed.null | number
schedule71.partnerships[].qtiYearIndex0 = alignment year, ..., 5+ = fully phased out. Ordinal only — the s.34.2(1) "specified percentage" is fixed by two CALENDAR years, so the engine resolves the paragraph from the corporation's TY-end year together with firstQtiTaxationYearEndYear (or this index). No paragraph reaches a particular year after 2017.null | number
schedule71.partnerships[].recentMembershipForReserveAvoidanceboolean | null
schedule71.partnerships[].relatedPartyAggregatedSharePercentageRelated-party-aggregated share % for the significant-interest look-through (s.34.2(1)).null | number
schedule71.partnerships[].s342_16_17_qti_adjustment_amounts.34.2(16)/(17) post-filing adjustment (adds to cap (ii)).null | number
schedule71.partnerships[].significantInterestConfirmedPractitioner confirmation of the s.34.2(1) significant-interest test: the corporation, together with related or affiliated persons, holds more than 10 percent of the partnership's income entitlement.boolean | nullstrict
schedule71.partnerships[].var_A_active_business_componentThe active-business share of this row's variable A character split. ITA 34.2(5)(a)(i) gives the adjusted stub period accrual the same character, in the same proportions, as the income the partnership allocated to the corporation — an allocation fact the corporation cannot infer. Send all three shares: an absent breakdown is UNKNOWN and blocks rather than filing the whole non-capital amount on T2 SCH 73 line 270.integer | null | number
schedule71.partnerships[].var_A_includes_s112_s113_dividendsError-flag: A includes s.112/s.113 dividends (engine blocks).boolean | null
schedule71.partnerships[].var_A_other_componentThe other-income share of this row's variable A character split, on the same ITA 34.2(5)(a)(i) terms as the active-business share. Send all three: an absent breakdown is UNKNOWN and blocks rather than filing the whole non-capital amount on T2 SCH 73 line 270.integer | null | number
schedule71.partnerships[].var_A_property_componentThe property-income share of this row's variable A character split, on the same ITA 34.2(5)(a)(i) terms as the active-business share. Send all three: an absent breakdown is UNKNOWN and blocks rather than filing the whole non-capital amount on T2 SCH 73 line 270.integer | null | number
schedule71.partnerships[].var_A_share_of_income_and_tcgBox 240 — A: corp share of income + TCG for FYs ending in TY (excl s.112/113 dividends; form amounts 2A + 2D).null | number | stringstrict
schedule71.partnerships[].var_A_tcg_componentTCG component inside A (drives the s.34.2(5)(a) character split and the B-side ACL cap).null | numberstrict
schedule71.partnerships[].var_B_acl_componentACL component inside B (engine caps it at TCG-in-A).null | numberstrict
schedule71.partnerships[].var_B_includes_111_1_e_lp_lossesError-flag: B nets s.111(1)(e) LP-loss carryforwards (engine blocks per CRA T.I. 2018-0788161E5 — those go to Schedule 4).boolean | null
schedule71.partnerships[].var_B_share_of_loss_and_aclBox 245 — B: corp share of loss + ACL (form amounts 2B + 2E).null | numberstrict
schedule71.partnerships[].var_C_days_in_bothBox 250 — C: days in both TY and stub period (auto from dates when null).null | number
schedule71.partnerships[].var_D_days_in_FYs_ending_in_yearBox 255 — D: days in partnership FYs ending in TY (auto from partnershipFYStartInYear when null). There is NO default: T2 SCH 71 (19) Note 2 verbatim allows more than 365 days, and a short fiscal period or a leap year changes the filed ASPA, so a row with neither this override nor partnershipFYStartInYear is BLOCKED.null | number
schedule71.partnerships[].var_E_designated_qreBox 260 — E: designated qualified resource expense (s.34.2(6)).null | numberstrict
schedule71.partnerships[].var_E_max_deductibleE support — max deductible under s.66.1/66.2/66.21/66.4.null | number
schedule71.partnerships[].var_E_written_info_from_partnership_receivedE support — written info from partnership received before the filing-due date (s.34.2(6) requirement).boolean | null
schedule71.partnerships[].var_F_designated_in_base_yearTrigger: corp designated F (amount 2K) in the BASE year.boolean | null
schedule71.partnerships[].var_F_discretionaryBox 265 — F: discretionary designation (IRREVOCABLE, s.34.2(10)).null | numberstrict
schedule71.wasOpenedFromDesignatedMemberFlowDisambiguation: opened from S7 "designated member" flow? Info advisory — s.125(7) concept, NOT s.34.2.boolean | null
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 (20 of 68 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 schedule71
CellAccepted values
schedule71.corpTaxYearEnd0 to 20000 characters
schedule71.corpTaxYearStart0 to 20000 characters
schedule71.partnerships[].corpSharePercentage-1000000000000000 to 1000000000000000
schedule71.partnerships[].particularPeriodEnd0 to 20000 characters
schedule71.partnerships[].particularPeriodStart0 to 20000 characters
schedule71.partnerships[].partnershipBN0 to 20000 characters
schedule71.partnerships[].partnershipFYEndInYear0 to 20000 characters
schedule71.partnerships[].partnershipFYStartInYear0 to 20000 characters
schedule71.partnerships[].partnershipName0 to 20000 characters
schedule71.partnerships[].qtiTcgComponent-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_A_active_business_component-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_A_other_component-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_A_property_component-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_A_share_of_income_and_tcg-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule71.partnerships[].var_A_tcg_component-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_B_acl_component-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_B_share_of_loss_and_acl-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_E_designated_qre-1000000000000000 to 1000000000000000
schedule71.partnerships[].var_F_discretionary-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 (95)

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

Output cells for schedule71
CellTypes
becameBankruptInYearThe caller's answer to this scope question, echoed back. Null when the request does not state it; the unanswered question is named in `missing_required` rather than read as No.boolean | null
character_split.ordinarynumber
character_split.tcgnumber
character_split.activeBusinessnumber
character_split.othernumber
character_split.propertynumber
fired_gatesobject
isMultiTierPartnershipThe caller's answer to this scope question, echoed back. Null when the request does not state it; the unanswered question is named in `missing_required` rather than read as No.boolean | null
isProfessionalCorpThe caller's answer to this scope question, echoed back. Null when the request does not state it; the unanswered question is named in `missing_required` rather than read as No.boolean | null
line_100number
line_105number
line_110number
line_115number
line_120number
line_200Box 200, the partnership's name, taken from the first row. Null when the schedule has no partnership row to take it from, and null on a row whose own cell is unanswered; the unanswered cell is named in `missing_required`.null | string
line_210Box 210, the partnership's business number, taken from the first row. Null when the schedule has no partnership row to take it from, and null on a row whose own cell is unanswered; the unanswered cell is named in `missing_required`.null | string
line_220Box 220, the end of the last fiscal period ending in the year, taken from the first row. Null when the schedule has no partnership row to take it from, and null on a row whose own cell is unanswered; the unanswered cell is named in `missing_required`.null | string
line_225Box 225, the start of the particular period, taken from the first row. Null when the schedule has no partnership row to take it from, and null on a row whose own cell is unanswered; the unanswered cell is named in `missing_required`.null | string
line_230number
line_240number
line_245number
line_250integer
line_255integer
line_260number
line_265number
line_270number
missing_required[]string
net_to_schedule_73number
partnerships[]._shortfall_inner_b_nil_s343_3number
partnerships[].amount_2I_gross_stub_for_s73_col1number
partnerships[].amount_2J_qre_for_s73_col2number
partnerships[].amount_2K_discretionary_for_s73_col3number
partnerships[].amount_3E_new_member_for_s73_col6number
partnerships[].amount_4T_shortfall_for_s73_col9number
partnerships[].amount_4W_threshold_for_s73_col10number
partnerships[].character_ordinarynumber
partnerships[].character_tcgnumber
partnerships[].income_shortfall_s343number
partnerships[].line_200Box 200, the partnership's name on this row. Empty when the row does not state it; the unstated cell is named in `missing_required` rather than filled in.string
partnerships[].line_210Box 210, the partnership's business number on this row. Empty when the row does not state it; the unstated cell is named in `missing_required` rather than filled in.string
partnerships[].line_220string
partnerships[].line_225Box 225, the start of the particular period on this row. Null when the row does not state it; the unanswered cell is named in `missing_required`.null | string
partnerships[].line_230number
partnerships[].line_240number
partnerships[].line_245number
partnerships[].line_250integer
partnerships[].line_255integer
partnerships[].line_260number
partnerships[].line_265number
partnerships[].line_270number
partnerships[].prior_year_aspa_reversal_s342_4number
partnerships[].qti_reserve_addback_s342_12number
partnerships[].qti_reserve_deduction_s342_11number
partnerships[].reg_4301_a_rate_application.autoCalculatedboolean
partnerships[].reg_4301_a_rate_application.averageDailyRatenumber
partnerships[].reg_4301_a_rate_application.statusstring
partnerships[].character_active_businessnumber
partnerships[].character_breakdown_suppliedboolean
partnerships[].character_othernumber
partnerships[].character_propertynumber
partnerships[].particular_period_endThe end of the particular period on this row, which Schedule 73 reads as its box 140. Null when the row does not state it.null | string
partnerships[].prior_year_aspa_reversal_tcg_s342_4array | boolean | null | number | object | string
partnerships[].qti_reserve_addback_capital_s342_12_bnumber
partnerships[].qti_reserve_deduction_capital_s342_11_b_iinumber
partnerships[].aspa_withheld_pending_s342_2_c_answernumber
provisionalboolean
readyboolean
total_aspa_inclusionnumber
total_income_shortfallnumber
total_new_corp_member_inclusionnumber
total_prior_year_aspa_reversalnumber
total_qti_reserve_addbacknumber
total_qti_reserve_deductionnumber
warnings[].boxarray | boolean | null | number | object | 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_idIdentifier of the registered T4012 gate that raised the finding; travels with `citation`.string
warnings[].messagestring
warnings[].severitystring
warnings[].codeStable machine identity of the finding, independent of its prose. Present on a finding a consumer is expected to branch on; absent on a prose-only review finding.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[].sources[]string
warnings[].taxYearThe taxation year whose rate tables are unverified.integer
warnings[].taxYears[]integer
prior_year_aspa_reversal_character_knownboolean
total_prior_year_aspa_reversal_tcgnumber
total_aspa_withheld_pending_entitlementnumber
Filemark | schedule71 cells