schedule3
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2019 and later
- Strict profile
- s3_2025_single_capital_dividend_paid_target_value_v1
- Payload schema version
- 0.7.0
- Dependencies (run automatically)
- foreign_affiliate_analysis, part_iv_overlap, schedule25, schedule43
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": [
"schedule3"
],
"inputs": {
"taxYear": 2025,
"workpapers": [
{
"id": "wp-dividends-target",
"templateId": "dividends",
"linkedAccountIds": [],
"adjustmentStatus": "ok",
"customName": "Cedar Ridge 2025 capital dividend",
"rows": [
{
"payerName": "Cedar Ridge Manufacturing Inc.",
"amountCY": 80000,
"isConnected": "no",
"dividendType": "Capital Dividend",
"direction": "paid",
"dividendSource": "canadian_taxable",
"denial112": false,
"foreignCurrency": "CAD"
}
],
"sectionRows": {},
"assumption": "Caller-supplied facts only; no CDA balance, election, recipient/share, payment, or filing verification"
}
]
}
}Input cells (102)
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 |
|---|---|---|
| schedule3.dividendsPaid | array | |
| schedule3.dividendsPaid[].businessNumber | string | |
| schedule3.dividendsPaid[].connectedCorpBN | null | string | |
| schedule3.dividendsPaid[].connectedPayerDividendRefund | number | |
| schedule3.dividendsPaid[].connectedPayerTotalEligibleDividends | number | |
| schedule3.dividendsPaid[].connectedPayerTotalTaxableDividends | number | |
| schedule3.dividendsPaid[].denial112 | boolean | |
| schedule3.dividendsPaid[].denial112Reason | null | string | |
| schedule3.dividendsPaid[].direction | string | |
| schedule3.dividendsPaid[].dividendSource | string | |
| schedule3.dividendsPaid[].eligibleDividendsInF | number | |
| schedule3.dividendsPaid[].isCapitalDividends.83(2) capital dividend — non-taxable: form column E (received) / Part 4 line 510 (paid); no s.112 deduction, no Part IV. | boolean | |
| schedule3.dividendsPaid[].isConnected | boolean | string | |
| schedule3.dividendsPaid[].nonTaxableDividendsS83 | number | |
| schedule3.dividendsPaid[].payerName | string | |
| schedule3.dividendsPaid[].payerYearEndPayer's (received) / recipient's (paid) tax year-end — form columns D (line 220) / P (line 420). Optional workpaper column. | null | string | |
| schedule3.dividendsPaid[].rowIndex | number | |
| schedule3.dividendsPaid[].s113ParagraphForeign-affiliate rows: which s.113 paragraph the deduction claims. "surplus" (113(1)(a)/(a.1)/(b)/(d)/113(2) — column G, in the s.186(3) Part IV base), "113_1_c" (column F, no Part IV), or the fail-closed "legacy_ambiguous" sentinel for the retired contradictory UI label. | string | |
| schedule3.dividendsPaid[].source | string | |
| schedule3.dividendsPaid[].taxableDividendsDeductibleLegacy misnomer — the ROW'S DIVIDEND AMOUNT (display + classification input), not the deductible subset. The engine's classification decides which form column / total it lands in. | number | |
| schedule3.dividendsPaid[].workpaperIdWrite-back address — the engine's received/paid lists are FILTERED views of the workpaper rows, so UI edits target (workpaperId, rowIndex) in the ORIGINAL workpaper, never the display-list index. Optional because paid rows projected from the dividends-declared workpaper carry no address; only addressed rows accept UI edits. | string | |
| schedule3.dividendsReceived | array | |
| schedule3.dividendsReceived[].businessNumber | string | |
| schedule3.dividendsReceived[].connectedCorpBN | null | string | |
| schedule3.dividendsReceived[].connectedPayerDividendRefund | number | |
| schedule3.dividendsReceived[].connectedPayerTotalEligibleDividends | number | |
| schedule3.dividendsReceived[].connectedPayerTotalTaxableDividends | number | |
| schedule3.dividendsReceived[].denial112 | boolean | |
| schedule3.dividendsReceived[].denial112Reason | null | string | |
| schedule3.dividendsReceived[].direction | string | |
| schedule3.dividendsReceived[].dividendSource | string | |
| schedule3.dividendsReceived[].eligibleDividendsInF | number | |
| schedule3.dividendsReceived[].isCapitalDividends.83(2) capital dividend — non-taxable: form column E (received) / Part 4 line 510 (paid); no s.112 deduction, no Part IV. | boolean | |
| schedule3.dividendsReceived[].isConnected | boolean | string | |
| schedule3.dividendsReceived[].nonTaxableDividendsS83 | number | |
| schedule3.dividendsReceived[].payerName | string | |
| schedule3.dividendsReceived[].payerYearEndPayer's (received) / recipient's (paid) tax year-end — form columns D (line 220) / P (line 420). Optional workpaper column. | null | string | |
| schedule3.dividendsReceived[].rowIndex | number | |
| schedule3.dividendsReceived[].s113ParagraphForeign-affiliate rows: which s.113 paragraph the deduction claims. "surplus" (113(1)(a)/(a.1)/(b)/(d)/113(2) — column G, in the s.186(3) Part IV base), "113_1_c" (column F, no Part IV), or the fail-closed "legacy_ambiguous" sentinel for the retired contradictory UI label. | string | |
| schedule3.dividendsReceived[].source | string | |
| schedule3.dividendsReceived[].taxableDividendsDeductibleLegacy misnomer — the ROW'S DIVIDEND AMOUNT (display + classification input), not the deductible subset. The engine's classification decides which form column / total it lands in. | number | |
| schedule3.dividendsReceived[].workpaperIdWrite-back address — the engine's received/paid lists are FILTERED views of the workpaper rows, so UI edits target (workpaperId, rowIndex) in the ORIGINAL workpaper, never the display-list index. Optional because paid rows projected from the dividends-declared workpaper carry no address; only addressed rows accept UI edits. | string | |
| schedule3.formTrue Form View projection — every printed T2 SCH 3 box, always present. | object | |
| schedule3.form.formWarningsTie-out mismatches (defensive — impossible by construction today) and grid-overflow notices (Part 1 holds 5 printed rows, Part 3 holds 7; bound totals always include every row). The form view renders these — nothing is silently truncated. | array | |
| schedule3.form.part1Table | array | |
| schedule3.form.part1Table[].connectedCode | string | |
| schedule3.form.part1Table[].deductible235 | number | |
| schedule3.form.part1Table[].deductible240 | number | |
| schedule3.form.part1Table[].eligible242 | number | |
| schedule3.form.part1Table[].nonTaxableS83 | number | |
| schedule3.form.part1Table[].partIV275 | number | |
| schedule3.form.part1Table[].partIVConnected280 | number | |
| schedule3.form.part1Table[].partIVEligible265 | number | |
| schedule3.form.part1Table[].payerBn | string | |
| schedule3.form.part1Table[].payerName | string | |
| schedule3.form.part1Table[].payerRefund260 | number | |
| schedule3.form.part1Table[].payerTotalTaxable250I / 250 — ITA 186(1)(b)(ii)'s taxable-dividends-paid-while-private-or- subject denominator. Deliberately narrower than the PDF /TU caption's unqualified payer-year total when the payer changed status mid-year. | number | |
| schedule3.form.part1Table[].payerYearEnd | string | |
| schedule3.form.part3Table | array | |
| schedule3.form.part3Table[].eligible440 | number | |
| schedule3.form.part3Table[].recipientBn | string | |
| schedule3.form.part3Table[].recipientName | string | |
| schedule3.form.part3Table[].recipientYearEnd | string | |
| schedule3.form.part3Table[].taxable430 | number | |
| schedule3.grossPartIVTaxBeforeSchedule43ReductionGross s.186 Part IV tax before the Schedule 43 Part IV.1 overlap reduction. | number | |
| schedule3.missing_required | array | |
| schedule3.partIVTaxConnected | number | |
| schedule3.partIVTaxNonConnected | number | |
| schedule3.provisional | boolean | |
| schedule3.section137_5_2DeductionReductionPayer-credit-union amount removed from the otherwise available s.112 deduction by ITA 137(5.2)(a). | number | |
| schedule3.section137_5_2IncomeInclusionElected paragraph 137(5.1)(b)/(c) amounts included in income under paragraph 137(5.2)(b), consumed by Schedule 1 other additions. | number | |
| schedule3.totalCapitalDividendsPaid | number | |
| schedule3.totalColumnF235Printed column totals: amount 1A = column F (s.113(1)(c) only) and amount 1B = column G (s.112 + the s.113 surplus paragraphs — the s.186(3) assessable base). | number | |
| schedule3.totalColumnG240 | number | |
| schedule3.totalEligibleDividends | number | |
| schedule3.totalEligibleDividendsPaid | number | |
| schedule3.totalNonConnectedDividendsLegacy diagnostic — non-connected DEDUCTIBLE portion. NOT the AII feed. Kept for backward compat with older binder/UI consumers. | number | |
| schedule3.totalNonDeductiblePortfolioForeign portfolio + s.112(2.x) denied dividends + the payer-credit-union s.137(5.2)(a) deduction reduction. Flows into Schedule 7 line 4b as the AII feed per s.129(4). | number | |
| schedule3.totalNonTaxableS83Receiveds.83(2) capital dividends received — form column E total → S1 line 402. | number | |
| schedule3.totalPartIVTaxFinal Schedule 3 line 360 after the Schedule 43 reduction; feeds T2 line 712. | number | |
| schedule3.totalS112Deductions.112(1) deductible component (Canadian taxable, no denial). | number | |
| schedule3.totalS113Deductions.113 deductible component (foreign affiliate). | number | |
| schedule3.totalTaxableDividendsDeductibles.112(1) + s.113 combined deduction → T2 jacket line 320 (Division C). | number | |
| schedule3.totalTaxableDividendsPaid | number | |
| schedule3.totalTaxableDividendsPaidForRefundPaid-side form totals (lines 460 / 465 / 510). totalTaxableDividendsPaid is the S55 auto-fill alias for taxable-dividend line 460; coverage-gated Part 4 lines 520-540 do not change that taxable total. | number | |
| 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 |
| workpapers[].adjustmentAmount | null | number | string | |
| workpapers[].adjustmentStatus | string | strict |
| workpapers[].assumption | string | strict |
| workpapers[].customName | string | strict |
| workpapers[].id | string | strict |
| workpapers[].linkedAccountIds[] | boolean | null | number | string | strict |
| workpapers[].rows[].amountCY | integer | strict |
| workpapers[].rows[].denial112Whether the ITA s.112 deduction was denied for this dividend; s.187.2 tax reaches the dividend only to the extent it was deductible, so a blank cannot be read as no. | boolean | strict |
| workpapers[].rows[].direction | string | strict |
| workpapers[].rows[].dividendSource | string | strict |
| workpapers[].rows[].dividendType | string | strict |
| workpapers[].rows[].foreignCurrencyCurrency unit of the paid dividend amount. CAD proves this exact witness is already stated in the taxation year reporting currency under ITA 261(2)(a). | string | strict |
| workpapers[].rows[].isConnected | string | strict |
| workpapers[].rows[].payerName | string | strict |
| workpapers[].sectionRows | object | strict |
| workpapers[].templateId | string | strict |
Strict profile accepted values (28 of 102 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 |
|---|---|
| schedule3.dividendsPaid[].denial112Reason | one of "term_preferred_share", "guaranteed_share", "dividend_rental", "other_112_2_x" |
| schedule3.dividendsPaid[].direction | one of "received", "paid" |
| schedule3.dividendsPaid[].dividendSource | one of "canadian_taxable", "foreign_affiliate", "foreign_portfolio" |
| schedule3.dividendsPaid[].isConnected | one of "needs_confirmation" |
| schedule3.dividendsPaid[].s113Paragraph | one of "surplus", "113_1_c", "legacy_ambiguous" |
| schedule3.dividendsPaid[].source | one of "workpaper", "manual", "scraped" |
| schedule3.dividendsReceived[].denial112Reason | one of "term_preferred_share", "guaranteed_share", "dividend_rental", "other_112_2_x" |
| schedule3.dividendsReceived[].direction | one of "received", "paid" |
| schedule3.dividendsReceived[].dividendSource | one of "canadian_taxable", "foreign_affiliate", "foreign_portfolio" |
| schedule3.dividendsReceived[].isConnected | one of "needs_confirmation" |
| schedule3.dividendsReceived[].s113Paragraph | one of "surplus", "113_1_c", "legacy_ambiguous" |
| schedule3.dividendsReceived[].source | one of "workpaper", "manual", "scraped" |
| schedule3.form.part1Table[].connectedCode | one of "", "1" |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
| workpapers[].adjustmentAmount | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| workpapers[].adjustmentStatus | 0 to 20000 characters |
| workpapers[].assumption | 0 to 20000 characters |
| workpapers[].customName | 0 to 20000 characters |
| workpapers[].id | 0 to 20000 characters |
| workpapers[].linkedAccountIds[] | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| workpapers[].rows[].amountCY | -1000000000000000 to 1000000000000000 |
| workpapers[].rows[].direction | 0 to 20000 characters |
| workpapers[].rows[].dividendSource | 0 to 20000 characters |
| workpapers[].rows[].dividendType | 0 to 20000 characters |
| workpapers[].rows[].foreignCurrency | 0 to 20000 characters |
| workpapers[].rows[].isConnected | 0 to 20000 characters |
| workpapers[].rows[].payerName | 0 to 20000 characters |
| workpapers[].templateId | 0 to 20000 characters |
Output cells (159)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| coverageReview.part4ExclusionConclusion | array | boolean | null | number | object | string |
| coverageReview.partIVLossClaimConclusion | array | boolean | null | number | object | string |
| coverageReview.requirements.part4ExclusionReview | boolean |
| coverageReview.requirements.partIVLossClaimReview | boolean |
| coverageReview.reviewed | boolean |
| coverageReview.schemaVersion | integer |
| coverageReview.status | string |
| dividendsPaid[].businessNumber | string |
| dividendsPaid[].connectedCorpBN | array | boolean | null | number | object | string |
| dividendsPaid[].connectedPayerDividendRefund | number |
| dividendsPaid[].connectedPayerTotalEligibleDividends | number |
| dividendsPaid[].connectedPayerTotalTaxableDividends | number |
| dividendsPaid[].denial112 | boolean |
| dividendsPaid[].denial112Reason | array | boolean | null | number | object | string |
| dividendsPaid[].direction | string |
| dividendsPaid[].dividendSource | string |
| dividendsPaid[].eligibleDividendsInF | integer |
| dividendsPaid[].isCapitalDividend | boolean |
| dividendsPaid[].isConnected | boolean |
| dividendsPaid[].nonTaxableDividendsS83 | number |
| dividendsPaid[].payerName | string |
| dividendsPaid[].payerYearEnd | array | boolean | null | number | object | string |
| dividendsPaid[].rowIndex | integer |
| dividendsPaid[].s113Paragraph | string |
| dividendsPaid[].source | string |
| dividendsPaid[].statutoryOperands | object |
| dividendsPaid[].taxableDividendsDeductible | number |
| dividendsPaid[].workpaperId | string |
| dividendsPaid[].denial112DateUnresolved | boolean |
| dividendsPaid[].denial112Unresolved | boolean |
| dividendsReceived | array |
| form.amount_1A | number |
| form.amount_1B | number |
| form.amount_1C | number |
| form.amount_1D | number |
| form.amount_1E | number |
| form.amount_1F | number |
| form.amount_1G | number |
| form.amount_1H | number |
| form.amount_1I | number |
| form.amount_1J | number |
| form.amount_1K | number |
| form.amount_1L | number |
| form.amount_2A | number |
| form.amount_2B | number |
| form.amount_2C | number |
| form.amount_2D | number |
| form.amount_2E | number |
| form.amount_2F | number |
| form.amount_2G | number |
| form.amount_2H | number |
| form.amount_2I | number |
| form.amount_2J | number |
| form.amount_3A | number |
| form.amount_3B | number |
| form.amount_4A | number |
| form.amount_4B | number |
| form.continuationScheduleRequired.part1 | integer |
| form.continuationScheduleRequired.part3 | integer |
| form.formWarnings | array |
| form.line_320 | number |
| form.line_330 | number |
| form.line_335 | number |
| form.line_340 | number |
| form.line_345 | number |
| form.line_360 | number |
| form.line_450 | number |
| form.line_455 | number |
| form.line_460 | number |
| form.line_465 | number |
| form.line_470 | number |
| form.line_500 | number |
| form.line_510 | number |
| form.line_520 | number |
| form.line_530 | number |
| form.line_540 | number |
| form.part1Table | array |
| form.part3Table | array |
| form.line_100 | array | boolean | null | number | object | string |
| grossPartIVTaxBeforeSchedule43Reduction | number |
| missing_required | array |
| nonDeductibleBreakdown | array |
| part4ExclusionEligiblePortion | number |
| partIVTaxConnected | number |
| partIVTaxNonConnected | number |
| provisional | boolean |
| ready | boolean |
| s112Breakdown | array |
| s113Breakdown | array |
| s113ParagraphTotals.a | number |
| s113ParagraphTotals.a1 | number |
| s113ParagraphTotals.a1NonBusinessIncomeTax | number |
| s113ParagraphTotals.b | number |
| s113ParagraphTotals.c | number |
| s113ParagraphTotals.cClauseIANonBusinessIncomeTax | number |
| s113ParagraphTotals.d | number |
| s113ParagraphTotals.lowRtf93_4_3_cClause113_1_c_i_AAmount | number |
| s113ParagraphTotals.lowRtf93_4_3_cDeduction | number |
| s113ParagraphTotals.lowRtf93_4_3_cOperandsEstablished | boolean |
| s113ParagraphTotals.paragraphHBaseOperandsEstablished | boolean |
| schedule43PartIVReduction.amount_2F | number |
| schedule43PartIVReduction.amount_2I | number |
| schedule43PartIVReduction.line_320 | number |
| totalCapitalDividendsPaid | number |
| totalColumnF235 | number |
| totalColumnG240 | number |
| totalConnectedTaxableDividends | number |
| totalEligibleDividends | number |
| totalEligibleDividendsPaid | number |
| totalForeignPortfolioDividends | number |
| totalForeignTaxableDividends | number |
| totalNonConnectedDividends | number |
| totalNonDeductiblePortfolio | number |
| totalNonEligibleS112DividendsReceived | number |
| totalNonEligibleTaxableDividendsPaid | number |
| totalNonTaxableS83Received | number |
| totalPartIVTax | number |
| totalS112Deduction | number |
| totalS113Deduction | number |
| totalS113_6Deduction | number |
| totalTaxableDividendsDeductible | number |
| totalTaxableDividendsPaid | number |
| totalTaxableDividendsPaidForRefund | number |
| warnings[].codeStable machine identity of the disclosure, independent of its prose. | string |
| warnings[].message | 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[].severity | string |
| warnings[].sources[] | string |
| warnings[].taxYearThe taxation year whose rate tables are unverified. | integer |
| warnings[].taxYears[] | integer |
| warnings[]A Schedule 3 dividend-workpaper or coverage-review finding: the row, payer, claim or template the review is about, with the reason it is held. | object |
| warnings[].acceptedByClaim | object |
| warnings[].citation.display | string |
| warnings[].citation.kind | string |
| warnings[].citation.section | string |
| warnings[].kind | string |
| warnings[].reason | string |
| warnings[].requestedByClaim | object |
| warnings[].status | string |
| warnings[].templateId | string |
| warnings[].amount | number |
| warnings[].payerName | string |
| warnings[].rowIndex | integer | null |
| warnings[].workpaperId | null | string |
| warnings[].payerYearEnd | null | string |
| warnings[].rowIndices[] | integer | null |
| totalForeignAffiliateDividendAmounts | number |
| section55Receivers | array |
| creditUnionAllocationReview.deductionReduction | number |
| creditUnionAllocationReview.electionMade | array | boolean | null | number | object | string |
| creditUnionAllocationReview.incomeInclusion | number |
| creditUnionAllocationReview.recipientIsCreditUnion | array | boolean | null | number | object | string |
| creditUnionAllocationReview.required | boolean |
| creditUnionAllocationReview.rows | array |
| creditUnionAllocationReview.status | string |
| section137_5_2DeductionReduction | number |
| section137_5_2IncomeInclusion | number |
| totalNonConnectedAssessableDividends | number |