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

Choose the period

All three endpoints take the same query parameters.

ParameterNotes
startDate, endDateYYYY-MM-DD
yearA 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:

  • totalIncome and averageMonthlyIncome.
  • incomeByMonth[], each with month and amount.
  • incomeBySource[], each with category, amount, and scheduleCLineNumber.
  • catchUp, with targetAmount, currentAmount, difference, and isOnTrack.

Expense insights

Call GET /v3/finance/insights/expenses. The response has totalExpenses, averageMonthlyExpenses, expenseByMonth[], expenseByCategory[], and the same catchUp object.

Errors

StatusMeaning
403Missing bookkeeping.service:read
503The reporting service returned no data. Retry.

Related pages


Did this page help you?