adjustment
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2023–2027
- Strict profile
- adjustment_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": [
"adjustment"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"templateId": "meals-entertainment",
"rows": [],
"sectionRows": {
"fifty_pct": [
{
"description": "Business meal",
"amountCY": 1000,
"reasonableAmount": 1000
}
]
}
}
}Input cells (26)
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 |
|---|---|---|
| fiscalEnd | string | |
| fiscalStart | string | |
| functionalCurrencyContextThe functional-currency election sidecar for the taxation year, used to restate statutory dollar thresholds under ITA s.261(5)(b). Send it only for a functional-currency filer; it carries reportingCurrency, periodStart, a firstDayRate object with rate, spotRateSource and firstDayDate, and optional statutoryThresholdRoundingOverrides. | null | object | |
| nrShareholdersVoting | boolean | null | |
| province | string | |
| rowsRows of the selected adjustment workpaper. | array | |
| rows[] | object | strict |
| schedule50.rows[].businessNumberThe printed form permits NR when not registered. This branch restriction does not prove that NR is factually appropriate for the supplied row. | null | string | strict |
| schedule50.rows[].nameA single-line 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. | string | strict |
| schedule50.rows[].percentCommonSharesLegacy field name mapped to CRA line 400. Current T4012 describes line 400 as percentage of votes. This narrow candidate accepts only integer values from 10 through 100. | integer | strict |
| schedule50.rows[].percentPreferredSharesLegacy field name mapped to CRA line 500. This reviewed branch fixes the preferred-share vote percentage at zero. | integer | null | number | strict |
| schedule50.rows[].shareholderType | null | string | strict |
| schedule50.rows[].socialInsuranceNumber | null | string | |
| schedule50.rows[].trustNumber | null | string | |
| 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. | 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. | 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. | integer | 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. | integer | 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. | string | strict |
| schedule9.rows[].preferredShareCount | integer | null | number | strict |
| schedule9.rows[].preferredSharePercent | integer | 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. | integer | null | number | object | strict |
| sectionRowsWorkpaper rows grouped by section identifier. | null | 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. | null | number | string | always |
| templateIdThe workpaper template to calculate. | string | strict |
Strict profile accepted values (21 of 26 cells)
These constraints apply when you supply this target's payloadContract. Cells marked pinned must equal the listed value.
| Cell | Accepted values |
|---|---|
| fiscalEnd | date (YYYY-MM-DD); 10 to 10 characters |
| fiscalStart | date (YYYY-MM-DD); 10 to 10 characters |
| province | 0 to 20000 characters |
| schedule50.rows[].businessNumber | 0 to 20000 characters |
| schedule50.rows[].name | matches ^(?=\S)(?:[^\r\n]*\S)?$; 1 to 10000 characters |
| schedule50.rows[].percentCommonShares | 10 to 100 |
| schedule50.rows[].percentPreferredShares | -1000000000000000 to 1000000000000000 |
| schedule50.rows[].shareholderType | one of "corporation", "partnership", "individual", "trust", null |
| schedule50.rows[].socialInsuranceNumber | 0 to 20000 characters |
| schedule50.rows[].trustNumber | 0 to 20000 characters |
| 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 |
| templateId | 0 to 20000 characters |
Output cells (78)
Paths are relative to this target's result object in the response.
| Cell | Types |
|---|---|
| amount | number |
| type | null | string |
| description | string |
| status | string |
| warnings[].accountBalanceThe dollar amount the finding is about. Null where the engine refuses to echo a malformed or non-finite value back, and the caller's own unparsed string where the finding echoes the account balance as supplied. | null | number | string |
| warnings[].accountCodeThe account's code as supplied, or the Schedule 1 pseudo-code the engine uses for a finding that belongs to no account row ("S1", "S3", "S4-P4"). | null | string |
| warnings[].accountId | array | boolean | null | number | object | string |
| warnings[].accountNameThe account's name as supplied, or the label the engine gives a finding that belongs to no account row. | null | string |
| 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[].codeThe finding's machine-readable code. Optional: Schedule 1's account-scoped notices are identified by 'kind' alone, and only the batch dependency-hold disclosure carries a code. | string |
| warnings[].filingDispositionThe disposition the finding asserts for itself: 'disclose' on a disclosed nil or review item that never holds the return. Optional on the amount-A reconciliation and the unreviewed-treatment notice. | string |
| 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[].fieldThe request path of the cell the finding is about, in the wire shape the request itself used. The two identity notices publish it because a row that states no id can be addressed no other way: an account row by its ordinal and id, and a workpaper by its ordinal and id when the request sent a list, or by its workpaper key and id when it sent the mapping keyed by workpaper id. The balance and posted-adjustment validation notices publish the cell they could not read, 'accounts.<accountId>.currentYearBalance' or 'combinedAdjustments.<accountId>'. Absent on every notice that names its subject by account or workpaper id instead. | string |
| 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[].kindThe finding's family: classification, coverage, cross_schedule, form_projection, formula, provenance, reconciliation, routing, validation, workpaper, or dependency_hold. | 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[].messageThe same preparer sentence as 'reason'. Optional: not every Schedule 1 notice states both. | 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[].producers[] | string |
| warnings[].reason | 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[].sectionThe statute the finding rests on, on the section 31 restricted farm loss blockers Schedule 1 carries through from Schedule 4 Part 4. | string |
| warnings[].severityThe finding's severity. Optional for the same reason as 'code'. | string |
| warnings[].sourceThe canonical producer's source label, on the cross-schedule replacement finding. | string |
| warnings[].statusThe workpaper's stated adjustment status, on the formula findings that refuse an adjustment the workpaper did not compute cleanly. Null when the workpaper states none. | null | string |
| warnings[].taxTreatmentThe tax treatment the classification states. Null when it states none. | null | string |
| warnings[].templateIdThe workpaper template or classification rule the account's classification names, on the routing notices that name one. Null when the classification states neither. | 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[].workpaperIdThe workpaper the finding is about, on the workpaper-scoped notices that name one. Null when the workpaper states no id: that is the whole subject of the workpaper-identity notice, which addresses it by ordinal in 'field' instead. | null | 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[].sources[] | string |
| warnings[].taxYearThe taxation year whose rate tables are unverified. | integer |
| warnings[].taxYears[] | integer |
| warnings[].upstreamSource | string |
| warnings[].key | string |
| warnings[].gate_id | null | string |
| warnings[].box_form | string |
| warnings[].target | string |
| warnings[].payerName | 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[].rowIndex | null | number |
| warnings[].box | null | string |
| warnings[].expected | array | boolean | null | number | object | string |
| warnings[].actual | array | boolean | null | number | object | string |
| warnings[].citation | array | boolean | null | number | object | string |
| warnings[].affectedOutputs[] | string |
| warnings[].calculationUsable | boolean |
| warnings[].isNil | boolean | null |
| ready | boolean |
| provisional | boolean |