schedule5

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2025 and later
Strict profile
s5_2025_reg402_two_jurisdiction_worked_example_target_value_v1
Payload schema version
0.13.0
Dependencies (run automatically)
division_c, schedule1, schedule2, schedule21, schedule3, schedule4

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": [
    "schedule5"
  ],
  "inputs": {
    "taxYear": 2025,
    "fiscalStart": "2025-01-01",
    "fiscalEnd": "2025-12-31",
    "daysInYear": 365,
    "applicableRegulation": "402",
    "reg402_1CentralPaymasterArrangement": false,
    "partnershipOperations": false,
    "outsourcedServiceFeesPaid": false,
    "accounts": [
      {
        "id": "revenue",
        "accountCode": "4000",
        "accountName": "Cedar Ridge active business revenue",
        "currentYearBalance": -100000,
        "classification": {
          "schedule1Relevant": false,
          "incomeType": "active_business",
          "foreignSource": false
        }
      }
    ],
    "incomeStatementFlags": {
      "revenue": true
    },
    "pyUCCPools": [],
    "assetData": [],
    "dispositions": [],
    "allocations": [
      {
        "jurisdiction": "ON",
        "hasPermanentEstablishment": true,
        "totalSalariesWages": 60000,
        "grossRevenue": 40000,
        "revenueReclass": 0
      },
      {
        "jurisdiction": "BC",
        "hasPermanentEstablishment": true,
        "totalSalariesWages": 40000,
        "grossRevenue": 60000,
        "revenueReclass": 0
      },
      {
        "jurisdiction": "AB",
        "hasPermanentEstablishment": false,
        "totalSalariesWages": 0,
        "grossRevenue": 0,
        "revenueReclass": 0,
        "albertaSmallBusinessFactorBasis": null
      }
    ],
    "isCCPC": true
  }
}

Input cells (51)

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 schedule5
CellTypesRequired
accounts[].accountCodestringstrict
accounts[].accountNamestringstrict
accounts[].classification.foreignSourceThe account's income is foreign source; schedules that split Canadian from foreign amounts route it accordingly, for example Schedule 7's foreign property and rental buckets and line 500 foreign business income.booleanstrict
accounts[].classification.incomeTypestringstrict
accounts[].classification.schedule1RelevantMarks the account's concept as one to review for Schedule 1. It does not decide the posting; the classification's line and treatment do.booleanstrict
accounts[].currentYearBalanceintegerstrict
accounts[].idstringstrict
allocationsarray
allocations[].albertaSmallBusinessFactorBasisAlberta-row tri-state authority choice when ACTA s.19(1)/s.22(2.2) and AT1 Schedule 1 line 021 produce different small-business allocation factors. Omit or send null while unanswered; statute and prescribed_form select the named reading.null | string
allocations[].grossRevenueinteger | null | numberstrict
allocations[].hasPermanentEstablishmentThe corporation had a permanent establishment (Reg 400(2)) in this jurisdiction in the year; only PE jurisdictions enter the Reg 402 salaries-and-revenue allocation.boolean | nullstrict
allocations[].jurisdictionnull | stringstrict
allocations[].revenueReclassinteger | null | numberstrict
allocations[].totalSalariesWagesinteger | null | numberstrict
applicableRegulationThe practitioner determination for Schedule 5 box 100. This exact profile is an ordinary corporation governed by Regulation 402.stringstrict
assetDataarraystrict
daysInYearInclusive day count of the taxation year. It must equal the fiscalStart-to-fiscalEnd span, counting both end days, so a leap year states 366. Required for the same reason as fiscalStart; the count reconciles the bounds and never constructs them.integerstrict
dispositionsarraystrict
fiscalEndLast day of the taxation year, as YYYY-MM-DD, on or after fiscalStart. Its calendar year must equal taxYear. Required for the same reason as fiscalStart.null | stringstrict
fiscalStartFirst day of the taxation year, as YYYY-MM-DD. Required because this target's dependency closure reaches part_i_tax, whose rates and limits are day-weighted; ITA s.249(1)(a) makes the taxation year the fiscal period, and the engine will not invent calendar-year bounds.null | stringstrict
incomeStatementFlags.revenueTrue when the trial-balance account with this id is an income-statement account; flagged balances form net income per financial statements, Schedule 1 amount A.booleanstrict
isCCPCThe corporation was a Canadian-controlled private corporation (ITA s.125(7) definition) throughout the taxation year.boolean
outsourcedServiceFeesPaidFalse confirms that Regulation 402(7) does not add deemed salary to this exact witness.booleanstrict
partnershipOperationsFalse confirms that Regulation 402(6) does not add partnership revenue or salaries to this exact witness.booleanstrict
pyUCCPoolsarraystrict
reg402_1CentralPaymasterArrangementFalse confirms that Regulation 402.1 does not add a particular salary to the benefiting corporation or deduct one from a central-paymaster employer in this exact witness.booleanstrict
schedule5.allocationsarray
schedule5.allocations[].allocatedTaxableIncomenumber
schedule5.allocations[].allocationFactorScale: 0–1 fraction. The Reg 402(3) proportion itself — column F over the amount being allocated — so it is independent of the base. T2 SCH 18 Notes 4/5 and 9/10 define the Ontario/Manitoba allocation factors as column F over T2 line 360 and direct that when taxable income is nil, column F be computed "as if the taxable income were $1,000"; that division cancels the base and leaves exactly this.number
schedule5.allocations[].grossRevenuenumber
schedule5.allocations[].hasPermanentEstablishmentReg 400 permanent establishment — TRI-STATE. `null` means the question is UNANSWERED, which is neither a yes nor a no: the row takes no allocation (Reg 402(2) denies one to a province without a permanent establishment), and when it carries gross revenue or salaries the engine raises the error-severity `schedule5_permanent_establishment_unanswered` hold instead of reading the blank as "no".boolean | null
schedule5.allocations[].jurisdictionstring
schedule5.allocations[].outsourcedServiceFeesReg 402(7): qualifying service fees reasonably attributable to services rendered at this PE. Reg 402(8) commissions are excluded.null | number
schedule5.allocations[].partnershipGrossRevenueReg 402(6)(c): partnership gross revenue attributable to this PE before applying the corporation's paragraph (e)/(f) income-share proportion.null | number
schedule5.allocations[].partnershipSalariesWagesReg 402(6)(d): partnership salaries and wages attributable to this PE before applying the corporation's paragraph (e)/(f) proportion.null | number
schedule5.allocations[].reg402_1DeemedSalaryReg 402.1(1)-(2): particular salary deemed paid by the benefiting corporation and attributed to this permanent establishment.null | number
schedule5.allocations[].reg402_1SalaryDeductionReg 402.1(3): particular salary paid by the central-paymaster employer and deducted from this jurisdiction's Part IV salary operand. Enter the deduction as a positive amount.null | number
schedule5.allocations[].reg402_4_1ThrowbackRevenueReg 402(4.1)(d), read with Reg 402(4)(c)/(f): qualifying foreign-sale gross revenue attributable to this Canadian producing PE. The engine requires the populated producing-PE amounts to foot to the separately confirmed qualifying sale revenue before applying any throwback.null | number
schedule5.allocations[].revenueAllocationPercentScale: 0–100 percentage. Sibling of salaryAllocationPercent.number
schedule5.allocations[].revenueReclassnumber
schedule5.allocations[].salaryAllocationPercentScale: 0–100 percentage. e.g. 25 = 25% of total salaries.number
schedule5.allocations[].totalSalariesWagesnumber
schedule5.allocations[].unmodelledProvincialCreditsClaimedWhether the corporation claims a province-specific credit, rebate or additional tax for this jurisdiction that Filemark does not model. Filemark's per-jurisdiction figure is already net of every provincial credit it computes, so false means the canonical figure is the province's printed net-tax line and the face prints it. true means the printed line is not derivable here, so it stays blank and the schedule is held. null is unanswered and is held the same way — blank must never file as "none".boolean | null
schedule5.taxableIncomenumber
schedule5.tieOutPayrollobject
schedule5.tieOutRevenueobject
schedule5.totalAllocatednumber
schedule5.totalGrossRevenuenumber
schedule5.totalSalariesWagesnumber
schedule5.zeroFactorsWarningTrue when both salary and revenue totals are zero across all PEs — allocation formula cannot operateboolean
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.number | stringalways
Strict profile accepted values (19 of 51 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 schedule5
CellAccepted values
accounts[].accountCode0 to 20000 characters
accounts[].accountName0 to 20000 characters
accounts[].classification.incomeType0 to 20000 characters
accounts[].currentYearBalance-1000000000000000 to 1000000000000000
accounts[].id0 to 20000 characters
allocations[].albertaSmallBusinessFactorBasisone of "statute", "prescribed_form", null
allocations[].grossRevenue-1000000000000000 to 1000000000000000
allocations[].jurisdiction0 to 20000 characters
allocations[].revenueReclass-1000000000000000 to 1000000000000000
allocations[].totalSalariesWages-1000000000000000 to 1000000000000000
applicableRegulation0 to 20000 characters
assetDataexactly []pinned
daysInYear1 to 1000000000000000
dispositionsexactly []pinned
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
pyUCCPoolsexactly []pinned
schedule5.allocations[].jurisdictionone of "NL", "XO", "PE", "NS", "NO", "NB", "QC", "ON", "MB", "SK", "AB", "BC", "YT", "NT", "NU", "Outside Canada"
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (123)

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

Output cells for schedule5
CellTypes
allocations[].allocatedTaxableIncomenumber
allocations[].grossRevenueinteger
allocations[].hasPermanentEstablishmentboolean
allocations[].jurisdictionstring
allocations[].revenueAllocationPercentnumber
allocations[].revenueReclassinteger
allocations[].salaryAllocationPercentnumber
allocations[].totalSalariesWagesinteger
allocations[].allocationFactornumber
form.line_100_regulationstring
form.part1Table[].allocatednumber
form.part1Table[].peboolean
form.part1Table[].revenuenumber
form.part1Table[].revenueIncomeSharenumber
form.part1Table[].salariesnumber
form.part1Table[].salaryIncomeSharenumber
form.part2.line_209array | boolean | null | number | object | string
form.part2.line_214array | boolean | null | number | object | string
form.part2.line_224array | boolean | null | number | object | string
form.part2.line_229array | boolean | null | number | object | string
form.part2.line_234array | boolean | null | number | object | string
form.part2.line_239array | boolean | null | number | object | string
form.part2.line_244array | boolean | null | number | object | string
form.part2.line_249array | boolean | null | number | object | string
form.part2.line_254array | boolean | null | number | object | string
form.part2.line_255array | boolean | null | number | object | string
form.part2.line_264array | boolean | null | number | object | string
form.part2.line_290array | boolean | null | number | object | string
form.part2.ontario.amount5DMissingLines[]string
form.part2.ontario.amount5EBlockedReasonarray | boolean | null | number | object | string
form.part2.ontario.amount_5Cnull | number
form.part2.ontario.amount_5Darray | boolean | null | number | object | string
form.part2.ontario.amount_5Earray | boolean | null | number | object | string
form.part2.ontario.line_278array | boolean | null | number | object | string
form.part2.ontario.line_406array | boolean | null | number | object | string
form.part2.ontario.line_408array | boolean | null | number | object | string
form.part2.ontario.line_410array | boolean | null | number | object | string
form.part2.ontario.line_415array | boolean | null | number | object | string
form.part2.ontario.line_418array | boolean | null | number | object | string
form.part2.ontario.line_270null | number
form.part2.ontario.line_402null | number
form.part2.ontario.line_281array | boolean | null | number | object | string
form.part2.ontario.line_421array | boolean | null | number | object | string
form.part2.ontario.line_474array | boolean | null | number | object | string
form.part2.ontario.line_476array | boolean | null | number | object | string
form.part2.provenance.ontario.line_270.provisionalboolean
form.part2.provenance.ontario.line_270.reasonstring
form.part2.provenance.ontario.line_270.sourcestring
form.part2.provenance.ontario.line_402.provisionalboolean
form.part2.provenance.ontario.line_402.reasonstring
form.part2.provenance.ontario.line_402.sourcestring
form.part2.statusstring
form.part2.warnings[].codestring
form.part2.warnings[].messagestring
form.part2.warnings[].severitystring
form.part2.netTaxCompleteness.BC.answerarray | boolean | null | number | object | string
form.part2.netTaxCompleteness.BC.linestring
form.part2.netTaxCompleteness.BC.publishedboolean
form.part2.netTaxCompleteness.ON.answerarray | boolean | null | number | object | string
form.part2.netTaxCompleteness.ON.linestring
form.part2.netTaxCompleteness.ON.publishedboolean
form.part2.saskatchewan.line_626array | boolean | null | number | object | string
form.part2.schedule5FilingRequiredboolean
form.part2.yukon.line_677array | boolean | null | number | object | string
form.part2.divergenceReasonstring
form.part2.line_222array | boolean | null | number | object | string
form.part2.line_518array | boolean | null | number | object | string
form.part2.ftc_by_lineobject
form.part2.provincial_tax_by_jurisdictionobject
form.part2.total_provincial_taxnumber
form.part2.unwiredReasonstring
formRevisionstring
industryRegulationstring
provisionalboolean
readyboolean
residency.allocationBasenumber
residency.basisstring
residency.isResidentOfCanadaarray | boolean | null | number | object | string
residency.line360TaxableIncomenumber
residency.reg413Appliedboolean
taxableIncomenumber
tieOutPayroll.allocTotalnumber
tieOutPayroll.differencenumber
tieOutPayroll.tbTotalnumber
tieOutPayrollnull
tieOutRevenue.allocTotalnumber
tieOutRevenue.differencenumber
tieOutRevenue.tbTotalnumber
tieOutRevenuenull
totalAllocatednumber
totalGrossRevenuenumber
totalSalariesWagesnumber
warnings[].codestring
warnings[].messagestring
warnings[].severitystring
taxableIncomeEarnedInAllProvincesnumber
reg402_6_7_audit.reg_402_6_appliedboolean
reg402_6_7_audit.reg_402_6_proportionarray | boolean | null | number | object | string
reg402_6_7_audit.reg_402_6_revenue_includedarray | boolean | null | number | object | string
reg402_6_7_audit.reg_402_6_salaries_includedarray | boolean | null | number | object | string
reg402_6_7_audit.reg_402_7_appliedboolean
reg402_6_7_audit.reg_402_7_deemed_salaryarray | boolean | null | number | object | string
reg402_4_1_audit.appliedboolean
reg402_4_1_audit.conditionAForeignMerchandiseSalearray | boolean | null | number | object | string
reg402_4_1_audit.conditionBMatchingForeignPermanentEstablishmentarray | boolean | null | number | object | string
reg402_4_1_audit.conditionCUntaxedBecauseOfForeignLawOrTreatyarray | boolean | null | number | object | string
reg402_4_1_audit.foreignPeSalariesDeemedNilarray | boolean | null | number | object | string
reg402_4_1_audit.qualifyingForeignSaleRevenuearray | boolean | null | number | object | string
reg402_4_1_audit.statusstring
reg402_4_1_audit.throwbackRevenueByJurisdictionobject
reg402_4_1_audit.triggeredboolean
unmodelledProvincialCreditsByJurisdiction.BCarray | boolean | null | number | object | string
unmodelledProvincialCreditsByJurisdiction.ONarray | boolean | null | number | object | string
provincialTax.BCnumber
provincialTax.ONnumber
totalProvincialTaxnumber
reg402_1_audit.appliedboolean
reg402_1_audit.centralPaymasterArrangementboolean
reg402_1_audit.deemedSalaryarray | boolean | null | number | object | string
reg402_1_audit.netSalaryAdjustmentarray | boolean | null | number | object | string
reg402_1_audit.netSalaryAdjustmentByJurisdictionobject
reg402_1_audit.operandsSuppliedboolean
reg402_1_audit.salaryDeductionarray | boolean | null | number | object | string
Filemark | schedule5 cells