Profit and loss and insights
Read a profit and loss report and income and expense insights for a period or a tax year, grouped by category and by month.
These three reports read from your bookkeeping transactions. The profit and loss report gives totals and net profit. The income and expense insights add monthly figures and a check against your target.
Prerequisites
- A credential with
bookkeeping.service:read. - Transactions in the period. See Transactions and categories.
Choose the period
All three endpoints take the same query parameters.
| Parameter | Notes |
|---|---|
startDate, endDate | YYYY-MM-DD |
year | A tax year. Use it instead of startDate and endDate. |
Send either year or the two dates.
Profit and loss
Call GET /v3/finance/profit-and-loss.
curl "https://api.wingspan.app/v3/finance/profit-and-loss?year=2026" \
-H "Authorization: Bearer $WINGSPAN_TOKEN"// 200 OK (trimmed)
{
"startDate": "2026-01-01",
"endDate": "2026-12-31",
"totalIncome": 90000.00,
"totalExpenses": 12000.00,
"netProfit": 78000.00,
"incomeByCategory": [
{ "category": "Income", "amount": 90000.00 }
],
"expenseByCategory": [
{ "category": "Software", "amount": 1200.00, "scheduleCLineNumber": "18" }
]
}The category names and amounts here only show the field layout. Each incomeByCategory and expenseByCategory entry has category, amount, and, where it maps, scheduleCLineNumber.
Income insights
Call GET /v3/finance/insights/income. The response has:
totalIncomeandaverageMonthlyIncome.incomeByMonth[], each withmonthandamount.incomeBySource[], each withcategory,amount, andscheduleCLineNumber.catchUp, withtargetAmount,currentAmount,difference, andisOnTrack.
Expense insights
Call GET /v3/finance/insights/expenses. The response has totalExpenses, averageMonthlyExpenses, expenseByMonth[], expenseByCategory[], and the same catchUp object.
Errors
| Status | Meaning |
|---|---|
403 | Missing bookkeeping.service:read |
503 | The reporting service returned no data. Retry. |
Related pages
Updated about 1 hour ago