schedule9
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2011 and later
- Strict profile
- s9_versioned_profile_target_value_v1
- Payload schema version
- 0.3.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": [
"schedule9"
],
"inputs": {
"taxYear": 2025,
"schedule9": {
"rows": [
{
"name": "Birchline Tools Ltd.",
"businessNumber": "222222226",
"relationshipCode": 3,
"commonShareCount": 100,
"commonSharePercent": 25,
"preferredShareCount": 0,
"preferredSharePercent": 0,
"bookValueCapitalStock": 125000
}
]
}
}
}Input cells (11)
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 |
|---|---|---|
| schedule9.rowsThe printed form has 14 rows. Empty rows are no-ops. Filemark retains row 15+ and blocks its current export pending filing-method review; the current public form does not prescribe an overflow carrier. | array | |
| schedule9.rows[].bookValueCapitalStockBounded submitted JSON number whose sign is preserved. The symmetric range is the printed form's own capacity for box 700: the fillable Schedule 9 XFA binds that cell (AllocationTable Row*.Cell9) to CoreFunctions.validateKeystrokeNumeric(this, 12, false), a 12-digit keystroke validator whose false positiveOnly argument permits negatives, so the form carries at most 999,999,999,999 in either direction. Values outside that are unfileable and can only reach the unready branch this contract's output schema refuses. The bound is a form-capacity fact, not a tax-cost or impairment conclusion. | null | number | strict |
| schedule9.rows[].businessNumberA nine-digit submitted BN root. Schedule 9 Note 1 admits NR for a corporation with no business number; this branch states a number instead, and the engine checks it against the federal Modulus-10 rule before the row is filed, so a digit string that fails the check holds the schedule rather than filing an invented BN. Format and checksum conformance do not verify that the number exists or belongs to the named corporation. | null | string | strict |
| schedule9.rows[].commonShareCountPositive whole-number branch restriction under Filemark's mechanical policy. The upper bound is the printed form's own capacity for box 500: the fillable Schedule 9 XFA binds that cell (AllocationTable Row*.Cell5) to CoreFunctions.validateKeystrokeNumeric(this, 11, false), an 11-digit keystroke validator, so 99,999,999,999 is the largest value the CRA form can carry. Larger values are unfileable and can only reach the unready branch this contract's output schema refuses, so they are rejected before execution. | null | number | strict |
| schedule9.rows[].commonSharePercentPositive integer percent-unit branch restriction. The engine also supports up to two decimal places, but this candidate intentionally excludes that wider branch. | null | number | strict |
| schedule9.rows[].countryOfResidenceThis narrow branch leaves the printed other-than-Canada country field blank. Blank does not prove Canadian residence. | null | string | |
| schedule9.rows[].nameA single-line corporation name with at least one character and no leading or trailing whitespace. The 10,000-character ceiling is a Filemark limit, not a CRA field maximum. | null | string | strict |
| schedule9.rows[].preferredShareCountBox 600 — Number of preferred shares the filing corp owns. Filemark requires a non-negative integer. | null | number | strict |
| schedule9.rows[].preferredSharePercentBox 650 — % of preferred shares the filing corp owns. Same Filemark percent-unit and precision policy as box 550. | null | number | strict |
| schedule9.rows[].relationshipCodeLiteral Schedule 9 Note 2 value 3, Associated. This submitted code is corroborating disclosure only and is not an independent legal association determination. | null | number | object | 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 |
Strict profile accepted values (10 of 11 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 |
|---|---|
| schedule9.rows[].bookValueCapitalStock | -999999999999 to 999999999999 |
| schedule9.rows[].businessNumber | matches ^[0-9]{9}$; 0 to 9 characters |
| schedule9.rows[].commonShareCount | 1 to 99999999999 |
| schedule9.rows[].commonSharePercent | 1 to 100 |
| schedule9.rows[].countryOfResidence | 0 to 20000 characters |
| schedule9.rows[].name | matches ^(?=\S)(?:[^\r\n]*\S)?$; 1 to 10000 characters |
| schedule9.rows[].preferredShareCount | -1000000000000000 to 1000000000000000 |
| schedule9.rows[].preferredSharePercent | -1000000000000000 to 1000000000000000 |
| schedule9.rows[].relationshipCode | -1000000000000000 to 1000000000000000 |
| taxYear | matches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027 |
Output cells (47)
Paths are relative to this target’s result object in the response.
| Cell | Types |
|---|---|
| rows_count | integer |
| rows[].row_label | integer |
| rows[].name | null | string |
| rows[].countryOfResidence | null | string |
| rows[].businessNumber | null | string |
| rows[].relationshipCode | integer | null |
| rows[].commonShareCount | integer | null |
| rows[].commonSharePercent | null | number |
| rows[].preferredShareCount | integer | null |
| rows[].preferredSharePercent | null | number |
| rows[].bookValueCapitalStock | null | number |
| relationship_breakdown.1 | integer |
| relationship_breakdown.2 | integer |
| relationship_breakdown.3 | integer |
| relationship_breakdown.4 | integer |
| has_code_3_rows | boolean |
| has_code_1_rows | boolean |
| has_associated_corpsTrue when ANY disclosed row carries Note 2 relationship code 1, 2 or 3. ITA 256(1)(a) is symmetric in the two corporations, so both printed control labels report an associated corporation whichever way the form means the direction of its Parent/Subsidiary labels, and code 4 (Related but not associated) is the form's only affirmative not-associated answer. It remains a disclosure projection off the printed relationship codes, not an independent legal association conclusion. This branch admits a code-3-only roster, so the projection is pinned true. | boolean |
| has_subsidiary_corpsLegacy compatibility alias for the raw code-1 projection. It does not establish row direction or control. | boolean |
| warnings | array |
| fired_gates.filing_required_when_related_or_associated | object |
| provisional | boolean |
| ready | boolean |
| warnings[].code | string |
| warnings[].message | string |
| warnings[].notes | string |
| warnings[].section | string |
| warnings[].severity | string |
| warnings[].taxYear | integer |
| coverageStatus | string |
| coverageReason | string |
| formId | string |
| formRevision | string |
| taxYear | integer |
| missing_required | array |
| warnings[].boxThe form box the finding is about, or null when the finding is about the return rather than a printed 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[].gate_id | string |
| fired_gatesEvery registered gate this result raised, keyed by gate identifier. | object |