Reports
Financial reports as JSON, CSV or PDF.
Paths are relative to https://evenbooks.org/api/v1. How keys, errors, paging and versions work is in the guide; the whole reference is also an OpenAPI 3.1 document.
Administrator key marks endpoints that need a key with the admin role, Write access those a read-only key can’t call, and Idempotent those that accept an idempotency key.
Get the balance sheet
/reports/balance-sheetWhat the business has (assets), what it owes (liabilities) and what is left for the owners (equity) at the end of asOf, from posted journal entries (accrual basis only). Profit is not closed into an equity account: earlier fiscal years show as retainedEarningsPriorYears and the fiscal year to date as currentYearEarnings, and both are part of totalEquity. difference (assets − liabilities − equity) is "0.00" when the books are consistent. Accounts with a zero balance are left out. compareAsOf adds a comparison column to the PDF only. format=csv has one row per account plus the profit and total rows.
Parameters
asOfstring · PlainDateStringquery · requiredcompareAsOfstring · PlainDateStringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
BalanceSheetDto
asOfstring · PlainDateStringcurrencystringassetsarray of ReportLineDtoliabilitiesarray of ReportLineDtoequityarray of ReportLineDtocurrentYearEarningsstring · DecimalStringretainedEarningsPriorYearsstring · DecimalStringtotalAssetsstring · DecimalStringtotalLiabilitiesstring · DecimalStringtotalEquitystring · DecimalStringdifferencestring · DecimalStringnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get income and expenses by category
/reports/categoryEach income and expense category’s total for from–to (both days included), with how many transactions touched it (count), and net income. basis=accrual (default) counts income when invoiced and expenses when billed; basis=cash counts them when money moved. Money still in the built-in Uncategorized accounts is listed and repeated in uncategorized, never hidden. Cash basis is refused (invalid_state) while imported history in the range still needs its cash amounts reviewed. compareFrom and compareTo add a comparison period to the PDF only.
Parameters
fromstring · PlainDateStringquery · requiredtostring · PlainDateStringquery · requiredbasisstring · BasisqueryOne of:
accrualcashcompareFromstring · PlainDateStringquerycompareTostring · PlainDateStringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
CategoryReportDto
basisstring · BasisOne of:
accrualcashfromstring · PlainDateStringtostring · PlainDateStringcurrencystringgroupsarray of objectShow 3 fields of each item
typestringOne of:
incomeexpenselinesarray of objectShow 5 fields of each item
accountIdstringcodestringnamestringamountstring · DecimalStringcountinteger
totalstring · DecimalString
uncategorizedobjectShow 2 fields
incomestring · DecimalStringexpensestring · DecimalString
netIncomestring · DecimalStringnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get the general ledger for one account
/reports/general-ledgerEvery posted change to one account from from to to (both days included), in date order, with the account’s balance after each line (running). Accrual basis only. Balances are in the account’s natural direction: positive means a debit balance for assets and expenses, a credit balance for liabilities, equity and income. opening, closing, totalDebit and totalCredit always cover the whole range; lines is one page (limit, default 500, at most 2,000). Pass nextCursor as cursor for the next page. format=csv and format=pdf return the whole range in one file: up to 50,000 lines as CSV, 10,000 as PDF. A longer range is refused with a validation error (details: lines, maxLines); ask for shorter ranges.
Parameters
accountIdstring (uuid)query · requiredfromstring · PlainDateStringquery · requiredtostring · PlainDateStringquery · requiredlimitintegerquerycursorstringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
GeneralLedgerDto
accountIdstringcodestringnamestringtypestring · AccountTypeOne of:
assetliabilityequityincomeexpensefromstring · PlainDateStringtostring · PlainDateStringcurrencystringopeningstring · DecimalStringlinesarray of GeneralLedgerLineDtolineCountintegerclosingstring · DecimalStringtotalDebitstring · DecimalStringtotalCreditstring · DecimalStringnextCursorstring or nullnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get unpaid invoices by age
/reports/outstanding-invoicesIssued invoices dated on or before asOf (default: today in the company’s time zone) that are still unpaid, by due date, with their balance due today, the days past due on asOf, and the aging bucket: current (not yet due), d1_30, d31_60, d61_90 and d90plus days past due. aging totals the balance per bucket. bucket (only one bucket) and group (invoice or customer rows) shape the PDF only.
Parameters
asOfstring · PlainDateStringquerybucketstring · AgingBucketqueryOne of:
currentd1_30d31_60d61_90d90plusgroupstringqueryOne of:
invoicecustomerformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
OutstandingInvoicesDto
asOfstring · PlainDateStringcurrencystringitemsarray of OutstandingInvoiceRowDtoagingobjectShow 5 fields
currentstring · DecimalStringd1_30string · DecimalStringd31_60string · DecimalStringd61_90string · DecimalStringd90plusstring · DecimalString
totalstring · DecimalStringnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get the profit and loss report
/reports/profit-and-lossIncome, expenses and net income (income − expenses; negative is a loss) for from–to, both days included, one line per category with a non-zero total. basis=accrual (default) counts income when invoiced and expenses when billed, whether or not money moved; basis=cash counts them when money moved (card purchases on the day charged) and adds salesTaxCollected, which is a liability, not income. Cash basis is refused (invalid_state) while imported history in the range still needs its cash amounts reviewed. Bank transactions not yet reviewed are not included; see GET /reports/unreviewed. compareFrom and compareTo add a comparison column to the PDF only.
Parameters
fromstring · PlainDateStringquery · requiredtostring · PlainDateStringquery · requiredbasisstring · BasisqueryOne of:
accrualcashcompareFromstring · PlainDateStringquerycompareTostring · PlainDateStringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
ProfitAndLossDto
basisstring · BasisOne of:
accrualcashfromstring · PlainDateStringtostring · PlainDateStringcurrencystringincomearray of ReportLineDtoexpensesarray of ReportLineDtototalIncomestring · DecimalStringtotalExpensesstring · DecimalStringnetIncomestring · DecimalStringsalesTaxCollectedstring · DecimalStringoptionalnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get the Schedule C summary for a tax year
/reports/schedule-cA summary for IRS Schedule C (Form 1040) for calendar year taxYear: each line’s total from the categories mapped to it for that year (see Tax form lines), categories with no line chosen yet (unmapped), and money still uncategorized with the line it currently lands on. grossReceipts is line 1 − line 2 + line 6, and tentativeProfit is gross receipts minus total expenses. basis defaults to cash; cash basis is refused (invalid_state) while imported history still needs its cash amounts reviewed. Meals are shown at 100%: the deduction limit is applied on the return. This is a worksheet, not a filing.
Parameters
taxYearintegerquery · requiredbasisstring · BasisqueryOne of:
accrualcashformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
ScheduleCSummaryDto
taxYearintegerbasisstring · BasisOne of:
accrualcashcurrencystringlinesarray of objectShow 6 fields of each item
codestringlabelstringpartstringOne of:
incomeexpenseotheramountstring · DecimalStringaccountsarray of ReportLineDtonotestringoptional
unmappedarray of ReportLineDtouncategorizedarray of objectShow 7 fields of each item
accountIdstringcodestringnamestringamountstring · DecimalStringtypestringOne of:
incomeexpenselineCodestring or nulllineLabelstring or null
grossReceiptsstring · DecimalStringtotalExpensesstring · DecimalStringtentativeProfitstring · DecimalStringnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
List every ledger line in a date range
/reports/transactionsPosted journal lines dated from to to (both days included), in date order, across all accounts (accrual basis). Narrow it to one account (accountId), one customer or vendor (contactId), one kind of record (sourceType), or lines whose entry or line memo contains q (case-insensitive). totalDebit, totalCredit and lineCount cover every matching line; rows is one page (limit, default 200, at most 1,000). Pass nextCursor as cursor for the next page. format=csv and format=pdf return every matching line in one file: up to 50,000 lines as CSV, 10,000 as PDF. More is refused with a validation error (details: lines, maxLines); ask for shorter ranges.
Parameters
fromstring · PlainDateStringquery · requiredtostring · PlainDateStringquery · requiredaccountIdstring (uuid)querycontactIdstring (uuid)querysourceTypestring · JournalSourceTypequery21 possible values
manualopening_balanceinvoiceinvoice_voidcredit_notecredit_note_voidpaymentpayment_voidallocationallocation_reversalrefundrefund_voidpurchasepurchase_voidtransferbank_categorizationreversaladjustmentprocessor_feeprocessor_payoutimportqstringquerylimitintegerquerycursorstringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
TransactionsReportDto
fromstring · PlainDateStringtostring · PlainDateStringcurrencystringrowsarray of TransactionsReportRowDtototalDebitstring · DecimalStringtotalCreditstring · DecimalStringlineCountintegernextCursorstring or nullnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Get the trial balance
/reports/trial-balanceEvery account with posted entries on or before asOf, with its balance at the end of that day in a debit or a credit column (accrual basis), by account number. totalDebit equals totalCredit for consistent books. asOf is required; to is accepted as an older name for it.
Parameters
asOfstring · PlainDateStringquerytostring · PlainDateStringqueryformatstringqueryjson(default),csv(a download) orpdf(a printable download).One of:
jsoncsvpdf
Response 200
TrialBalanceDto
asOfstring · PlainDateStringcurrencystringrowsarray of TrialBalanceRowDtototalDebitstring · DecimalStringtotalCreditstring · DecimalStringnotestring
Also available as CSV file (text/csv) or PDF file (application/pdf).
Errors 400 · 401 · 403 · 404 · 409 · 429
Count bank transactions not yet in reports
/reports/unreviewedHow many bank transactions dated from to to (both days included; without from, everything on or before to) are still waiting for review, and their money in and money out. Reports read only what is recorded, so these are missing from every report until they are categorized, matched or excluded. Call it with a report’s dates to warn that the report is incomplete.
Parameters
fromstring · PlainDateStringquerytostring · PlainDateStringquery · required
Response 200
PendingReviewSummaryDto
fromstring · PlainDateString or nulltostring · PlainDateStringcurrencystringcountintegermoneyInstring · DecimalStringmoneyOutstring · DecimalString
Errors 400 · 401 · 403 · 404 · 409 · 429
Schemas
The types these endpoints take or return, by name. Type names above link here.
AccountType
string
One of: asset liability equity income expense
AgingBucket
string
One of: current d1_30 d31_60 d61_90 d90plus
Basis
string
One of: accrual cash
DecimalString
decimal string
string
GeneralLedgerLineDto
entryIdstringentryNumberinteger or nulldatestring · PlainDateStringmemostringlineMemostring or nullsourceTypestring · JournalSourceType21 possible values
manualopening_balanceinvoiceinvoice_voidcredit_notecredit_note_voidpaymentpayment_voidallocationallocation_reversalrefundrefund_voidpurchasepurchase_voidtransferbank_categorizationreversaladjustmentprocessor_feeprocessor_payoutimportsourceIdstring or nullcontactIdstring or nulldebitstring · DecimalStringcreditstring · DecimalStringrunningstring · DecimalString
JournalSourceType
string
21 possible values
manual opening_balance invoice invoice_void credit_note credit_note_void payment payment_void allocation allocation_reversal refund refund_void purchase purchase_void transfer bank_categorization reversal adjustment processor_fee processor_payout import
OutstandingInvoiceRowDto
idstringnumberstringcontactIdstringcontactNamestringissueDatestring · PlainDateStringdueDatestring · PlainDateStringtotalstring · DecimalStringbalanceDuestring · DecimalStringdaysOverdueintegerbucketstring · AgingBucketOne of:
currentd1_30d31_60d61_90d90plus
PlainDateString
string
ReportLineDto
accountIdstringcodestringnamestringamountstring · DecimalString
TransactionsReportRowDto
entryIdstringentryNumberinteger or nulldatestring · PlainDateStringmemostringlineMemostring or nullsourceTypestring · JournalSourceType21 possible values
manualopening_balanceinvoiceinvoice_voidcredit_notecredit_note_voidpaymentpayment_voidallocationallocation_reversalrefundrefund_voidpurchasepurchase_voidtransferbank_categorizationreversaladjustmentprocessor_feeprocessor_payoutimportsourceIdstring or nullaccountIdstringaccountCodestringaccountNamestringcontactIdstring or nullcontactNamestring or nulldebitstring · DecimalStringcreditstring · DecimalString
TrialBalanceRowDto
accountIdstringcodestringnamestringtypestring · AccountTypeOne of:
assetliabilityequityincomeexpensefirstEntryDatestring · PlainDateStringdebitstring · DecimalStringcreditstring · DecimalString