schedule13
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2011 and later
- Strict profile
- s13_exact_single_request_target_value_v1
- Payload schema version
- 0.6.0
- Dependencies (run automatically)
- reserve_continuity, schedule24
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": [
"schedule13"
],
"inputs": {
"taxYear": 2025,
"schedule13": {
"part1CapitalGainsReserves": [],
"part2DoubtfulDebts": {
"openingBalance": 5000,
"amalgamationTransfer": 0,
"closingBalance": 5500
}
}
}
}Input cells (71)
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 |
|---|---|---|
| schedule13.line008TotalOpeningPart 1 box 008, the total of the opening column across the capital gains reserve rows. The engine computes it from the rows, so send it only to reconcile an imported figure; a difference over one dollar is reported as an error. | null | number | string | |
| schedule13.line010TotalClosingPart 1 box 010, the total of the closing column across the capital gains reserve rows, which the form footer routes to Schedule 6 line 885. | null | number | string | |
| schedule13.part1CapitalGainsReservesPart 1 capital gains reserves (per-row). Empty array is valid for a corp with no capital-gains-reserve continuity. | array | |
| schedule13.part1CapitalGainsReserves[].amalgamationTransferBox 003 — Transfer on an amalgamation (ITA s.87(2)(g)/(m)) or the wind-up of a subsidiary (s.88(1)(e.1)). Normally null/zero unless the corp had a successor event in the tax year. | null | number | |
| schedule13.part1CapitalGainsReserves[].closingBalanceBox 004 — Balance at the end of the year. The fresh CY-end reserve the practitioner claims; tied to S6 per-disposition reserve calc. | null | number | |
| schedule13.part1CapitalGainsReserves[].descriptionBox 001 — Description of property. Required when the row has any non-zero amount in boxes 002/003/004. | null | string | |
| schedule13.part1CapitalGainsReserves[].dispositionDate | null | string | |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserveITA 40(1.1) to (1.4) — "Yes" when the disposition is one for which s.40(1)(a)(iii) is read with "1/10" and "9": to the taxpayer's child of family farm/fishing property or a QSBC share (1.1), a qualifying intergenerational transfer under s.84.1(2.31)/(2.32) (1.2), a qualifying business transfer to an employee ownership trust (1.3), or a qualifying cooperative conversion (1.4). Read through norm_yes_no; blank is UNANSWERED and blocks, never an implicit "No". | null | string | |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserveEligibilityConfirmed | null | string | |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserveProvision | null | string | |
| schedule13.part1CapitalGainsReserves[].isActiveAssetNon-printed s.125(7) character of the property whose gain carries the reserve. Blank is unanswered and blocks a non-zero reserve swing. | null | string | |
| schedule13.part1CapitalGainsReserves[].isForeignSourceNon-printed s.129(4) source character of that same property. | null | string | |
| schedule13.part1CapitalGainsReserves[].openingBalanceBox 002 — Balance at the beginning of the year. Must equal the prior-year closing balance per the continuity-of-reserves semantics; the carryforward function auto-rolls PY closing → CY opening. | null | number | |
| schedule13.part1CapitalGainsReserves[].originalGainStatutory gain base for clauses (C)/(D): ordinarily the ITA 40(1)(a)(i) gain. On an inherited box-003 reserve, ITA 87(2)(m)(ii) instead deems the predecessor's claimed reserve to be that amount. | null | number | |
| schedule13.part1CapitalGainsReserves[].precedingTaxationYearsEndingAfterDispositionOPTIONAL override for N itself — "the number of preceding taxation years of the taxpayer ending after the disposition of the property". Normally derived as (filing year − yearOfDisposition), which is exact while the corporation's taxation years map one-to-one onto year labels. A short year (or two year-ends in one calendar year) makes the derived count too low and the cap too generous, so the practitioner may state the statutory count and it governs. Exception: a proven predecessor reserve in box 003 uses N = 1 under ITA 87(2)(m)(i) (also applied to a qualifying wind-up by 88(1)(e.2)); a… | null | number | |
| schedule13.part1CapitalGainsReserves[].proceedsNotDueAfterYearEndITA 40(1)(a)(iii)(C) — "such of the proceeds of disposition of the property that are payable to the taxpayer after the end of the year". Measured at EACH year end, so it is re-answered every year and the carryforward resets it. | null | number | |
| schedule13.part1CapitalGainsReserves[].proceedsOfDispositionITA 40(1)(a)(iii)(C) — the property's TOTAL proceeds of disposition, the denominator of the clause (C) portion. Fixed at the sale. | null | number | |
| schedule13.part1CapitalGainsReserves[].purchaserControlRelationshipITA 40(2)(a)(ii) — the purchaser is a corporation that, immediately after the sale, (A) was controlled by the taxpayer, (B) was controlled by the person or group controlling the taxpayer, or (C) controlled the taxpayer. Fixed at the sale; carried forward. | null | string | |
| schedule13.part1CapitalGainsReserves[].purchaserMajorityInterestPartnershipITA 40(2)(a)(iii) — the purchaser is a partnership in which the taxpayer was, immediately after the sale, a majority-interest partner. Fixed at the sale; carried forward. | null | string | |
| schedule13.part1CapitalGainsReserves[].taxpayerNonResidentITA 40(2)(a)(i) — the taxpayer, at the end of the year or at any time in the immediately following year, was not resident in Canada. | null | string | |
| schedule13.part1CapitalGainsReserves[].taxpayerTaxExemptITA 40(2)(a)(i) — ... or was exempt from tax under any provision of this Part. | null | string | |
| schedule13.part1CapitalGainsReserves[].yearOfDispositionITA 40(1)(a)(iii)(D) — the taxation year in which the property was disposed of, as the same integer year label the engine files under. N (the preceding taxation years ending after the disposition) is derived from it; nil in the year of disposition. | null | number | |
| schedule13.part2DoubtfulDebtsBox 110/115/120 — Reserve for doubtful debts (ITA s.20(1)(l)). | object | |
| schedule13.part2DoubtfulDebts.amalgamationTransfer | null | number | strict |
| schedule13.part2DoubtfulDebts.closingBalance | null | number | strict |
| schedule13.part2DoubtfulDebts.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2DoubtfulDebts.isForeignSource | boolean | null | |
| schedule13.part2DoubtfulDebts.openingBalance | null | number | string | strict |
| schedule13.part2DoubtfulDebts.statutoryBasis | null | string | |
| schedule13.part2DoubtfulDebts.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| schedule13.part2OtherTaxReservesBox 230/235/240 — Other tax reserves (T4012 catch-all: s.20(1)(o) special shipping surveys, s.20(1)(oo)/(pp) salary-deferral amounts, s.32(1) unearned non-life-insurance commissions, etc.). | object | |
| schedule13.part2OtherTaxReserves.amalgamationTransfer | null | number | |
| schedule13.part2OtherTaxReserves.closingBalance | null | number | |
| schedule13.part2OtherTaxReserves.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2OtherTaxReserves.isForeignSource | boolean | null | |
| schedule13.part2OtherTaxReserves.openingBalance | null | number | |
| schedule13.part2OtherTaxReserves.statutoryBasis | null | string | |
| schedule13.part2OtherTaxReserves.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| schedule13.part2PrepaidRentBox 150/155/160 — Reserve for prepaid rent (ITA s.20(1)(m)(iii) applied to amounts forced-included under s.12(1)(a) for advance rent or other use-of-property payments). | object | |
| schedule13.part2PrepaidRent.amalgamationTransfer | null | number | |
| schedule13.part2PrepaidRent.closingBalance | null | number | |
| schedule13.part2PrepaidRent.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2PrepaidRent.isForeignSource | boolean | null | |
| schedule13.part2PrepaidRent.openingBalance | null | number | |
| schedule13.part2PrepaidRent.statutoryBasis | null | string | |
| schedule13.part2PrepaidRent.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| schedule13.part2ReturnableContainersBox 190/195/200 — Reserve for returnable containers (ITA s.20(1)(m)(iv) for non-bottle deposits; bottle deposits fall outside (m)(iv) by statutory carve-out and are reported under s.20(1)(m.2) per CRA administrative practice). | object | |
| schedule13.part2ReturnableContainers.amalgamationTransfer | null | number | |
| schedule13.part2ReturnableContainers.closingBalance | null | number | |
| schedule13.part2ReturnableContainers.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2ReturnableContainers.isForeignSource | boolean | null | |
| schedule13.part2ReturnableContainers.openingBalance | null | number | |
| schedule13.part2ReturnableContainers.statutoryBasis | null | string | |
| schedule13.part2ReturnableContainers.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| schedule13.part2UndeliveredGoodsAndServicesBox 130/135/140 — Reserve for undelivered goods and services not rendered (ITA s.20(1)(m)). | object | |
| schedule13.part2UndeliveredGoodsAndServices.amalgamationTransfer | null | number | |
| schedule13.part2UndeliveredGoodsAndServices.closingBalance | null | number | |
| schedule13.part2UndeliveredGoodsAndServices.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2UndeliveredGoodsAndServices.isForeignSource | boolean | null | |
| schedule13.part2UndeliveredGoodsAndServices.openingBalance | null | number | |
| schedule13.part2UndeliveredGoodsAndServices.statutoryBasis | null | string | |
| schedule13.part2UndeliveredGoodsAndServices.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| schedule13.part2UnpaidAmountsBox 210/215/220 — Reserve for unpaid amounts (ITA s.20(1)(n) instalment-sale reserve; NOT the s.78 unpaid-expense add-back). | object | |
| schedule13.part2UnpaidAmounts.amalgamationTransfer | null | number | |
| schedule13.part2UnpaidAmounts.closingBalance | null | number | |
| schedule13.part2UnpaidAmounts.isActiveAssetITA 40(2)(a) / s.125(5.1) character declarations on the reserve swing — tri-state; a row persisted before these existed normalizes to null (unanswered), never "No" (TXE-727 family). | boolean | null | |
| schedule13.part2UnpaidAmounts.isForeignSource | boolean | null | |
| schedule13.part2UnpaidAmounts.openingBalance | null | number | |
| schedule13.part2UnpaidAmounts.statutoryBasis | null | string | |
| schedule13.part2UnpaidAmounts.statutoryProvisionNon-printed support for a manually entered reserve. The catchall row cannot be linked to a generic workpaper because its statutory tests vary by provision; absent values remain unanswered and block a non-zero row. | null | string | |
| 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 (23 of 71 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 |
|---|---|
| schedule13.part1CapitalGainsReserves[].amalgamationTransfer | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].closingBalance | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].description | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].dispositionDate | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserve | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserveEligibilityConfirmed | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].extendedTenYearReserveProvision | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].isActiveAsset | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].isForeignSource | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].openingBalance | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].originalGain | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].precedingTaxationYearsEndingAfterDisposition | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].proceedsNotDueAfterYearEnd | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].proceedsOfDisposition | -1000000000000000 to 1000000000000000 |
| schedule13.part1CapitalGainsReserves[].purchaserControlRelationship | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].purchaserMajorityInterestPartnership | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].taxpayerNonResident | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].taxpayerTaxExempt | 0 to 20000 characters |
| schedule13.part1CapitalGainsReserves[].yearOfDisposition | -1000000000000000 to 1000000000000000 |
| schedule13.part2DoubtfulDebts.amalgamationTransfer | -1000000000000000 to 1000000000000000 |
| schedule13.part2DoubtfulDebts.closingBalance | -1000000000000000 to 1000000000000000 |
| schedule13.part2DoubtfulDebts.openingBalance | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (106)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| fired_gates | object |
| form.cell_110 | number |
| form.cell_115 | number |
| form.cell_120 | number |
| form.cell_130 | number |
| form.cell_135 | number |
| form.cell_140 | number |
| form.cell_150 | number |
| form.cell_155 | number |
| form.cell_160 | number |
| form.cell_190 | number |
| form.cell_195 | number |
| form.cell_200 | number |
| form.cell_210 | number |
| form.cell_215 | number |
| form.cell_220 | number |
| form.cell_230 | number |
| form.cell_235 | number |
| form.cell_240 | number |
| form.form_warnings | array |
| form.line_008 | number |
| form.line_009 | number |
| form.line_010 | number |
| form.line_270 | number |
| form.line_275 | number |
| form.line_280 | number |
| form.part1OverflowRows | array |
| form.part1PrintedRowCapacity | integer |
| form.part1RowCount | integer |
| form.part1Table | array |
| line_880_posting | string |
| line_885_posting | string |
| part_1.line_008_total_opening | string |
| part_1.line_009_total_amalgamation_transfer | string |
| part_1.line_010_total_closing | string |
| part_1.per_row_reserve_cap_proven | boolean |
| part_1.rows | array |
| part_2.doubtful_debts.amalgamationTransfer | null | string |
| part_2.doubtful_debts.closingBalance | null | string |
| part_2.doubtful_debts.openingBalance | null | string |
| part_2.doubtful_debts.statutoryBasis | array | boolean | null | number | object | string |
| part_2.doubtful_debts.statutoryProvision | array | boolean | null | number | object | string |
| part_2.line_270_total_opening | string |
| part_2.line_275_total_amalgamation_transfer | string |
| part_2.line_280_total_closing | string |
| part_2.other_tax_reserves.amalgamationTransfer | array | boolean | null | number | object | string |
| part_2.other_tax_reserves.closingBalance | array | boolean | null | number | object | string |
| part_2.other_tax_reserves.openingBalance | array | boolean | null | number | object | string |
| part_2.other_tax_reserves.statutoryBasis | array | boolean | null | number | object | string |
| part_2.other_tax_reserves.statutoryProvision | array | boolean | null | number | object | string |
| part_2.prepaid_rent.amalgamationTransfer | array | boolean | null | number | object | string |
| part_2.prepaid_rent.closingBalance | array | boolean | null | number | object | string |
| part_2.prepaid_rent.openingBalance | array | boolean | null | number | object | string |
| part_2.prepaid_rent.statutoryBasis | array | boolean | null | number | object | string |
| part_2.prepaid_rent.statutoryProvision | array | boolean | null | number | object | string |
| part_2.reserve_continuity | object |
| part_2.reserves[].amalgamationTransfer | null | string |
| part_2.reserves[].closingBalance | null | string |
| part_2.reserves[].openingBalance | null | string |
| part_2.reserves[].reserveType | string |
| part_2.returnable_containers.amalgamationTransfer | array | boolean | null | number | object | string |
| part_2.returnable_containers.closingBalance | array | boolean | null | number | object | string |
| part_2.returnable_containers.openingBalance | array | boolean | null | number | object | string |
| part_2.returnable_containers.statutoryBasis | array | boolean | null | number | object | string |
| part_2.returnable_containers.statutoryProvision | array | boolean | null | number | object | string |
| part_2.undelivered_goods_and_services.amalgamationTransfer | array | boolean | null | number | object | string |
| part_2.undelivered_goods_and_services.closingBalance | array | boolean | null | number | object | string |
| part_2.undelivered_goods_and_services.openingBalance | array | boolean | null | number | object | string |
| part_2.undelivered_goods_and_services.statutoryBasis | array | boolean | null | number | object | string |
| part_2.undelivered_goods_and_services.statutoryProvision | array | boolean | null | number | object | string |
| part_2.unpaid_amounts.amalgamationTransfer | array | boolean | null | number | object | string |
| part_2.unpaid_amounts.closingBalance | array | boolean | null | number | object | string |
| part_2.unpaid_amounts.openingBalance | array | boolean | null | number | object | string |
| part_2.unpaid_amounts.statutoryBasis | array | boolean | null | number | object | string |
| part_2.unpaid_amounts.statutoryProvision | array | boolean | null | number | object | string |
| provisional | boolean |
| ready | boolean |
| s1_line_125_feed | string |
| s1_line_413_feed | string |
| warnings[].box | string |
| warnings[].citation.applies_to_boxes[] | string |
| warnings[].citation.cra_text_verbatim | string |
| warnings[].citation.form_id | string |
| warnings[].citation.form_revision | string |
| warnings[].citation.gate_id | string |
| warnings[].citation.rule | string |
| warnings[].citation.source | string |
| warnings[].citation.source_url | string |
| warnings[].citation.verified_at | string |
| warnings[].gate_idIdentifier of the registered T4012 gate that raised the finding; travels with `citation`. | string |
| warnings[].message | string |
| warnings[].severityAlways an error: a divergent or unprovable opening blocks the return. | string |
| 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[].sources[] | string |
| warnings[].taxYearThe taxation year whose rate tables are unverified. | integer |
| warnings[].taxYears[] | integer |
| warnings[].actualThe opening amount this return states. | number |
| warnings[].citation.formThe pinned CRA form revision identifier. | string |
| warnings[].citation.referenceThe lines on that face the opening and closing balances are read from. | string |
| warnings[].expectedThe closing amount the authenticated prior filed return proves, or null when no filed projection exists to reconcile against. | null | number |
| warnings[].keyThe reconciled balance, named for a preparer. | string |
| warnings[].kindAlways the validation family. | string |
| warnings[].reasonWhat broke and what to do about it. | string |
| s1_written_off_20_1_p_feed | string |