schedule306
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2008 and later
- Strict profile
- schedule306_v1
- Payload schema version
- 0.1.0
- Dependencies (run automatically)
- none
Example request
Send this body to POST /api/v1/computations/batch. This example works with or without payloadContract.
{
"compute": [
"schedule306"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"schedule306": {},
"daysInYear": 365,
"isCCPC": true
}
}Input cells (28)
Paths are relative to the request's inputs object. [] marks an array element.
Cells marked always require a non-null value in every request. Cells marked strict are required when you supply this target's payloadContract. See Run computations.
Unknown cells and JSON type mismatches return 400 with the affected cells in the error details.
| Cell | Types | Required |
|---|---|---|
| businessNumberFiling corporation CRA business number, as a nine-digit root or full 15-character program account, used to match corporation-specific allocations such as Schedule 23. Other root-level aliases and the jacket or GIFI schedule identities may supply it when omitted. Missing, malformed or conflicting roots prevent an allocation match. | null | string | |
| corporationNameFiling corporation name used for Schedule 511 and other filing headers when the jacket name is blank. Send the legal name. If neither source supplies a name, this reader returns no name and the consuming form applies its identity checks. | null | string | |
| daysInYear | integer | |
| filerBnFiling corporation CRA business number, as a nine-digit root or full 15-character program account, used to match corporation-specific allocations such as Schedule 23. Other root-level aliases and the jacket or GIFI schedule identities may supply it when omitted. Missing, malformed or conflicting roots prevent an allocation match. | null | string | |
| filingCorpBnFiling corporation CRA business number, as a nine-digit root or full 15-character program account, used to match corporation-specific allocations such as Schedule 23. Other root-level aliases and the jacket or GIFI schedule identities may supply it when omitted. Missing, malformed or conflicting roots prevent an allocation match. | null | string | |
| fiscalEnd | string | strict |
| fiscalStart | string | strict |
| isCCPC | boolean | |
| schedule100 | object | |
| schedule101 | object | |
| schedule101.insuranceUnderwritingTypeThe insurance underwriting subtype, read with isInsuranceCorp to decide whether the RC4088 Rev.23 p.5 PDF financial statement supplement advisory fires. Send it whenever isInsuranceCorp is true, using non_underwriting for brokerages, MGAs, agency subsidiaries and non-underwriting holding companies. No enum is published because the engine routes every unrecognized string to the ordinary-filer branch rather than rejecting it. | null | string | |
| schedule125 | object | |
| schedule125.insuranceUnderwritingTypeThe insurance underwriting subtype, read with isInsuranceCorp to decide whether the RC4088 Rev.23 p.5 PDF financial statement supplement advisory fires. Send it whenever isInsuranceCorp is true, using non_underwriting for brokerages, MGAs, agency subsidiaries and non-underwriting holding companies. No enum is published because the engine routes every unrecognized string to the ordinary-filer branch rather than rejecting it. | null | string | |
| schedule306.additionalScheduleAttached | boolean | null | |
| schedule306.relatedCorporations | array | |
| schedule306.relatedCorporations[].businessNumber | string | |
| schedule306.relatedCorporations[].capitalDeductionAllocation | null | number | |
| schedule306.relatedCorporations[].capitalForYear | null | number | |
| schedule306.relatedCorporations[].firstTaxYearAllocation | null | number | |
| schedule306.relatedCorporations[].name | string | |
| schedule306.relatedCorporations[].relatedForAllocationPurposesConfirmed | boolean | null | |
| schedule306.relatedCorporations[].s190_15_5Applies | boolean | null | |
| schedule306.relatedGroupRosterComplete | boolean | null | |
| schedule38Schedule 38 Part VI Tax on Capital of Financial Institutions input object. Its capital and institution facts support the federal calculation, T2 line 720 and provincial financial-institution capital-tax inputs. Omission supplies no Schedule 38 prepass or fallback identity facts; applicable return triggers still require the relevant facts. | null | object | |
| schedule38.partVI2TaxPayableForYearS67Optional practitioner cross-check of the Schedule 67 T2 line 725 Part VI.2 instalment deductible under ITA s.190.1(3)(a). It is never authority: batch computation supplies the server-produced Schedule 67 t2_line_725_feed, and a missing or conflicting feed blocks the deduction. | null | number | string | |
| schedule38.unusedSurtaxCreditsClaimedFromS42Optional cross-check of the unused surtax credit claimed on Schedule 42 under ITA s.190.1(3)(b). It is an internal component of amount 7B and appears on no printed CRA box. The value is never authority: a positive amount reduces Part VI only when the server-authenticated Schedule 42 opening register, source-year evidence, seven-taxation-year window and s.190.1(6) review support the same claim. | null | number | string | |
| t2Jacket | object | |
| 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 (17 of 28 cells)
These constraints apply when you supply this target's payloadContract. Cells marked pinned must equal the listed value.
| Cell | Accepted values |
|---|---|
| businessNumber | 0 to 20000 characters |
| corporationName | 0 to 20000 characters |
| daysInYear | 1 to 1000000000000000 |
| filerBn | 0 to 20000 characters |
| filingCorpBn | 0 to 20000 characters |
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| schedule101.insuranceUnderwritingType | 0 to 20000 characters |
| schedule125.insuranceUnderwritingType | 0 to 20000 characters |
| schedule306.relatedCorporations[].businessNumber | 0 to 20000 characters |
| schedule306.relatedCorporations[].capitalDeductionAllocation | -1000000000000000 to 1000000000000000 |
| schedule306.relatedCorporations[].capitalForYear | -1000000000000000 to 1000000000000000 |
| schedule306.relatedCorporations[].firstTaxYearAllocation | -1000000000000000 to 1000000000000000 |
| schedule306.relatedCorporations[].name | 0 to 20000 characters |
| schedule38.partVI2TaxPayableForYearS67 | -1000000000000000 to 1000000000000000; 0 to 20000 characters |
| schedule38.unusedSurtaxCreditsClaimedFromS42 | -1000000000000000 to 1000000000000000; 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 |
Output cells (97)
Paths are relative to this target's result object in the response.
| Cell | Types |
|---|---|
| status | string |
| ready | boolean |
| provisional | boolean |
| warnings[].codeStable machine identity of the disclosure, independent of its prose. | string |
| warnings[].severity | string |
| warnings[].message | string |
| warnings[].box | null | string |
| warnings[].citation | array | boolean | null | number | object | string |
| warnings[].notesWhat the rate manifest records against the year, including what is still outstanding before the year can be verified. | string |
| warnings[].sourceModuleThe module that emitted the disclosure. | string |
| warnings[].taxYearThe taxation year whose rate tables are unverified. | integer |
| warnings[].reason | string |
| warnings[].source | string |
| warnings[].upstreamSource | string |
| warnings[].kind | string |
| warnings[].key | string |
| warnings[].section | string |
| warnings[].gate_id | null | string |
| warnings[].box_form | string |
| warnings[].target | string |
| warnings[].field | string |
| warnings[].templateId | null | string |
| warnings[].workpaperId | string |
| warnings[].status | string |
| warnings[].payerName | string |
| warnings[].accountCode | string |
| warnings[].accountName | string |
| warnings[].producer | string |
| warnings[].sourceState | string |
| warnings[].openingFamily | string |
| warnings[].inputPath | string |
| warnings[].openingLabel | string |
| warnings[].manualValue | null | number |
| warnings[].canonicalValue | null | number |
| warnings[].amount | null | number |
| warnings[].accountBalance | null | number |
| warnings[].rowIndex | null | number |
| warnings[].accountId | boolean | null | number | string |
| warnings[].expected | array | boolean | null | number | object | string |
| warnings[].actual | array | boolean | null | number | object | string |
| warnings[].producers[] | string |
| warnings[].affectedOutputs[] | string |
| warnings[].calculationUsable | boolean |
| warnings[].isNil | boolean | null |
| warnings[].adjustmentAmountThe dollar amount the finding is about, on the routing and slip-reconciliation notices that name one. Absent on every notice that does not. | number |
| warnings[].competingS1Lines[] | string |
| warnings[].competingTemplateIds[] | string |
| warnings[].computedDirectionThe addition/deduction direction the workpaper or classification computed, on the routing findings that refuse it against the registered direction of the line. | null | string |
| warnings[].conditionalOnThe statutory fact a conditional classification turns on and that the return has not resolved. Nothing is posted while it is open. | string |
| warnings[].conflictingLines[] | string |
| warnings[].controlledAffiliateCountThe number of box 300 code 1 selections Schedule 25 reports, on the ITA 91(1) foreign accrual property income finding. | integer |
| warnings[].coveredByPostedAjeTrue on the reconciliation finding raised when a posted adjusting entry already moved the accounts a GL-built workpaper measures, so letting both amounts post would reconcile the same item twice. | boolean |
| warnings[].gifiCodes[] | string |
| warnings[].incomeAmountCountHow many foreign accrual income amounts share the affiliate class the prior-year claim was recorded against. | integer |
| warnings[].incomeAmountIdThe foreign accrual income amount the finding is about, as the engine keys it. | string |
| warnings[].inferredCategoryThe Schedule 1 category the engine inferred for an amount whose classification named no line. | string |
| warnings[].itaReferences[] | string |
| warnings[].lineThe Schedule 1 line whose amount a canonical producer replaced, on the cross-schedule finding that names the replacement. | string |
| warnings[].lineDefaultTaxThe default tax treatment the chosen Schedule 1 line registers. Null when the line registers none, or when no line was chosen. | null | string |
| warnings[].ownerThe schedule that owns the replaced Schedule 1 line, on the cross-schedule replacement finding. | string |
| warnings[].pairedLineThe opposite-direction Schedule 1 line registered for the same concept, when one exists. Null when the registry pairs none. | null | string |
| warnings[].pairedLineFeedsScheduleThe schedule the paired line is printed as sourced from, which is why the amount cannot simply be re-anchored there. Null when the registry pairs no line. | null | string |
| warnings[].postedAjeAccountIds[] | string |
| warnings[].producerKeyThe canonical producer whose amount replaced the account-derived one, on the cross-schedule replacement finding. | string |
| warnings[].receiverThe canonical receiver that must carry this concept's opposite-direction amount, on the canonical-receiver refusal. | string |
| warnings[].registeredDirectionThe direction the Schedule 1 line registry records for the line the amount was routed to. Null when the line is not in the registry. | null | string |
| warnings[].replacedTotalThe account-derived total the canonical producer's amount replaced. | number |
| warnings[].schedule1LineThe Schedule 1 line the finding is about. Null where the classification or the registry names none, which is itself the subject of several of these findings. | null | string |
| warnings[].taxTreatmentThe tax treatment the classification states. Null when it states none. | null | string |
| warnings[].treatmentThe classification's Schedule 1 treatment verdict. Null when the classification states none. | null | string |
| warnings[].unfundedAccountIds[] | string |
| warnings[].unreadableEntryCountHow many foreign accrual ledger entries could not be read, on the coverage finding that refuses to treat them as absent. | integer |
| warnings[].sources[] | string |
| warnings[].taxYears[] | integer |
| blockers[] | string |
| fired_gatesEvery T4012 gate this build evaluated, keyed by gate identifier, each carrying the verbatim CRA face text it was authored from. | object |
| source.form | string |
| source.statute | string |
| combinedCapital | null | number |
| basicCapitalDeduction | null | number |
| line_410 | null | number |
| filerAllocation | null | number |
| filerCapitalForYear | null | number |
| relatedCorporations[].name | string |
| relatedCorporations[].businessNumber | string |
| relatedCorporations[].allocation | number |
| relatedCorporations[].capitalForYear | number |
| relatedCorporations[].relatedForAllocationPurposesConfirmed | boolean |
| relatedCorporations[].s190_15_5Applies | boolean |
| relatedCorporations[].firstTaxYearAllocation | null | number |
| form.allocationRows[].name | string |
| form.allocationRows[].businessNumber | string |
| form.allocationRows[].allocation | number |
| form.supplementalRows[].name | string |
| form.supplementalRows[].businessNumber | string |
| form.supplementalRows[].allocation | number |
| form.line_410 | null | number |