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.

Input cells for schedule3
CellTypesRequired
schedule3.dividendsPaidarray
schedule3.dividendsPaid[].businessNumberstring
schedule3.dividendsPaid[].connectedCorpBNnull | string
schedule3.dividendsPaid[].connectedPayerDividendRefundnumber
schedule3.dividendsPaid[].connectedPayerTotalEligibleDividendsnumber
schedule3.dividendsPaid[].connectedPayerTotalTaxableDividendsnumber
schedule3.dividendsPaid[].denial112boolean
schedule3.dividendsPaid[].denial112Reasonnull | string
schedule3.dividendsPaid[].directionstring
schedule3.dividendsPaid[].dividendSourcestring
schedule3.dividendsPaid[].eligibleDividendsInFnumber
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[].isConnectedboolean | string
schedule3.dividendsPaid[].nonTaxableDividendsS83number
schedule3.dividendsPaid[].payerNamestring
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[].rowIndexnumber
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[].sourcestring
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.dividendsReceivedarray
schedule3.dividendsReceived[].businessNumberstring
schedule3.dividendsReceived[].connectedCorpBNnull | string
schedule3.dividendsReceived[].connectedPayerDividendRefundnumber
schedule3.dividendsReceived[].connectedPayerTotalEligibleDividendsnumber
schedule3.dividendsReceived[].connectedPayerTotalTaxableDividendsnumber
schedule3.dividendsReceived[].denial112boolean
schedule3.dividendsReceived[].denial112Reasonnull | string
schedule3.dividendsReceived[].directionstring
schedule3.dividendsReceived[].dividendSourcestring
schedule3.dividendsReceived[].eligibleDividendsInFnumber
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[].isConnectedboolean | string
schedule3.dividendsReceived[].nonTaxableDividendsS83number
schedule3.dividendsReceived[].payerNamestring
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[].rowIndexnumber
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[].sourcestring
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.part1Tablearray
schedule3.form.part1Table[].connectedCodestring
schedule3.form.part1Table[].deductible235number
schedule3.form.part1Table[].deductible240number
schedule3.form.part1Table[].eligible242number
schedule3.form.part1Table[].nonTaxableS83number
schedule3.form.part1Table[].partIV275number
schedule3.form.part1Table[].partIVConnected280number
schedule3.form.part1Table[].partIVEligible265number
schedule3.form.part1Table[].payerBnstring
schedule3.form.part1Table[].payerNamestring
schedule3.form.part1Table[].payerRefund260number
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[].payerYearEndstring
schedule3.form.part3Tablearray
schedule3.form.part3Table[].eligible440number
schedule3.form.part3Table[].recipientBnstring
schedule3.form.part3Table[].recipientNamestring
schedule3.form.part3Table[].recipientYearEndstring
schedule3.form.part3Table[].taxable430number
schedule3.grossPartIVTaxBeforeSchedule43ReductionGross s.186 Part IV tax before the Schedule 43 Part IV.1 overlap reduction.number
schedule3.missing_requiredarray
schedule3.partIVTaxConnectednumber
schedule3.partIVTaxNonConnectednumber
schedule3.provisionalboolean
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.totalCapitalDividendsPaidnumber
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.totalColumnG240number
schedule3.totalEligibleDividendsnumber
schedule3.totalEligibleDividendsPaidnumber
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.totalTaxableDividendsPaidnumber
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 | stringalways
workpapers[].adjustmentAmountnull | number | string
workpapers[].adjustmentStatusstringstrict
workpapers[].assumptionstringstrict
workpapers[].customNamestringstrict
workpapers[].idstringstrict
workpapers[].linkedAccountIds[]boolean | null | number | stringstrict
workpapers[].rows[].amountCYintegerstrict
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.booleanstrict
workpapers[].rows[].directionstringstrict
workpapers[].rows[].dividendSourcestringstrict
workpapers[].rows[].dividendTypestringstrict
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).stringstrict
workpapers[].rows[].isConnectedstringstrict
workpapers[].rows[].payerNamestringstrict
workpapers[].sectionRowsobjectstrict
workpapers[].templateIdstringstrict
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.

Strict profile accepted values for schedule3
CellAccepted values
schedule3.dividendsPaid[].denial112Reasonone of "term_preferred_share", "guaranteed_share", "dividend_rental", "other_112_2_x"
schedule3.dividendsPaid[].directionone of "received", "paid"
schedule3.dividendsPaid[].dividendSourceone of "canadian_taxable", "foreign_affiliate", "foreign_portfolio"
schedule3.dividendsPaid[].isConnectedone of "needs_confirmation"
schedule3.dividendsPaid[].s113Paragraphone of "surplus", "113_1_c", "legacy_ambiguous"
schedule3.dividendsPaid[].sourceone of "workpaper", "manual", "scraped"
schedule3.dividendsReceived[].denial112Reasonone of "term_preferred_share", "guaranteed_share", "dividend_rental", "other_112_2_x"
schedule3.dividendsReceived[].directionone of "received", "paid"
schedule3.dividendsReceived[].dividendSourceone of "canadian_taxable", "foreign_affiliate", "foreign_portfolio"
schedule3.dividendsReceived[].isConnectedone of "needs_confirmation"
schedule3.dividendsReceived[].s113Paragraphone of "surplus", "113_1_c", "legacy_ambiguous"
schedule3.dividendsReceived[].sourceone of "workpaper", "manual", "scraped"
schedule3.form.part1Table[].connectedCodeone of "", "1"
taxYearmatches ^\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[].adjustmentStatus0 to 20000 characters
workpapers[].assumption0 to 20000 characters
workpapers[].customName0 to 20000 characters
workpapers[].id0 to 20000 characters
workpapers[].linkedAccountIds[]-1000000000000000 to 1000000000000000; 0 to 20000 characters
workpapers[].rows[].amountCY-1000000000000000 to 1000000000000000
workpapers[].rows[].direction0 to 20000 characters
workpapers[].rows[].dividendSource0 to 20000 characters
workpapers[].rows[].dividendType0 to 20000 characters
workpapers[].rows[].foreignCurrency0 to 20000 characters
workpapers[].rows[].isConnected0 to 20000 characters
workpapers[].rows[].payerName0 to 20000 characters
workpapers[].templateId0 to 20000 characters

Output cells (159)

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

Output cells for schedule3
CellTypes
coverageReview.part4ExclusionConclusionarray | boolean | null | number | object | string
coverageReview.partIVLossClaimConclusionarray | boolean | null | number | object | string
coverageReview.requirements.part4ExclusionReviewboolean
coverageReview.requirements.partIVLossClaimReviewboolean
coverageReview.reviewedboolean
coverageReview.schemaVersioninteger
coverageReview.statusstring
dividendsPaid[].businessNumberstring
dividendsPaid[].connectedCorpBNarray | boolean | null | number | object | string
dividendsPaid[].connectedPayerDividendRefundnumber
dividendsPaid[].connectedPayerTotalEligibleDividendsnumber
dividendsPaid[].connectedPayerTotalTaxableDividendsnumber
dividendsPaid[].denial112boolean
dividendsPaid[].denial112Reasonarray | boolean | null | number | object | string
dividendsPaid[].directionstring
dividendsPaid[].dividendSourcestring
dividendsPaid[].eligibleDividendsInFinteger
dividendsPaid[].isCapitalDividendboolean
dividendsPaid[].isConnectedboolean
dividendsPaid[].nonTaxableDividendsS83number
dividendsPaid[].payerNamestring
dividendsPaid[].payerYearEndarray | boolean | null | number | object | string
dividendsPaid[].rowIndexinteger
dividendsPaid[].s113Paragraphstring
dividendsPaid[].sourcestring
dividendsPaid[].statutoryOperandsobject
dividendsPaid[].taxableDividendsDeductiblenumber
dividendsPaid[].workpaperIdstring
dividendsPaid[].denial112DateUnresolvedboolean
dividendsPaid[].denial112Unresolvedboolean
dividendsReceivedarray
form.amount_1Anumber
form.amount_1Bnumber
form.amount_1Cnumber
form.amount_1Dnumber
form.amount_1Enumber
form.amount_1Fnumber
form.amount_1Gnumber
form.amount_1Hnumber
form.amount_1Inumber
form.amount_1Jnumber
form.amount_1Knumber
form.amount_1Lnumber
form.amount_2Anumber
form.amount_2Bnumber
form.amount_2Cnumber
form.amount_2Dnumber
form.amount_2Enumber
form.amount_2Fnumber
form.amount_2Gnumber
form.amount_2Hnumber
form.amount_2Inumber
form.amount_2Jnumber
form.amount_3Anumber
form.amount_3Bnumber
form.amount_4Anumber
form.amount_4Bnumber
form.continuationScheduleRequired.part1integer
form.continuationScheduleRequired.part3integer
form.formWarningsarray
form.line_320number
form.line_330number
form.line_335number
form.line_340number
form.line_345number
form.line_360number
form.line_450number
form.line_455number
form.line_460number
form.line_465number
form.line_470number
form.line_500number
form.line_510number
form.line_520number
form.line_530number
form.line_540number
form.part1Tablearray
form.part3Tablearray
form.line_100array | boolean | null | number | object | string
grossPartIVTaxBeforeSchedule43Reductionnumber
missing_requiredarray
nonDeductibleBreakdownarray
part4ExclusionEligiblePortionnumber
partIVTaxConnectednumber
partIVTaxNonConnectednumber
provisionalboolean
readyboolean
s112Breakdownarray
s113Breakdownarray
s113ParagraphTotals.anumber
s113ParagraphTotals.a1number
s113ParagraphTotals.a1NonBusinessIncomeTaxnumber
s113ParagraphTotals.bnumber
s113ParagraphTotals.cnumber
s113ParagraphTotals.cClauseIANonBusinessIncomeTaxnumber
s113ParagraphTotals.dnumber
s113ParagraphTotals.lowRtf93_4_3_cClause113_1_c_i_AAmountnumber
s113ParagraphTotals.lowRtf93_4_3_cDeductionnumber
s113ParagraphTotals.lowRtf93_4_3_cOperandsEstablishedboolean
s113ParagraphTotals.paragraphHBaseOperandsEstablishedboolean
schedule43PartIVReduction.amount_2Fnumber
schedule43PartIVReduction.amount_2Inumber
schedule43PartIVReduction.line_320number
totalCapitalDividendsPaidnumber
totalColumnF235number
totalColumnG240number
totalConnectedTaxableDividendsnumber
totalEligibleDividendsnumber
totalEligibleDividendsPaidnumber
totalForeignPortfolioDividendsnumber
totalForeignTaxableDividendsnumber
totalNonConnectedDividendsnumber
totalNonDeductiblePortfolionumber
totalNonEligibleS112DividendsReceivednumber
totalNonEligibleTaxableDividendsPaidnumber
totalNonTaxableS83Receivednumber
totalPartIVTaxnumber
totalS112Deductionnumber
totalS113Deductionnumber
totalS113_6Deductionnumber
totalTaxableDividendsDeductiblenumber
totalTaxableDividendsPaidnumber
totalTaxableDividendsPaidForRefundnumber
warnings[].codeStable machine identity of the disclosure, independent of its prose.string
warnings[].messagestring
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[].severitystring
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[].acceptedByClaimobject
warnings[].citation.displaystring
warnings[].citation.kindstring
warnings[].citation.sectionstring
warnings[].kindstring
warnings[].reasonstring
warnings[].requestedByClaimobject
warnings[].statusstring
warnings[].templateIdstring
warnings[].amountnumber
warnings[].payerNamestring
warnings[].rowIndexinteger | null
warnings[].workpaperIdnull | string
warnings[].payerYearEndnull | string
warnings[].rowIndices[]integer | null
totalForeignAffiliateDividendAmountsnumber
section55Receiversarray
creditUnionAllocationReview.deductionReductionnumber
creditUnionAllocationReview.electionMadearray | boolean | null | number | object | string
creditUnionAllocationReview.incomeInclusionnumber
creditUnionAllocationReview.recipientIsCreditUnionarray | boolean | null | number | object | string
creditUnionAllocationReview.requiredboolean
creditUnionAllocationReview.rowsarray
creditUnionAllocationReview.statusstring
section137_5_2DeductionReductionnumber
section137_5_2IncomeInclusionnumber
totalNonConnectedAssessableDividendsnumber
Filemark | schedule3 cells