Get an income statement
Builds a profit-and-loss statement over a date range: revenue, expenses, and what is left. Requires the reports:read permission.
Authorization
AuthorizationstringrequiredQuery parameters
basisenum<string>requiredcash counts money when it moves; accrual counts it when it is earned or owed. The two give different numbers from the same data.
reportTypeenum<string>requiredproperty reports on the properties' books — what the owners' money did. company reports on the management company's own books. An entry belongs to one or the other, never both.
startDatestring · daterequiredFirst day of the period, read in the company's timezone.
endDatestring · daterequiredLast day of the period, read in the company's timezone.
portfolioIdsstring[]Only these portfolios.
propertyIdsstring[]Only these properties.
Response
200 · The income statement.
revenueobjectOrdinary income: rent, fees, and anything else in the 4xxxxx band.
expensesobjectOrdinary costs: repairs, management fees, and anything else in the 6xxxxx band.
otherRevenueobjectIncome outside normal operations, in the 7xxxxx band.
otherExpensesobjectCosts outside normal operations, in the 8xxxxx band.
netOperatingIncomenumberrevenue.totalAmount minus expenses.totalAmount, as a decimal. Negative when the period lost money on operations.
netOtherOperatingIncomenumberotherRevenue.totalAmount minus otherExpenses.totalAmount, as a decimal.
netIncomenumbernetOperatingIncome plus netOtherOperatingIncome — the bottom line. Negative for a loss.
400 · `basis`, `reportType`, `startDate` or `endDate` is missing or not a recognised value.
401 · The access token is missing, expired, or not for this company.
403 · The caller does not hold the `reports:read` permission.
| Field | How it is arrived at |
|---|---|
netOperatingIncome | The revenue section less the expenses section — the day-to-day result. |
netOtherOperatingIncome | The other-revenue section less the other-expenses section — everything that is not day-to-day. |
netIncome | The two together: what the period actually made or lost. |
Nothing is stored. Every call rebuilds the report from the ledger as it stands right now, so two calls with the same parameters can differ if anything was posted in between. Only manual journal entries that have been posted are included.