schedule58

T2 Corporation Income Tax Return

Kind
batch
Supported tax years
2023 and later
Strict profile
s58_single_employee_2024_profile_target_value_v1
Payload schema version
0.7.0
Dependencies (run automatically)
none

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": [
    "schedule58"
  ],
  "inputs": {
    "taxYear": 2025,
    "schedule58": {
      "isQjo": "Y",
      "qjoPeriodFrom": "2025-01-01",
      "qjoPeriodTo": "2025-12-31",
      "qcjoDesignationNumber": "1234567",
      "part3Rows": [
        {
          "employeeName": "Jane Smith",
          "salaryOrWagesPayable": 50000
        }
      ],
      "line135AidToPublishers": 0
    },
    "fiscalStart": "2025-01-01",
    "fiscalEnd": "2025-12-31"
  }
}

Input cells (31)

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 schedule58
CellTypesRequired
fiscalEndThe filer-owned taxation-period end used to reconcile the Schedule 58 QJO period and taxYear.stringstrict
fiscalStartThe filer-owned taxation-period start used to reconcile the Schedule 58 QJO period.stringstrict
schedule58.businessNumberThe corporation's CRA business number used to identify the Schedule 58 instalment calculation. The value must agree with the return identity supplied elsewhere in the request.null | string
schedule58.corporationIdThe stable corporation identifier carried by the Schedule 58 instalment calculation. It identifies the filer and is not a substitute for the CRA business number.null | string
schedule58.holdsBroadcastingLicencePractitioner-asserted: corp holds a Broadcasting Act s.2(1) licence? When 'Y' AND isQjo='Y', engine errors per s.125.6(1).null | string
schedule58.isQjoBox 070 — Did you meet QJO conditions at any time in tax year?null | stringstrict
schedule58.line130PartnershipAllocatedCreditBox 130 — CJLT credit allocated from partnerships (T5013/letter).null | number
schedule58.line135AidToPublishersITA 125.6(2)(b) subtracts "the amount received by the taxpayer from the Aid to Publishers component of the Canada Periodical Fund in the year" from the credit. Box 135 is an ANSWER, not an optional field: an explicit 0 is the affirmative "no receipt" answer this profile pins, while a blank box blocks the schedule and withholds the T2 line 798 feed. The submitted 0 is not proof that no Aid to Publishers amount was in fact received.null | numberstrict
schedule58.part3Rowsarray
schedule58.part3Rows[].amountOfAssistanceBox 115 (col 4) — Assistance received/receivable (excludes Aid to Publishers + the s.125.6(2) credit itself + amounts repaid pre-year-end).null | number
schedule58.part3Rows[].atLeast75PctOriginalNewsContentTimeParagraph (d) — does the employee spend at least 75% of their time producing ORIGINAL WRITTEN NEWS CONTENT (including researching, collecting information, verifying facts, photographing, writing, editing, designing and otherwise preparing content)?boolean | null
schedule58.part3Rows[].averageWeeklyHoursParagraph (b) — average number of hours per week the employee works for the QJO. Must be at least 26 to qualify; the engine raises a separate error below that threshold. Blank is not zero.null | number
schedule58.part3Rows[].col10CurrentQLEBox 122 (col 10) — QLE = min(col 8, col 9).null | number
schedule58.part3Rows[].col11CreditAmountBox 125 (col 11) — col 7 × 0.25 + col 10 × 0.35.null | number
schedule58.part3Rows[].col5LowThresholdNetTimesADerived col 5 — (col 3 − col 4) × Amount A.null | number
schedule58.part3Rows[].col6LowThresholdCapDerived col 6 — $55,000 × (days_pre_2023_qjo / 365).null | number
schedule58.part3Rows[].col7LowThresholdQLEBox 120 (col 7) — Low-threshold QLE = min(col 5, col 6).null | number
schedule58.part3Rows[].col8CurrentNetTimesBDerived col 8 — (col 3 − col 4) × Amount B.null | number
schedule58.part3Rows[].col9CurrentCapDerived col 9 — $85,000 × (days_post_2022_qjo / 365).null | number
schedule58.part3Rows[].employeeNameBox 100 (col 1) — Name of eligible newsroom employee.null | stringstrict
schedule58.part3Rows[].fortyConsecutiveWeeksTestMetParagraph (c) — is the employee employed for a minimum of 40 CONSECUTIVE weeks in the tax year?boolean | null
schedule58.part3Rows[].salaryOrWagesPayableBox 110 (col 3) — Salary or wages payable in respect of QJO portion of the tax year.null | number | stringstrict
schedule58.part3Rows[].socialInsuranceNumberBox 105 (col 2) — Social insurance number.null | string
schedule58.partnershipFiscalPeriodEndEnd of the partnership's fiscal period (ISO YYYY-MM-DD). It must end IN the corporation's tax year; the engine range-checks it against the corporation's fiscal dates when both are known.null | string
schedule58.partnershipMemberNotSpecifiedMemberAttestedOpening words of s.125.6(2.1) — the corporation must NOT be a specified member of the partnership; a specified member is excluded outright. Confirm the corporation is not one.boolean | null
schedule58.partnershipPrescribedReturnFiledAttestedHas the partnership filed the prescribed return (information return) for the fiscal period?boolean | null
schedule58.partnershipWasQjoInFiscalPeriodAttestedWas the PARTNERSHIP a qualifying journalism organization throughout the fiscal period?boolean | null
schedule58.qcjoDesignationNumberBox 095 — seven designation digits; the form supplies the Q prefix.null | stringstrict
schedule58.qjoPeriodFromBox 050 — QJO period start (yyyy/mm/dd).null | stringstrict
schedule58.qjoPeriodToBox 060 — QJO period end (yyyy/mm/dd).null | stringstrict
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
Strict profile accepted values (11 of 31 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 schedule58
CellAccepted values
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
schedule58.holdsBroadcastingLicenceone of "Y", "N"
schedule58.isQjoone of "Y", "N", null
schedule58.line135AidToPublishers-1000000000000000 to 1000000000000000
schedule58.part3Rows[].employeeName0 to 20000 characters
schedule58.part3Rows[].salaryOrWagesPayable-1000000000000000 to 1000000000000000; 0 to 20000 characters
schedule58.qcjoDesignationNumber0 to 20000 characters
schedule58.qjoPeriodFrom0 to 20000 characters
schedule58.qjoPeriodTo0 to 20000 characters
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027

Output cells (56)

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

Output cells for schedule58
CellTypes
amount_a_pre_2023_fractionnumber
amount_b_post_2022_fractionnumber
amount_c_total_col_11number
amount_d_subtotalnumber
amount_e_cjlt_creditnumber
days_post_2022_qjointeger
days_pre_2023_qjointeger
days_total_qjointeger
fired_gatesobject
line_050null | string
line_060null | string
line_070null | string
line_095null | string
line_100null | string
line_105array | boolean | null | number | object | string
line_110number
line_115number
line_120number
line_122number
line_125number
line_130number
line_135number
missing_required[]string
part3Rows[].amountOfAssistancenumber
part3Rows[].col10CurrentQLEnumber
part3Rows[].col11CreditAmountnumber
part3Rows[].col5LowThresholdNetTimesAnumber
part3Rows[].col6LowThresholdCapnumber
part3Rows[].col7LowThresholdQLEnumber
part3Rows[].col8CurrentNetTimesBnumber
part3Rows[].col9CurrentCapnumber
part3Rows[].employeeNamenull | string
part3Rows[].netSalaryOrWagesnumber
part3Rows[].salaryOrWagesPayablenumber
part3Rows[].socialInsuranceNumberarray | boolean | null | number | object | string
provisionalboolean
readyboolean
t2_line_798_feed_cjlt_creditnumber
warnings[].boxstring
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[].gate_idstring
warnings[].messagestring
warnings[].severitystring
warnings[].codestring
warnings[].notesstring
warnings[].sectionstring
warnings[].taxYearinteger
line_135_answeredboolean
Filemark | schedule58 cells