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.
| Cell | Types | Required |
|---|---|---|
| accounts[].accountCode | string | strict |
| accounts[].accountName | string | strict |
| 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. | boolean | strict |
| accounts[].classification.incomeType | string | strict |
| 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. | boolean | strict |
| accounts[].currentYearBalance | integer | strict |
| accounts[].id | string | strict |
| allocations | array | |
| 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[].grossRevenue | integer | null | number | strict |
| 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 | null | strict |
| allocations[].jurisdiction | null | string | strict |
| allocations[].revenueReclass | integer | null | number | strict |
| allocations[].totalSalariesWages | integer | null | number | strict |
| applicableRegulationThe practitioner determination for Schedule 5 box 100. This exact profile is an ordinary corporation governed by Regulation 402. | string | strict |
| assetData | array | strict |
| 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. | integer | strict |
| dispositions | array | strict |
| 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 | string | strict |
| 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 | string | strict |
| 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. | boolean | strict |
| 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. | boolean | strict |
| partnershipOperationsFalse confirms that Regulation 402(6) does not add partnership revenue or salaries to this exact witness. | boolean | strict |
| pyUCCPools | array | strict |
| 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. | boolean | strict |
| schedule5.allocations | array | |
| schedule5.allocations[].allocatedTaxableIncome | number | |
| 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[].grossRevenue | number | |
| 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[].jurisdiction | string | |
| 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[].revenueReclass | number | |
| schedule5.allocations[].salaryAllocationPercentScale: 0–100 percentage. e.g. 25 = 25% of total salaries. | number | |
| schedule5.allocations[].totalSalariesWages | number | |
| 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.taxableIncome | number | |
| schedule5.tieOutPayroll | object | |
| schedule5.tieOutRevenue | object | |
| schedule5.totalAllocated | number | |
| schedule5.totalGrossRevenue | number | |
| schedule5.totalSalariesWages | number | |
| schedule5.zeroFactorsWarningTrue when both salary and revenue totals are zero across all PEs — allocation formula cannot operate | boolean | |
| 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 | string | always |
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.
| Cell | Accepted values |
|---|---|
| accounts[].accountCode | 0 to 20000 characters |
| accounts[].accountName | 0 to 20000 characters |
| accounts[].classification.incomeType | 0 to 20000 characters |
| accounts[].currentYearBalance | -1000000000000000 to 1000000000000000 |
| accounts[].id | 0 to 20000 characters |
| allocations[].albertaSmallBusinessFactorBasis | one of "statute", "prescribed_form", null |
| allocations[].grossRevenue | -1000000000000000 to 1000000000000000 |
| allocations[].jurisdiction | 0 to 20000 characters |
| allocations[].revenueReclass | -1000000000000000 to 1000000000000000 |
| allocations[].totalSalariesWages | -1000000000000000 to 1000000000000000 |
| applicableRegulation | 0 to 20000 characters |
| assetData | exactly []pinned |
| daysInYear | 1 to 1000000000000000 |
| dispositions | exactly []pinned |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| pyUCCPools | exactly []pinned |
| schedule5.allocations[].jurisdiction | one of "NL", "XO", "PE", "NS", "NO", "NB", "QC", "ON", "MB", "SK", "AB", "BC", "YT", "NT", "NU", "Outside Canada" |
| taxYear | matches ^\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.
| Cell | Types |
|---|---|
| allocations[].allocatedTaxableIncome | number |
| allocations[].grossRevenue | integer |
| allocations[].hasPermanentEstablishment | boolean |
| allocations[].jurisdiction | string |
| allocations[].revenueAllocationPercent | number |
| allocations[].revenueReclass | integer |
| allocations[].salaryAllocationPercent | number |
| allocations[].totalSalariesWages | integer |
| allocations[].allocationFactor | number |
| form.line_100_regulation | string |
| form.part1Table[].allocated | number |
| form.part1Table[].pe | boolean |
| form.part1Table[].revenue | number |
| form.part1Table[].revenueIncomeShare | number |
| form.part1Table[].salaries | number |
| form.part1Table[].salaryIncomeShare | number |
| form.part2.line_209 | array | boolean | null | number | object | string |
| form.part2.line_214 | array | boolean | null | number | object | string |
| form.part2.line_224 | array | boolean | null | number | object | string |
| form.part2.line_229 | array | boolean | null | number | object | string |
| form.part2.line_234 | array | boolean | null | number | object | string |
| form.part2.line_239 | array | boolean | null | number | object | string |
| form.part2.line_244 | array | boolean | null | number | object | string |
| form.part2.line_249 | array | boolean | null | number | object | string |
| form.part2.line_254 | array | boolean | null | number | object | string |
| form.part2.line_255 | array | boolean | null | number | object | string |
| form.part2.line_264 | array | boolean | null | number | object | string |
| form.part2.line_290 | array | boolean | null | number | object | string |
| form.part2.ontario.amount5DMissingLines[] | string |
| form.part2.ontario.amount5EBlockedReason | array | boolean | null | number | object | string |
| form.part2.ontario.amount_5C | null | number |
| form.part2.ontario.amount_5D | array | boolean | null | number | object | string |
| form.part2.ontario.amount_5E | array | boolean | null | number | object | string |
| form.part2.ontario.line_278 | array | boolean | null | number | object | string |
| form.part2.ontario.line_406 | array | boolean | null | number | object | string |
| form.part2.ontario.line_408 | array | boolean | null | number | object | string |
| form.part2.ontario.line_410 | array | boolean | null | number | object | string |
| form.part2.ontario.line_415 | array | boolean | null | number | object | string |
| form.part2.ontario.line_418 | array | boolean | null | number | object | string |
| form.part2.ontario.line_270 | null | number |
| form.part2.ontario.line_402 | null | number |
| form.part2.ontario.line_281 | array | boolean | null | number | object | string |
| form.part2.ontario.line_421 | array | boolean | null | number | object | string |
| form.part2.ontario.line_474 | array | boolean | null | number | object | string |
| form.part2.ontario.line_476 | array | boolean | null | number | object | string |
| form.part2.provenance.ontario.line_270.provisional | boolean |
| form.part2.provenance.ontario.line_270.reason | string |
| form.part2.provenance.ontario.line_270.source | string |
| form.part2.provenance.ontario.line_402.provisional | boolean |
| form.part2.provenance.ontario.line_402.reason | string |
| form.part2.provenance.ontario.line_402.source | string |
| form.part2.status | string |
| form.part2.warnings[].code | string |
| form.part2.warnings[].message | string |
| form.part2.warnings[].severity | string |
| form.part2.netTaxCompleteness.BC.answer | array | boolean | null | number | object | string |
| form.part2.netTaxCompleteness.BC.line | string |
| form.part2.netTaxCompleteness.BC.published | boolean |
| form.part2.netTaxCompleteness.ON.answer | array | boolean | null | number | object | string |
| form.part2.netTaxCompleteness.ON.line | string |
| form.part2.netTaxCompleteness.ON.published | boolean |
| form.part2.saskatchewan.line_626 | array | boolean | null | number | object | string |
| form.part2.schedule5FilingRequired | boolean |
| form.part2.yukon.line_677 | array | boolean | null | number | object | string |
| form.part2.divergenceReason | string |
| form.part2.line_222 | array | boolean | null | number | object | string |
| form.part2.line_518 | array | boolean | null | number | object | string |
| form.part2.ftc_by_line | object |
| form.part2.provincial_tax_by_jurisdiction | object |
| form.part2.total_provincial_tax | number |
| form.part2.unwiredReason | string |
| formRevision | string |
| industryRegulation | string |
| provisional | boolean |
| ready | boolean |
| residency.allocationBase | number |
| residency.basis | string |
| residency.isResidentOfCanada | array | boolean | null | number | object | string |
| residency.line360TaxableIncome | number |
| residency.reg413Applied | boolean |
| taxableIncome | number |
| tieOutPayroll.allocTotal | number |
| tieOutPayroll.difference | number |
| tieOutPayroll.tbTotal | number |
| tieOutPayroll | null |
| tieOutRevenue.allocTotal | number |
| tieOutRevenue.difference | number |
| tieOutRevenue.tbTotal | number |
| tieOutRevenue | null |
| totalAllocated | number |
| totalGrossRevenue | number |
| totalSalariesWages | number |
| warnings[].code | string |
| warnings[].message | string |
| warnings[].severity | string |
| taxableIncomeEarnedInAllProvinces | number |
| reg402_6_7_audit.reg_402_6_applied | boolean |
| reg402_6_7_audit.reg_402_6_proportion | array | boolean | null | number | object | string |
| reg402_6_7_audit.reg_402_6_revenue_included | array | boolean | null | number | object | string |
| reg402_6_7_audit.reg_402_6_salaries_included | array | boolean | null | number | object | string |
| reg402_6_7_audit.reg_402_7_applied | boolean |
| reg402_6_7_audit.reg_402_7_deemed_salary | array | boolean | null | number | object | string |
| reg402_4_1_audit.applied | boolean |
| reg402_4_1_audit.conditionAForeignMerchandiseSale | array | boolean | null | number | object | string |
| reg402_4_1_audit.conditionBMatchingForeignPermanentEstablishment | array | boolean | null | number | object | string |
| reg402_4_1_audit.conditionCUntaxedBecauseOfForeignLawOrTreaty | array | boolean | null | number | object | string |
| reg402_4_1_audit.foreignPeSalariesDeemedNil | array | boolean | null | number | object | string |
| reg402_4_1_audit.qualifyingForeignSaleRevenue | array | boolean | null | number | object | string |
| reg402_4_1_audit.status | string |
| reg402_4_1_audit.throwbackRevenueByJurisdiction | object |
| reg402_4_1_audit.triggered | boolean |
| unmodelledProvincialCreditsByJurisdiction.BC | array | boolean | null | number | object | string |
| unmodelledProvincialCreditsByJurisdiction.ON | array | boolean | null | number | object | string |
| provincialTax.BC | number |
| provincialTax.ON | number |
| totalProvincialTax | number |
| reg402_1_audit.applied | boolean |
| reg402_1_audit.centralPaymasterArrangement | boolean |
| reg402_1_audit.deemedSalary | array | boolean | null | number | object | string |
| reg402_1_audit.netSalaryAdjustment | array | boolean | null | number | object | string |
| reg402_1_audit.netSalaryAdjustmentByJurisdiction | object |
| reg402_1_audit.operandsSupplied | boolean |
| reg402_1_audit.salaryDeduction | array | boolean | null | number | object | string |