API reference

Reports

The financial statements, burn and runway, and spend by department.

Guides: Read your dashboard, Read and export reports, Read your group's consolidated statements

Get what each vendor was paid for their 1099

GET/v1/reports/1099

client.reports.form1099()

What each 1099-eligible vendor was paid in a calendar year, against the year's filing threshold ($600 through 2025, $2,000 from 2026), and whether their W-9 and tax id are on file. Money paid by card is left out: the card network reports it. Turn eligible_only off to see every other vendor paid the threshold, who may need marking.

Parameters

NameTypeDescription
yearQueryinteger or null

The calendar year; last year when left out.

eligible_onlyQueryboolean

Only vendors marked 1099-eligible. Off, every other vendor paid the threshold is listed too.

Default true

Response

200Form1099YearOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/1099" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get receivables or payables by age

GET/v1/reports/aging

client.reports.aging()

Receivables (or payables) on a day, by counterparty and by how far past due: not yet due, 1–30, 31–60, 61–90 and over 90 days. A payment not yet applied counts against its party in current.

Parameters

NameTypeDescription
ledgerQuerystring

ar for receivables, ap for payables.

Default ar
as_ofQuerystring (date) or null

The day; today when left out.

Response

200AgingOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/aging" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get assets, liabilities and net assets over time

GET/v1/reports/balance_history

client.reports.balanceHistory()

Total assets, total liabilities and net assets at each date from since to until, and every asset and liability account's balance at the same dates, grouped under its top-level account. Each point equals the balance sheet's totals as of that date. The history never starts before the books' first entry: since is moved up to it.

Parameters

NameTypeDescription
sinceQuerystring (date) or null

First day. Defaults to the day the books start.

untilQuerystring (date) or null

Defaults to today.

intervalQuerystring or null

One point per day, or per week or month end (the last point is always until). At most 1000 points. Defaults to the finest interval that fits.

One of day, week, month

Response

200BalanceHistoryOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/balance_history" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the balance sheet

GET/v1/reports/balance_sheet

client.reports.balanceSheet()

Assets, liabilities and equity as of as_of (today by default). Both sides are computed independently and any difference is reported.

Parameters

NameTypeDescription
as_ofQuerystring (date) or null

Defaults to today.

Response

200BalanceSheetOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/balance_sheet" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get burn and runway

GET/v1/reports/burn

client.reports.burn()

Cash, gross and net burn by month, and runway: cash divided by the average net burn of the last three complete months. Transfers between the company's own accounts, money raised and equipment bought are not burn.

Parameters

NameTypeDescription
as_ofQuerystring (date) or null

Defaults to today.

monthsQueryinteger

How many months of burn to return, the current month included.

Default 6

Response

200BurnAndRunwayOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/burn" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the cash flow statement

GET/v1/reports/cash_flow

client.reports.cashFlow()

The indirect cash flow statement between since and until (this month to date by default): net income, then operating, investing and financing movements, reconciled to what the cash accounts did.

Parameters

NameTypeDescription
sinceQuerystring (date) or null

Defaults to the start of this month.

untilQuerystring (date) or null

Defaults to today.

Response

200CashFlowStatementOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/cash_flow" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the organization's consolidated balance sheet and income statement

GET/v1/reports/consolidation

client.reports.consolidation()

The organization's consolidated balance sheet and income statement, in these books' currency.

Each set of books is read from its own ledger, translated (balance sheet at the closing rate, income and expense at the period's average, from these books' rates) and added up by account code; intercompany balances between them are eliminated. Refused with consolidation_refused when the organization has books you cannot open, a currency has no rate in these books, or for an API key, which reaches only its own books.

Parameters

NameTypeDescription
as_ofQuerystring (date) or null

The balance sheet date. Defaults to today.

startQuerystring (date) or null

The first day of the income statement. Defaults to the fiscal year's.

Response

200ConsolidationOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/consolidation" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the income statement

GET/v1/reports/income_statement

client.reports.incomeStatement()

Revenue, cost of revenue, gross profit, operating expenses by function and net income between since and until (this month to date by default).

Parameters

NameTypeDescription
sinceQuerystring (date) or null

Defaults to the start of this month.

untilQuerystring (date) or null

Defaults to today.

Response

200IncomeStatementOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/income_statement" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get operating expenses by department

GET/v1/reports/spend_by_department

client.reports.spendByDepartment()

Operating expenses by department between since and until (this month to date by default), payroll included: what each team spent, and what names no team yet.

Parameters

NameTypeDescription
sinceQuerystring (date) or null

Defaults to the start of this month.

untilQuerystring (date) or null

Defaults to today.

Response

200SpendByDepartmentOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/spend_by_department" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the books by tax line for a fiscal year

GET/v1/reports/tax_lines

client.reports.taxLines()

The books by Form 1120 line for a fiscal year: page 1 from the year's income and expense, Schedule L from the balances at its start and end (this year's unclosed result in retained earnings), and Schedule M-1's book income tax. Each line lists its accounts.

Parameters

NameTypeDescription
fiscal_yearQueryinteger or null

The calendar year the fiscal year ends in; the current one when left out.

Response

200TaxReportOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/tax_lines" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Get the trial balance

GET/v1/reports/trial_balance

client.reports.trialBalance()

Every account's debit or credit balance as of as_of (today by default). The two columns are equal when the ledger is sound; if not, the difference is reported, never plugged.

Parameters

NameTypeDescription
as_ofQuerystring (date) or null

Defaults to today.

Response

200TrialBalanceOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/trial_balance" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

List the bills coming due

GET/v1/reports/upcoming_bills

client.reports.upcomingBills()

The bills coming due in the next days days: what is still owed on the bills the books hold, by due date, and the bills each vendor's rhythm says are coming (monthly, quarterly or yearly), at their usual amount. Overdue bills and late expected ones come first. A bill well over its vendor's usual says by how much.

Parameters

NameTypeDescription
daysQueryinteger

How many days ahead to look, today included.

Default 90

Response

200UpcomingBillsOut

Errors

400
The request was malformed or a parameter is invalid.
401
No valid credential was sent.
403
The credential or the member's role does not allow this.
404
No such resource in this ledger.
409
A conflicting request, e.g. one with the same Idempotency-Key still running.
422
A well-formed request a business rule refused.
429
Too many requests; retry after the Retry-After header.
500
Something failed on our side; the request_id identifies it.

Example

curl
curl "https://api.ledgerit.ai/v1/reports/upcoming_bills" \
  -H "Authorization: Bearer $LEDGERIT_TOKEN"

Objects

The objects these operations take and return.

Form1099YearOut

NameTypeDescription
currencyRequiredstring
thresholdRequiredstring

The year's filing threshold for a 1099-NEC or 1099-MISC.

vendorsRequiredarray of VendorYearOut
yearRequiredinteger

AgingOut

NameTypeDescription
as_ofRequiredstring (date)
control_balanceRequiredstring

The control accounts' balance from lines that name a party, on the owed side: the aging's total equals it.

ledgerRequiredstring
rowsRequiredarray of AgingRowOut
totalsRequiredAgingRowOut

Every party together; party_id is null.

BalanceHistoryOut

NameTypeDescription
currencyRequiredstring
groupsRequiredarray of BalanceHistoryGroupOut
intervalRequiredstring
pointsRequiredarray of BalancePointOut
sinceRequiredstring (date)
untilRequiredstring (date)

BalanceSheetOut

NameTypeDescription
as_ofRequiredstring (date)
assetsRequiredBalanceSheetSectionOut
balancedRequiredboolean
currencyRequiredstring
differenceRequiredstring
equityRequiredBalanceSheetSectionOut
liabilitiesRequiredBalanceSheetSectionOut
total_assetsRequiredstring
total_liabilities_and_equityRequiredstring

BurnAndRunwayOut

NameTypeDescription
as_ofRequiredstring (date)

The day the figures are read as of.

burningRequiredboolean

True when the trailing net burn is above zero.

cashRequiredstring

Cash across every cash account at the end of as_of.

currencyRequiredstring

The books' currency, as an ISO 4217 code.

monthsRequiredarray of BurnMonthOut

Oldest first; the last is the current month to date.

runway_monthsRequiredstring or null

Months of cash at the trailing net burn, to one decimal. Null when the company is not burning.

trailing_monthsRequiredinteger

How many complete months trailing_net_burn averages.

trailing_net_burnRequiredstring or null

Average net burn of the last complete months (up to three), or null with no complete month yet.

CashFlowStatementOut

NameTypeDescription
balancedRequiredboolean
beginning_cashRequiredstring
currencyRequiredstring
differenceRequiredstring
ending_cashRequiredstring
net_changeRequiredstring
net_incomeRequiredstring
sectionsRequiredarray of CashFlowSectionOut
sinceRequiredstring (date)
untilRequiredstring (date)

ConsolidationOut

NameTypeDescription
as_ofRequiredstring (date)
balance_sheetRequiredarray of ConsolidatedLineOut

Assets, liabilities, then equity, on as_of.

balancedRequiredboolean

Whether assets equal liabilities and equity. False is a defect to show.

currencyRequiredstring

The presenting currency: these books' own.

eliminationsRequiredarray of EliminationOut
entitiesRequiredarray of ConsolidatedEntityOut

Every set of books of the organization, these first.

income_statementRequiredarray of ConsolidatedLineOut

Income, then expense, from start to as_of.

net_incomeRequiredstring
startRequiredstring (date)
total_assetsRequiredstring
total_equityRequiredstring
total_liabilitiesRequiredstring

IncomeStatementOut

NameTypeDescription
cost_of_revenueRequiredstring
currencyRequiredstring
gross_marginRequiredstring or null
gross_profitRequiredstring
net_incomeRequiredstring
operating_expensesRequiredstring
operating_incomeRequiredstring
other_expenseRequiredstring
other_incomeRequiredstring
revenueRequiredstring
sectionsRequiredarray of IncomeSectionOut
sinceRequiredstring (date)
untilRequiredstring (date)

SpendByDepartmentOut

NameTypeDescription
currencyRequiredstring
departmentsRequiredarray of DepartmentSpendOut

Every department, by code, spent or not.

sinceRequiredstring (date)
totalRequiredstring

Every operating expense in the window.

unassignedRequiredstring

Operating expenses naming no department.

untilRequiredstring (date)

TaxReportOut

NameTypeDescription
beginning_total_assetsRequiredstring
beginning_total_liabilities_and_equityRequiredstring
income_per_booksRequiredstring

Page 1's income less its deductions, before income tax.

linesRequiredarray of TaxReportLineOut
sinceRequiredstring (date)
total_assetsRequiredstring

Schedule L at the year's end.

total_liabilities_and_equityRequiredstring
untilRequiredstring (date)

TrialBalanceOut

NameTypeDescription
as_ofRequiredstring (date)
balancedRequiredboolean
currencyRequiredstring
differenceRequiredstring
rowsRequiredarray of TrialBalanceRowOut
total_creditsRequiredstring
total_debitsRequiredstring

UpcomingBillsOut

NameTypeDescription
as_ofRequiredstring (date)
billed_totalRequiredstring

What is owed on the bills the books hold.

billsRequiredarray of UpcomingBillOut

Soonest first, overdue and late ones at the top.

currencyRequiredstring

The books' currency. Bills in any other currency are left out.

expected_totalRequiredstring

The bills expected from vendors' rhythms, not in yet.

throughRequiredstring (date)

The last day the list covers.

totalRequiredstring

Every bill on the list.

VendorYearOut

NameTypeDescription
counterparty_idRequiredstring

An id that starts with party_.

form_1099_categoryRequiredstring or null

nec or misc; null when not chosen.

One of nec, misc
is_1099_eligibleRequiredboolean

Marked 1099-eligible on their vendor role.

nameRequiredstring
needs_w9Requiredboolean

1099-eligible, over the threshold, and no W-9 on file.

over_thresholdRequiredboolean

Paid at least the year's filing threshold.

paidRequiredstring

Paid in the year in the books' currency, by bank and recorded payments, less refunds; card payments are left out (they go on a 1099-K).

tax_id_on_fileRequiredboolean

A tax id is recorded for them. The id itself is never returned here.

w9_received_onRequiredstring (date) or null

When their W-9 was collected, or null.

w9_requested_atRequiredstring (date-time) or null

When a W-9 was asked of them by email and is still awaited, or null.

AgingRowOut

NameTypeDescription
currentRequiredstring

Not yet due, and payments not yet applied.

days_1_30Requiredstring
days_31_60Requiredstring
days_61_90Requiredstring
over_90Requiredstring
party_idRequiredstring or null

An id that starts with party_.

party_nameRequiredstring or null
totalRequiredstring

BalanceHistoryGroupOut

NameTypeDescription
account_idRequiredstring

The top-level account the group is named for.

accountsRequiredarray of BalanceHistoryAccountOut

Every account in the group that held a balance at any point.

balancesRequiredarray of string

The group's total at each point, in the order of points.

codeRequiredstring
nameRequiredstring
typeRequiredstring

asset or liability.

BalancePointOut

NameTypeDescription
assetsRequiredstring

Total assets at the end of date.

dateRequiredstring (date)

The day this point is the balance sheet as of.

liabilitiesRequiredstring

Total liabilities at the end of date.

net_assetsRequiredstring

Assets less liabilities: equity plus earnings not yet closed.

BalanceSheetSectionOut

NameTypeDescription
linesRequiredarray of BalanceSheetLineOut
totalRequiredstring

BurnMonthOut

NameTypeDescription
completeRequiredboolean

False for the current month, which is month to date.

gross_burnRequiredstring

Operating cash that left in the month, as a positive figure.

monthRequiredstring (date)

The first day of the month.

net_burnRequiredstring

Gross burn less operating inflows. Positive means more went out than came in.

operating_inflowsRequiredstring

Operating cash that came in during the month, as a positive figure.

CashFlowSectionOut

NameTypeDescription
keyRequiredstring
linesRequiredarray of CashFlowLineOut
nameRequiredstring
totalRequiredstring

ConsolidatedLineOut

NameTypeDescription
amountsRequiredarray of string

Translated, one per set of books in entities order, on the line's natural side.

codeRequiredstring or null

The account code the line adds up across the books; null for an added line.

eliminationsRequiredstring

What eliminating intercompany balances took off the line.

keyRequiredstring or null

For a line consolidation adds rather than an account: earlier_earnings, net_income, translation_adjustment or intercompany_difference.

One of earlier_earnings, net_income, translation_adjustment, intercompany_difference
nameRequiredstring
totalRequiredstring

The amounts plus the eliminations: the consolidated figure.

typeRequiredstring

asset, liability, equity, income or expense.

EliminationOut

NameTypeDescription
descriptionRequiredstring
due_fromRequiredstring

What came off the due-from, translated.

due_toRequiredstring

What came off the due-to, translated.

transaction_dateRequiredstring (date)
transaction_idRequiredstring

The intercompany transaction.

ConsolidatedEntityOut

NameTypeDescription
average_rateRequiredstring

The mean rate over the period: what its income and expense are translated at.

closing_rateRequiredstring

One unit of its currency in the presenting currency on as_of: what its balance sheet is translated at. 1 for books in the presenting currency.

currencyRequiredstring

The currency the set of books keeps.

idRequiredstring

An id that starts with ent_.

nameRequiredstring

IncomeSectionOut

NameTypeDescription
groupsRequiredarray of IncomeGroupOut
keyRequiredstring
nameRequiredstring
totalRequiredstring

DepartmentSpendOut

NameTypeDescription
amountRequiredstring

Operating expenses naming this department itself.

codeRequiredstring

The department value's code, e.g. RD.

nameRequiredstring
parent_idRequiredstring or null

An id that starts with dimv_.

totalRequiredstring

This department and every department under it.

value_idRequiredstring

An id that starts with dimv_.

TaxReportLineOut

NameTypeDescription
accountsRequiredarray of TaxReportAccountOut
amountRequiredstring

Positive on the line's normal side: the year's activity, or its closing balance.

beginningRequiredstring

Schedule L only: the balance at the start of the year.

keyRequiredstring
labelRequiredstring
partRequiredstring

TrialBalanceRowOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

codeRequiredstring
creditRequiredstring
debitRequiredstring
nameRequiredstring
typeRequiredstring

UpcomingBillOut

NameTypeDescription
above_usualRequiredstring or null

How much a bill comes to over the vendor's usual bill, when it is at least 1.25× it: worth a look before it is paid.

amountRequiredstring

What is due, in the books' currency: what is still owed on a bill, or the vendor's usual bill.

bill_idRequiredstring or null

An id that starts with bill_.

bill_statusRequiredstring or null

The bill's status: draft or approved.

counterparty_idRequiredstring

The vendor.

counterparty_nameRequiredstring
due_onRequiredstring (date)

When its money is due: a bill's due date; for an expected one, the day it usually lands, plus the vendor's payment terms when it sends bills.

every_monthsRequiredinteger or null

Months between the vendor's bills, when it keeps a rhythm: 1, 3, 12.

kindRequiredstring

bill: a bill the books hold, and what is still owed on it. expected: one the vendor's billing rhythm says is coming, at its usual amount.

lateRequiredboolean

A bill past its due date and not paid, or an expected one whose usual day has passed without it.

logo_urlRequiredstring or null

The vendor's logo, when it has one.

usual_amountRequiredstring or null

When the vendor keeps a rhythm: for an expected bill, what its bill usually comes to; for a bill in, what that bill is measured against, the higher of the vendor's bills before it in its rhythm.

vendor_numberRequiredstring or null

The vendor's own number for the bill.

BalanceHistoryAccountOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

balancesRequiredarray of string

The account's balance at each point, in the order of points.

codeRequiredstring
nameRequiredstring

BalanceSheetLineOut

NameTypeDescription
account_idRequiredstring or null

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring

CashFlowLineOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring

IncomeGroupOut

NameTypeDescription
codeRequiredstring
linesRequiredarray of IncomeLineOut
nameRequiredstring
totalRequiredstring

TaxReportAccountOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
beginningRequiredstring

Schedule L: the balance the day before the year began.

codeRequiredstring
nameRequiredstring
sourceRequiredstring

IncomeLineOut

NameTypeDescription
account_idRequiredstring

An id that starts with gla_.

amountRequiredstring
codeRequiredstring
nameRequiredstring