shareholder_loan
T2 Corporation Income Tax Return
- Kind
- batch
- Supported tax years
- 2023–2027
- Strict profile
- shareholder_loan_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": [
"shareholder_loan"
],
"inputs": {
"taxYear": 2025,
"fiscalStart": "2025-01-01",
"fiscalEnd": "2025-12-31",
"shareholderLoan": {
"analysisDate": "2026-09-08",
"rows": []
}
}
}Input cells (36)
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 |
|---|---|---|
| fiscalEndThe last day of the taxation year in ISO YYYY-MM-DD form, which bounds every disposition date. Send it with fiscalStart and daysInYear: the three are the canonical taxation-period trio, and all three are mandatory whenever the request reaches Part I through its dependency closure. Strict YYYY-MM-DD, and not before fiscalStart. | null | string | strict |
| fiscalStartThe first day of the taxation year (ISO YYYY-MM-DD). With fiscalEnd and daysInYear it is the canonical taxation-period trio, and all three are mandatory whenever the request reaches Part I through its dependency closure — the request is refused before any computation when one is missing. The bounds also drive Schedule 8's Reg 1100(3) short-year CCA proration and the Reg 1104(3.5)(b) immediate-expensing limit proration. | null | string | strict |
| shareholderLoanDated shareholder-loan facts and analysis assumptions. | null | object | |
| shareholderLoan.analysisDateDate on which the loan analysis is prepared. | null | string | |
| shareholderLoan.interestPaidByRowInterest paid, keyed by loan row identifier. | null | object | |
| shareholderLoan.prescribedRateOverrideAn evidenced prescribed-rate override for the stated period. | null | object | |
| shareholderLoan.prescribedRateOverride.effectiveFrom | string | |
| shareholderLoan.prescribedRateOverride.effectiveTo | string | |
| shareholderLoan.prescribedRateOverride.rate | number | |
| shareholderLoan.prescribedRateOverride.source | string | |
| shareholderLoan.priorYearEndsActual prior taxation-period end dates. | null | array | |
| shareholderLoan.priorYearEnds[]One actual prior taxation-period end date. | string | |
| shareholderLoan.rowsShareholder loans and their dated advances and repayments. | null | array | |
| shareholderLoan.rows[].actualInterestRate | null | number | |
| shareholderLoan.rows[].amountCY | null | number | |
| shareholderLoan.rows[].amountPY | null | number | |
| shareholderLoan.rows[].backToBackAttestation | null | string | |
| shareholderLoan.rows[].borrowerType | null | string | |
| shareholderLoan.rows[].capacity | null | string | |
| shareholderLoan.rows[].dateAdvanced | null | string | |
| shareholderLoan.rows[].description | null | string | |
| shareholderLoan.rows[].employmentBenefitIndividualName | null | string | |
| shareholderLoan.rows[].exception | null | string | |
| shareholderLoan.rows[].exceptionConditions | null | string | |
| shareholderLoan.rows[].homePurchaseLoan | null | string | |
| shareholderLoan.rows[].interestPaid | null | number | |
| shareholderLoan.rows[].interestPaidDate | null | string | |
| shareholderLoan.rows[].loanIdentifier | null | string | |
| shareholderLoan.rows[].originalPrincipal | null | number | |
| shareholderLoan.rows[].personalServicesBusinessServices | null | string | |
| shareholderLoan.rows[].repaidStatus | null | string | |
| shareholderLoan.rows[].seriesTest | null | string | |
| shareholderLoan.rows[].transactions[].amount | number | |
| shareholderLoan.rows[].transactions[].date | string | |
| shareholderLoan.rows[].transactions[].type | string | |
| 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 |
Strict profile accepted values (31 of 36 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 |
| shareholderLoan.analysisDate | 0 to 20000 characters |
| shareholderLoan.prescribedRateOverride.effectiveFrom | 0 to 20000 characters |
| shareholderLoan.prescribedRateOverride.effectiveTo | 0 to 20000 characters |
| shareholderLoan.prescribedRateOverride.rate | -60600000000000 to 60600000000000 |
| shareholderLoan.prescribedRateOverride.source | 0 to 20000 characters |
| shareholderLoan.priorYearEnds[] | 0 to 20000 characters |
| shareholderLoan.rows[].actualInterestRate | -1000000000000000 to 1000000000000000 |
| shareholderLoan.rows[].amountCY | -1000000000000000 to 1000000000000000 |
| shareholderLoan.rows[].amountPY | -1000000000000000 to 1000000000000000 |
| shareholderLoan.rows[].backToBackAttestation | 0 to 20000 characters |
| shareholderLoan.rows[].borrowerType | 0 to 20000 characters |
| shareholderLoan.rows[].capacity | 0 to 20000 characters |
| shareholderLoan.rows[].dateAdvanced | 0 to 20000 characters |
| shareholderLoan.rows[].description | 0 to 20000 characters |
| shareholderLoan.rows[].employmentBenefitIndividualName | 0 to 20000 characters |
| shareholderLoan.rows[].exception | 0 to 20000 characters |
| shareholderLoan.rows[].exceptionConditions | 0 to 20000 characters |
| shareholderLoan.rows[].homePurchaseLoan | 0 to 20000 characters |
| shareholderLoan.rows[].interestPaid | -1000000000000000 to 1000000000000000 |
| shareholderLoan.rows[].interestPaidDate | 0 to 20000 characters |
| shareholderLoan.rows[].loanIdentifier | 0 to 20000 characters |
| shareholderLoan.rows[].originalPrincipal | -1000000000000000 to 1000000000000000 |
| shareholderLoan.rows[].personalServicesBusinessServices | 0 to 20000 characters |
| shareholderLoan.rows[].repaidStatus | 0 to 20000 characters |
| shareholderLoan.rows[].seriesTest | 0 to 20000 characters |
| shareholderLoan.rows[].transactions[].amount | -60600000000000 to 60600000000000 |
| shareholderLoan.rows[].transactions[].date | 0 to 20000 characters |
| shareholderLoan.rows[].transactions[].type | 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 (46)
Paths are relative to this target's result object in the response.
| Cell | Types |
|---|---|
| perRow[].description | string |
| perRow[].loanIdentifier | null | string |
| perRow[].dateAdvanced | null | string |
| perRow[].borrowerType | null | string |
| perRow[].capacity | null | string |
| perRow[].employmentBenefitIndividualName | null | string |
| perRow[].repaidStatus | null | string |
| perRow[].seriesTest | null | string |
| perRow[].exception | null | string |
| perRow[].amountCY | number |
| perRow[].amountPY | number |
| perRow[].s15_2.potentialInclusion | number |
| perRow[].s15_2.deadline | null | string |
| perRow[].s15_2.deadlinePassed | boolean |
| perRow[].s15_2.repaymentRequired | boolean |
| perRow[].s15_2.rationale | string |
| perRow[].s15_2.originalPrincipal | null | number |
| perRow[].s15_2.principalBasis | string |
| perRow[].s15_2.inclusionYear | integer | null |
| perRow[].s15_2.chargingProvisionApplies | boolean |
| perRow[].s15_2.determinationWithheld | boolean |
| perRow[].s15_2.partXIII.deemedDividend | number |
| perRow[].s15_2.partXIII.statutoryRate | number |
| perRow[].s15_2.partXIII.statutoryWithholding | number |
| perRow[].s15_2.partXIII.treatyRateDeterminationRequired | boolean |
| perRow[].s15_2.partXIII | null |
| perRow[].s80_4.deemedInterest | number |
| perRow[].s80_4.imputedInterest | number |
| perRow[].s80_4.actualInterest | number |
| perRow[].s80_4.statedInterestPaid | number |
| perRow[].s80_4.rationale | string |
| perRow[].s80_4.method | string |
| totalS15Inclusion | number |
| totalS80_4DeemedInterest | number |
| totalS80_4Imputed | number |
| totalActualInterestPaid | number |
| totalPartXIIIWithholding | number |
| prescribedRateUsed | number |
| fiscalStart | string |
| fiscalEnd | string |
| today | string |
| deadlinePassedCount | integer |
| warnings[].code | string |
| warnings[].severity | string |
| warnings[].message | string |
| provisional | boolean |