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.

Input cells for adjustment
CellTypesRequired
fiscalEndstring
fiscalStartstring
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
nrShareholdersVotingboolean | null
provincestring
rowsRows of the selected adjustment workpaper.array
rows[]objectstrict
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 | stringstrict
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.stringstrict
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.integerstrict
schedule50.rows[].percentPreferredSharesLegacy field name mapped to CRA line 500. This reviewed branch fixes the preferred-share vote percentage at zero.integer | null | numberstrict
schedule50.rows[].shareholderTypenull | stringstrict
schedule50.rows[].socialInsuranceNumbernull | string
schedule50.rows[].trustNumbernull | 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.numberstrict
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.stringstrict
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.integerstrict
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.integerstrict
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.stringstrict
schedule9.rows[].preferredShareCountinteger | null | numberstrict
schedule9.rows[].preferredSharePercentinteger | null | numberstrict
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 | objectstrict
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 | stringalways
templateIdThe workpaper template to calculate.stringstrict
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.

Strict profile accepted values for adjustment
CellAccepted values
fiscalEnddate (YYYY-MM-DD); 10 to 10 characters
fiscalStartdate (YYYY-MM-DD); 10 to 10 characters
province0 to 20000 characters
schedule50.rows[].businessNumber0 to 20000 characters
schedule50.rows[].namematches ^(?=\S)(?:[^\r\n]*\S)?$; 1 to 10000 characters
schedule50.rows[].percentCommonShares10 to 100
schedule50.rows[].percentPreferredShares-1000000000000000 to 1000000000000000
schedule50.rows[].shareholderTypeone of "corporation", "partnership", "individual", "trust", null
schedule50.rows[].socialInsuranceNumber0 to 20000 characters
schedule50.rows[].trustNumber0 to 20000 characters
schedule9.rows[].bookValueCapitalStock-999999999999 to 999999999999
schedule9.rows[].businessNumbermatches ^[0-9]{9}$; 0 to 9 characters
schedule9.rows[].commonShareCount1 to 99999999999
schedule9.rows[].commonSharePercent1 to 100
schedule9.rows[].countryOfResidence0 to 20000 characters
schedule9.rows[].namematches ^(?=\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
taxYearmatches ^\s*(?:1[0-9]{3}|2(?:0(?:[0-1][0-9]{1}|2[0-7])))\s*$; 1000 to 2027
templateId0 to 20000 characters

Output cells (78)

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

Output cells for adjustment
CellTypes
amountnumber
typenull | string
descriptionstring
statusstring
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[].accountIdarray | 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[].reasonstring
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[].upstreamSourcestring
warnings[].keystring
warnings[].gate_idnull | string
warnings[].box_formstring
warnings[].targetstring
warnings[].payerNamestring
warnings[].producerstring
warnings[].sourceStatestring
warnings[].openingFamilystring
warnings[].inputPathstring
warnings[].openingLabelstring
warnings[].manualValuenull | number
warnings[].canonicalValuenull | number
warnings[].amountnull | number
warnings[].rowIndexnull | number
warnings[].boxnull | string
warnings[].expectedarray | boolean | null | number | object | string
warnings[].actualarray | boolean | null | number | object | string
warnings[].citationarray | boolean | null | number | object | string
warnings[].affectedOutputs[]string
warnings[].calculationUsableboolean
warnings[].isNilboolean | null
readyboolean
provisionalboolean
Filemark | adjustment cells