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

get/reports/balance-sheet

What 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 · required
  • compareAsOfstring · PlainDateStringquery
  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

BalanceSheetDto

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

get/reports/category

Each 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 · required
  • tostring · PlainDateStringquery · required
  • basisstring · Basisquery

    One of: accrual cash

    default "accrual"

  • compareFromstring · PlainDateStringquery
  • compareTostring · PlainDateStringquery
  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

CategoryReportDto

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

get/reports/general-ledger

Every 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 · required
  • fromstring · PlainDateStringquery · required
  • tostring · PlainDateStringquery · required
  • limitintegerquery

    1–2000

  • cursorstringquery

    pattern ^\d{1,9}$

  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

GeneralLedgerDto

Also available as CSV file (text/csv) or PDF file (application/pdf).

Errors 400 · 401 · 403 · 404 · 409 · 429

Get unpaid invoices by age

get/reports/outstanding-invoices

Issued 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 · PlainDateStringquery
  • bucketstring · AgingBucketquery

    One of: current d1_30 d31_60 d61_90 d90plus

  • groupstringquery

    One of: invoice customer

  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

OutstandingInvoicesDto

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

get/reports/profit-and-loss

Income, 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 · required
  • tostring · PlainDateStringquery · required
  • basisstring · Basisquery

    One of: accrual cash

    default "accrual"

  • compareFromstring · PlainDateStringquery
  • compareTostring · PlainDateStringquery
  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

ProfitAndLossDto

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

get/reports/schedule-c

A 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 · required

    2000–2100

  • basisstring · Basisquery

    One of: accrual cash

    default "cash"

  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

ScheduleCSummaryDto

  • taxYearinteger
  • basisstring · Basis

    One of: accrual cash

  • currencystring
  • linesarray of object
    Show 6 fields of each item
    • codestring
    • labelstring
    • partstring

      One of: income expense other

    • amountstring · DecimalString
    • accountsarray of ReportLineDto
    • notestringoptional
  • unmappedarray of ReportLineDto
  • uncategorizedarray of object
    Show 7 fields of each item
    • accountIdstring
    • codestring
    • namestring
    • amountstring · DecimalString
    • typestring

      One of: income expense

    • lineCodestring or null
    • lineLabelstring or null
  • grossReceiptsstring · DecimalString
  • totalExpensesstring · DecimalString
  • tentativeProfitstring · DecimalString
  • notestring

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

get/reports/transactions

Posted 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 · required
  • tostring · PlainDateStringquery · required
  • accountIdstring (uuid)query
  • contactIdstring (uuid)query
  • sourceTypestring · JournalSourceTypequery
    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

  • qstringquery

    up to 200 characters

  • limitintegerquery

    1–1000

  • cursorstringquery

    pattern ^\d{1,9}$

  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

TransactionsReportDto

Also available as CSV file (text/csv) or PDF file (application/pdf).

Errors 400 · 401 · 403 · 404 · 409 · 429

Get the trial balance

get/reports/trial-balance

Every 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 · PlainDateStringquery
  • tostring · PlainDateStringquery
  • formatstringquery

    json (default), csv (a download) or pdf (a printable download).

    One of: json csv pdf

    default "json"

Response 200

TrialBalanceDto

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

get/reports/unreviewed

How 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

Response 200

PendingReviewSummaryDto

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

up to 32 characters · pattern ^-?\d+(\.\d+)?$

GeneralLedgerLineDto

  • entryIdstring
  • entryNumberinteger or null
  • datestring · PlainDateString
  • memostring
  • lineMemostring or null
  • sourceTypestring · JournalSourceType
    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

  • sourceIdstring or null
  • contactIdstring or null
  • debitstring · DecimalString
  • creditstring · DecimalString
  • runningstring · 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

PlainDateString

string

pattern ^\d{4}-\d{2}-\d{2}$

ReportLineDto

TransactionsReportRowDto

  • entryIdstring
  • entryNumberinteger or null
  • datestring · PlainDateString
  • memostring
  • lineMemostring or null
  • sourceTypestring · JournalSourceType
    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

  • sourceIdstring or null
  • accountIdstring
  • accountCodestring
  • accountNamestring
  • contactIdstring or null
  • contactNamestring or null
  • debitstring · DecimalString
  • creditstring · DecimalString

TrialBalanceRowDto