schedule55

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2006 and later
Strict profile
s55_2024_ccpc_excess_eligible_dividend_target_value_v1
Payload schema version
0.5.0
Dependencies (run automatically)
dividend_pool_status, schedule3, schedule53, schedule54

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": [
    "schedule55"
  ],
  "inputs": {
    "taxYear": 2025,
    "fiscalStart": "2025-01-01",
    "fiscalEnd": "2025-12-31",
    "daysInYear": 365,
    "t2Jacket": {
      "identification": {
        "isResidentOfCanada": true,
        "typeOfCorporation": "1"
      },
      "additionalInfo": {
        "isDepositInsuranceCorporation": false,
        "isCreditUnion": false,
        "substantiveCCPCAnytime": false,
        "section89_11ElectionInForceForTaxYear": false
      },
      "applicability": {
        "gripChangeOrEligDiv": true,
        "taxableDividendsPaid": true
      }
    },
    "workpapers": [
      {
        "id": "wp-dividends",
        "templateId": "dividends",
        "adjustmentStatus": "ok",
        "schedule3CoverageReview": {
          "schemaVersion": 1,
          "reviewed": true,
          "partIVLossClaimConclusion": "none_claimed",
          "part4ExclusionConclusion": "none_applicable",
          "reviewedAt": "2026-08-10T00:00:00Z"
        },
        "rows": [
          {
            "payerName": "Cedar Ridge Manufacturing Inc.",
            "direction": "Paid",
            "dividendType": "Eligible",
            "dividendSource": "Canadian taxable",
            "isConnected": "No",
            "isTaxablePreferredShare": false,
            "date": "2025-08-10",
            "amountCY": 100000,
            "designatedInWritingAtPaymentTime": true,
            "designationDate": "2025-08-10"
          }
        ]
      }
    ],
    "schedule53": {
      "line100GripOpening": 0,
      "line110TaxableIncome": 111111.11,
      "line130LesserSbdNumerator": 0,
      "line140LesserAiiTaxableIncome": 0,
      "line200EligibleDividendsReceived": 0,
      "line210Section113Dividends": 0,
      "line300EligibleDivsPaidPriorYear": 0,
      "line310ExcessiveEEDPriorYear": 0
    },
    "schedule55": {
      "partRouting": "part1_ccpc_dic",
      "line100TotalTaxableDividendsPaid": 100000,
      "line150TotalEligibleDividendsPaid": 100000,
      "line160GripEndOfYear": 80000
    }
  }
}

Input cells (54)

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 schedule55
CellTypesRequired
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
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.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.stringstrict
schedule53.line100GripOpeningintegerstrict
schedule53.line110TaxableIncomenumberstrict
schedule53.line130LesserSbdNumeratorintegerstrict
schedule53.line140LesserAiiTaxableIncomeintegerstrict
schedule53.line200EligibleDividendsReceivedintegerstrict
schedule53.line210Section113Dividendsintegerstrict
schedule53.line300EligibleDivsPaidPriorYearintegerstrict
schedule53.line310ExcessiveEEDPriorYearintegerstrict
schedule55object
schedule55.allShareholdersTaxExemptTrue iff every dividend-recipient shareholder is a Part-I-tax-exempt person. This can waive shareholder concurrence under s.185.1(4) only when the election is within 30 months of every original dividend.boolean | null
schedule55.amountCTotalEEDDAmount C — Total excessive eligible dividend designations from S54 amount A. The engine auto-fills this from the S54 batch result (`amount_a_para_b_only`, the para-(b) portion of S54 amount A); a present S54 result is authoritative. This direct field is retained only for standalone/direct-call compatibility when S54 is absent; it cannot replace a triggered required S54 or satisfy filing readiness.null | number
schedule55.electionAllocationToOriginalDividendsConfirmedPractitioner confirmation that the aggregate election amount has been allocated to the original eligible dividend(s) and the allocation is supported in the election workpapers.boolean | null
schedule55.electionFiledWithin90DaysOfAssessmentPractitioner confirmation that the s.185.1(2) election was filed within 90 days after the Part III.1 tax assessment was sent. Required for any non-zero election amount on line 180 or line 280.boolean | null
schedule55.electionShareholderConcurrenceObtainedTrue iff the corporation and the shareholder population required by s.185.1(3) have concurred. The required population depends on whether the election is within 30 months; after 30 months every recipient shareholder must concur. Required for any non-zero election unless the narrow s.185.1(4) waiver is available.boolean | null
schedule55.electionWithin30MonthsOfOriginalDividendPractitioner confirmation whether the election was made within 30 months after every original eligible dividend to which it is allocated. This timing determines the applicable s.185.1(3) concurrence population and whether the s.185.1(4) tax-exempt waiver can be used.boolean | null
schedule55.line100TotalTaxableDividendsPaidLine 100 — Total taxable dividends paid in the tax year (informational, not used in EEDD math). S55 owns this all-dividend filing total. The currently modelled S3 line 460 is only a bounded prefill/reconciliation source because taxable-dividend S3 Part 4 lines 530/540 are not yet captured from inputs (the current S3 projection emits zero placeholders).null | number | stringstrict
schedule55.line150TotalEligibleDividendsPaidLine 150 — Total eligible dividends paid in the tax year, including any paragraph-(c) dividend. S55 owns the filing total; modelled S3 line 465 is only a bounded prefill/reconciliation source.null | numberstrict
schedule55.line160GripEndOfYearLine 160 — GRIP at end of tax year (S53 line 590). Per the form's parenthetical, if S53 line 590 is negative, enter "0" here; the engine applies the floor automatically. This direct field is retained only for standalone/direct-call compatibility when S53 is absent; it cannot replace a triggered required S53 or satisfy filing readiness.null | numberstrict
schedule55.line180Part1ElectionUnder185_1_2Line 180 — EEDD elected under s.185.1(2) to be treated as ordinary (non-eligible) dividend. Capped at amount A; the engine clamps any over-election to A and warns.null | number
schedule55.line200TotalTaxableDividendsPaidLine 200 — Total taxable dividends paid in tax year (informational). Same provenance as line 100 but for non-CCPC/non-DIC corps.null | number
schedule55.line280Part2ElectionUnder185_1_2Line 280 — EEDD elected under s.185.1(2) (Part 2 election). Capped at amount C; the engine clamps any over-election to C and warns.null | number
schedule55.paragraphCAntiAvoidanceAppliesPara (c) anti-avoidance applies — the eligible dividend was paid in a transaction (or series) one of whose main purposes was to artificially maintain or increase GRIP, or artificially maintain or decrease LRIP. When true, the form's Parts 1/2 calculations do NOT apply; Part III.1 tax = 30% × the full eligible dividend amount (s.185.1(1)(a) 20% + s.185.1(1)(b) additional 10%). A present S54 result supplies the canonical para-(c) row-ledger amount; this flag is standalone/direct-call compatibility only when S54 is absent and cannot satisfy a triggered required companion.boolean | null
schedule55.paragraphCEEDDAmountPara (c) full EEDD amount. A present S54 result's `paragraph_c_amount` is authoritative. This direct field is retained only for standalone/direct-call compatibility when S54 is absent; it cannot replace a triggered required S54 or satisfy filing readiness.null | number
schedule55.partRoutingLegacy compatibility routing. The normal Hub does not let this field select a part: the server resolves the current-year GRIP/LRIP regime from the canonical T2 jacket status and returns `partRouting` on the Schedule 55 computation result.null | stringstrict
t2Jacket.additionalInfo.isCreditUnionThe corporation is a credit union; a legal-status fact the GRIP and LRIP dividend-pool resolution requires beyond the T2 corporation-type code.booleanstrict
t2Jacket.additionalInfo.isDepositInsuranceCorporationThe corporation is a deposit insurance corporation; a legal-status fact the GRIP and LRIP dividend-pool resolution requires beyond the T2 corporation-type code.booleanstrict
t2Jacket.additionalInfo.section89_11ElectionInForceForTaxYearAn ITA s.89(11) election not to be treated as a CCPC is in force for the taxation year; the continuing election state, distinct from the box 266 and 267 filing events.booleanstrict
t2Jacket.additionalInfo.substantiveCCPCAnytimeT2 box 290: the corporation was a substantive CCPC (ITA s.248(1)) at any time in the taxation year; routes the general rate reduction worksheet and the dividend-pool regime.booleanstrict
t2Jacket.applicability.gripChangeOrEligDivT2 jacket applicability answer: the general rate income pool (ITA s.89(1)) changed in the year or an eligible dividend was paid or received, so Schedule 53 applies.booleanstrict
t2Jacket.applicability.taxableDividendsPaidT2 jacket applicability answer: the corporation paid taxable dividends in the taxation year.booleanstrict
t2Jacket.identification.isResidentOfCanadaT2 box 080: the corporation was resident in Canada in the taxation year. A no answer requires the box 081 country of residence.booleanstrict
t2Jacket.identification.typeOfCorporationstringstrict
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[].adjustmentStatusstringstrict
workpapers[].idstringstrict
workpapers[].rows[].amountCYintegerstrict
workpapers[].rows[].datestringstrict
workpapers[].rows[].designatedInWritingAtPaymentTimebooleanstrict
workpapers[].rows[].designationDatestringstrict
workpapers[].rows[].directionstringstrict
workpapers[].rows[].dividendSourcestringstrict
workpapers[].rows[].dividendTypestringstrict
workpapers[].rows[].isConnectedstringstrict
workpapers[].rows[].isTaxablePreferredSharebooleanstrict
workpapers[].rows[].payerNamestringstrict
workpapers[].schedule3CoverageReview.part4ExclusionConclusionstringstrict
workpapers[].schedule3CoverageReview.partIVLossClaimConclusionstringstrict
workpapers[].schedule3CoverageReview.reviewedbooleanstrict
workpapers[].schedule3CoverageReview.reviewedAtstringstrict
workpapers[].schedule3CoverageReview.schemaVersionintegerstrict
workpapers[].templateIdstringstrict
Strict profile accepted values (32 of 54 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 schedule55
CellAccepted values
daysInYear1 to 1000000000000000
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
schedule53.line100GripOpening-1000000000000000 to 1000000000000000
schedule53.line110TaxableIncome-1000000000000000 to 1000000000000000
schedule53.line130LesserSbdNumerator-1000000000000000 to 1000000000000000
schedule53.line140LesserAiiTaxableIncome-1000000000000000 to 1000000000000000
schedule53.line200EligibleDividendsReceived-1000000000000000 to 1000000000000000
schedule53.line210Section113Dividends-1000000000000000 to 1000000000000000
schedule53.line300EligibleDivsPaidPriorYear-1000000000000000 to 1000000000000000
schedule53.line310ExcessiveEEDPriorYear-1000000000000000 to 1000000000000000
schedule55.line100TotalTaxableDividendsPaid-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule55.line150TotalEligibleDividendsPaid-1000000000000000 to 1000000000000000
schedule55.line160GripEndOfYear-1000000000000000 to 1000000000000000
schedule55.partRoutingone of "part1_ccpc_dic", "part2_other", null
t2Jacket.identification.typeOfCorporation0 to 20000 characters
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027
workpapers[].adjustmentStatus0 to 20000 characters
workpapers[].id0 to 20000 characters
workpapers[].rows[].amountCY-1000000000000000 to 1000000000000000
workpapers[].rows[].datedate (YYYY-MM-DD); 10 to 10 characters
workpapers[].rows[].designationDatedate (YYYY-MM-DD); 10 to 10 characters
workpapers[].rows[].direction0 to 20000 characters
workpapers[].rows[].dividendSource0 to 20000 characters
workpapers[].rows[].dividendType0 to 20000 characters
workpapers[].rows[].isConnected0 to 20000 characters
workpapers[].rows[].payerName0 to 20000 characters
workpapers[].schedule3CoverageReview.part4ExclusionConclusion0 to 20000 characters
workpapers[].schedule3CoverageReview.partIVLossClaimConclusion0 to 20000 characters
workpapers[].schedule3CoverageReview.reviewedAtdate-time; 0 to 20000 characters
workpapers[].schedule3CoverageReview.schemaVersion-1000000000000000 to 1000000000000000
workpapers[].templateId0 to 20000 characters

Output cells (53)

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

Output cells for schedule55
CellTypes
additionalParagraphCTaxnumber
amountCnumber
filingOperands.electionAmountnull | number
filingOperands.partRoutingWhich Part the filing operands route to, or null when routing is not established. Shape only; the label domain belongs to the engine.null | string
filingOperands.postElectionEeddnull | number
filingOperands.stateWhether the filing operands are usable. Shape only; the label domain belongs to the engine.string
fired_gatesobject
form.amount_Cnumber
form.formWarningsarray
form.line_100number
form.line_150number
form.line_160number
form.line_180number
form.line_190number
form.line_200number
form.line_280number
form.line_290number
form.subtotal_Anumber
form.subtotal_Bnumber
form.subtotal_Dnumber
line_100number
line_150number
line_160number
line_180number
line_190number
line_200number
line_280number
line_290number
missing_required[]string
ordinaryPart1Eeddnumber
paragraphCAppliesboolean
paragraphCEEDDAmountnumber
partRoutingstring
provisionalboolean
readyboolean
subtotalAnumber
subtotalBnumber
subtotalDnumber
totalPartIii1Taxnumber
warnings[].boxnull | string
warnings[].citation.applies_to_boxes[]string
warnings[].citation.cra_text_verbatimstring
warnings[].citation.form_idstring
warnings[].citation.form_revisionstring
warnings[].citation.gate_idstring
warnings[].citation.rulestring
warnings[].citation.sourcestring
warnings[].citation.source_urlstring
warnings[].citation.verified_atstring
warnings[].codestring
warnings[].gate_idstring
warnings[].messagestring
warnings[].severitystring
Filemark | schedule55 cells