Reports & Analytics

Generate P&L, balance sheet, SA103 auto-fill, and interactive dashboard charts.

Available Reports

ReportDescriptionExport
Profit & LossIncome vs expenses for any periodPDF, CSV
Balance SheetAssets, liabilities, and equityPDF
SA103 Auto-FillSelf-employment supplement dataPDF
Transaction SummaryCategorised expense breakdownCSV
UC AssessmentUniversal Credit calculationsPDF

Dashboard Charts

Your dashboard includes 4 real-time visualisations:

Profit Trend

Line chart with filled area for net profit and dashed income line over time.

Income vs Expenses

Monthly stacked bar chart comparing incoming and outgoing money.

Expense Breakdown

Doughnut chart showing spending by HMRC category.

Source Breakdown

Transaction count and total by source (NatWest, PayPal, etc.).

Profit & Loss

The P&L report shows:

  • Total turnover - all business income
  • Expenses by HMRC category - mapped to SA103 boxes
  • Net profit - turnover minus total expenses
  • Tax estimate - based on current bands

Filter by date range, source account, or category.

API

JavaScript
// Get P&L report
const pnl = await $fetch('https://taxmtd.uk/api/reports/pnl', {
  params: { periodId: 1 }
})
console.log(`Revenue: £${pnl.totalIncome}, Expenses: £${pnl.totalExpenses}`)
console.log(`Net Profit: £${pnl.netProfit}`)

// Get SA103 data
const sa103 = await $fetch('https://taxmtd.uk/api/hmrc/sa103')
Python
# P&L report
res = requests.get(
    "https://taxmtd.uk/api/reports/pnl",
    params={"periodId": 1},
    cookies=session_cookies,
)
pnl = res.json()["data"]
print(f"Net Profit: £{pnl['netProfit']}")

# SA103 data
sa103 = requests.get(
    "https://taxmtd.uk/api/hmrc/sa103",
    cookies=session_cookies,
).json()["data"]
PHP
$pnl = Http::get('https://taxmtd.uk/api/reports/pnl', ['periodId' => 1])->json();
echo "Net Profit: £{$pnl['netProfit']}";
Rust
// P&L report
let pnl = client
    .get("https://taxmtd.uk/api/reports/pnl?periodId=1")
    .send().await?
    .json::<serde_json::Value>().await?;
println!("Net Profit: £{}", pnl["data"]["netProfit"]);

// SA103 data
let sa103 = client
    .get("https://taxmtd.uk/api/hmrc/sa103")
    .send().await?
    .json::<serde_json::Value>().await?;
cURL
# P&L report
curl "https://taxmtd.uk/api/reports/pnl?periodId=1"

# SA103 data
curl https://taxmtd.uk/api/hmrc/sa103