Accounting reports

Get a general ledger

Lists every journal line over a date range, grouped by chart-of-account entry, with a running balance down each account. Requires the reports:read permission.

GET
https://services.magicdoor.com/accounting/company-portal/reports/general-ledger

Authorization

Authorizationstringrequired
Bearer token — Send your API token in the Authorization header as Bearer <token>. Requests without a valid token are rejected with 401 Unauthorized.

Query parameters

basisenum<string>required

cash counts money when it moves; accrual counts it when it is earned or owed. The two give different numbers from the same data.

example: accrualcashaccrual
reportTypeenum<string>required

property 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.

example: propertypropertycompany
startDatestring · daterequired

First day of the period, read in the company's timezone.

example: 2026-07-01
endDatestring · daterequired

Last day of the period, read in the company's timezone.

example: 2026-07-31
portfolioIdsstring[]

Only these portfolios.

propertyIdsstring[]

Only these properties.

coaIdsstring[]

Only these chart-of-account entries. Omit for every account with activity.

Response

200 · The ledger, one section per account.

chartOfAccountsSection[]

One section per chart-of-account entry with activity in the period.

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.

Each entry carries either a debit or a credit, never both — the other is absent. A debit raises an asset or expense account and lowers a liability, equity or revenue account; a credit does the opposite. runningBalance accumulates down the account from its openingBalance.

The report is computed on the fly

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.