income_statement
Read revenue, expenses and net income for a date window. Omitting both bounds includes all postings; select currency for a native-ledger view across currency changes.
What it shows
Revenue, expenses and net income over an optional effective-date window (omit both bounds for every posting). With an explicit currency, or when the window overlaps one functional-currency period, this returns one statement. Without a currency across an incorporation’s periods, it returns { presentationCurrency: null, segments: IncomeStatement[] }, one per ledger, and never sums ledgers.
Example MCP App view
The read-only example below uses illustrative demo data and the same report component as the MCP App. These are not your books or the result of the request example.
Inputs
Send the fixed kind and these parameters at the top level of the report request, not inside input.
Required means required within its containing object; an optional parent can be omitted.
| Field | Type | Required | Meaning and accepted values |
|---|---|---|---|
currency | string | No | Ledger currency (default: the functional currency active for the report period). Format: currency. |
from | string | No | Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day. A calendar date means midnight UTC at its start; an explicit timestamp keeps the stated instant. Format: moment. Example: "2026-09-01". |
until | string | No | End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment. A calendar date includes the whole UTC day (exclusive cutoff); an explicit timestamp keeps the stated instant. Format: moment. Example: "2026-09-30". |
window | string | No | Instead of from/until: all, YYYY, YYYY-Qn, YYYY-MM, or ytd / qtd / mtd (to the moment the report runs). |
Reading the result
Running this report does not change the books. Its description above distinguishes recorded-book summaries from previews based on supplied facts or assumptions. Interpret its totals, grouping, missing-data indicators and pagination using that description. Monetary amounts are integer strings in the reported unit; ratios and assumptions can be fractional numbers. An empty result is not evidence that the business had no activity.
The public OpenAPI contract does not enumerate this report’s result fields. Fetch GET /v1/reports for its live description and parameters, and inspect the returned JSON rather than assuming an output shape.
Example request
{
"kind": "income_statement",
"from": "2026-09-01",
"until": "2026-09-30"
}All reports · Operation and errors · Reusable schemas
Keep credentials out of prompts; rehearse writes only in a disposable sandbox.
Exact request schema
{
"type": "object",
"additionalProperties": false,
"properties": {
"kind": {
"const": "income_statement"
},
"currency": {
"description": "Ledger currency (default: the functional currency active for the report period).",
"type": "string",
"minLength": 1
},
"from": {
"description": "Start date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day.",
"type": "string",
"minLength": 1
},
"until": {
"description": "End date (YYYY-MM-DD) or UTC timestamp (RFC 3339). A date is a UTC day and includes that whole day, so September ends at 2026-09-30; a timestamp includes everything before that moment.",
"type": "string",
"minLength": 1
},
"window": {
"description": "Instead of from/until: all, YYYY, YYYY-Qn, YYYY-MM, or ytd / qtd / mtd (to the moment the report runs).",
"type": "string",
"minLength": 1
}
},
"required": [
"kind"
]
}