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.
| Cell | Types | Required |
|---|---|---|
| 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 |
| 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. | 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. | string | strict |
| schedule53.line100GripOpening | integer | strict |
| schedule53.line110TaxableIncome | number | strict |
| schedule53.line130LesserSbdNumerator | integer | strict |
| schedule53.line140LesserAiiTaxableIncome | integer | strict |
| schedule53.line200EligibleDividendsReceived | integer | strict |
| schedule53.line210Section113Dividends | integer | strict |
| schedule53.line300EligibleDivsPaidPriorYear | integer | strict |
| schedule53.line310ExcessiveEEDPriorYear | integer | strict |
| schedule55 | object | |
| 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 | string | strict |
| 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 | number | strict |
| 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 | number | strict |
| 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 | string | strict |
| 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. | boolean | strict |
| 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. | boolean | strict |
| 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. | boolean | strict |
| 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. | boolean | strict |
| 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. | boolean | strict |
| t2Jacket.applicability.taxableDividendsPaidT2 jacket applicability answer: the corporation paid taxable dividends in the taxation year. | boolean | strict |
| 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. | boolean | strict |
| t2Jacket.identification.typeOfCorporation | string | strict |
| 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[].adjustmentStatus | string | strict |
| workpapers[].id | string | strict |
| workpapers[].rows[].amountCY | integer | strict |
| workpapers[].rows[].date | string | strict |
| workpapers[].rows[].designatedInWritingAtPaymentTime | boolean | strict |
| workpapers[].rows[].designationDate | string | strict |
| workpapers[].rows[].direction | string | strict |
| workpapers[].rows[].dividendSource | string | strict |
| workpapers[].rows[].dividendType | string | strict |
| workpapers[].rows[].isConnected | string | strict |
| workpapers[].rows[].isTaxablePreferredShare | boolean | strict |
| workpapers[].rows[].payerName | string | strict |
| workpapers[].schedule3CoverageReview.part4ExclusionConclusion | string | strict |
| workpapers[].schedule3CoverageReview.partIVLossClaimConclusion | string | strict |
| workpapers[].schedule3CoverageReview.reviewed | boolean | strict |
| workpapers[].schedule3CoverageReview.reviewedAt | string | strict |
| workpapers[].schedule3CoverageReview.schemaVersion | integer | strict |
| workpapers[].templateId | string | strict |
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.
| Cell | Accepted values |
|---|---|
| daysInYear | 1 to 1000000000000000 |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (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.partRouting | one of "part1_ccpc_dic", "part2_other", null |
| t2Jacket.identification.typeOfCorporation | 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 |
| workpapers[].adjustmentStatus | 0 to 20000 characters |
| workpapers[].id | 0 to 20000 characters |
| workpapers[].rows[].amountCY | -1000000000000000 to 1000000000000000 |
| workpapers[].rows[].date | date (YYYY-MM-DD); 10 to 10 characters |
| workpapers[].rows[].designationDate | date (YYYY-MM-DD); 10 to 10 characters |
| workpapers[].rows[].direction | 0 to 20000 characters |
| workpapers[].rows[].dividendSource | 0 to 20000 characters |
| workpapers[].rows[].dividendType | 0 to 20000 characters |
| workpapers[].rows[].isConnected | 0 to 20000 characters |
| workpapers[].rows[].payerName | 0 to 20000 characters |
| workpapers[].schedule3CoverageReview.part4ExclusionConclusion | 0 to 20000 characters |
| workpapers[].schedule3CoverageReview.partIVLossClaimConclusion | 0 to 20000 characters |
| workpapers[].schedule3CoverageReview.reviewedAt | date-time; 0 to 20000 characters |
| workpapers[].schedule3CoverageReview.schemaVersion | -1000000000000000 to 1000000000000000 |
| workpapers[].templateId | 0 to 20000 characters |
Output cells (53)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| additionalParagraphCTax | number |
| amountC | number |
| filingOperands.electionAmount | null | 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.postElectionEedd | null | number |
| filingOperands.stateWhether the filing operands are usable. Shape only; the label domain belongs to the engine. | string |
| fired_gates | object |
| form.amount_C | number |
| form.formWarnings | array |
| form.line_100 | number |
| form.line_150 | number |
| form.line_160 | number |
| form.line_180 | number |
| form.line_190 | number |
| form.line_200 | number |
| form.line_280 | number |
| form.line_290 | number |
| form.subtotal_A | number |
| form.subtotal_B | number |
| form.subtotal_D | number |
| line_100 | number |
| line_150 | number |
| line_160 | number |
| line_180 | number |
| line_190 | number |
| line_200 | number |
| line_280 | number |
| line_290 | number |
| missing_required[] | string |
| ordinaryPart1Eedd | number |
| paragraphCApplies | boolean |
| paragraphCEEDDAmount | number |
| partRouting | string |
| provisional | boolean |
| ready | boolean |
| subtotalA | number |
| subtotalB | number |
| subtotalD | number |
| totalPartIii1Tax | number |
| warnings[].box | null | 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[].code | string |
| warnings[].gate_id | string |
| warnings[].message | string |
| warnings[].severity | string |