More Features
Reports
See who owes you and for how long, revenue per month, tax collected and payments received, filtered and exported to CSV or PDF.
Coming the week of 25 January 2027
This feature ships in the week of 25 January 2027. This page describes how it will work; details can change before release.
Reports turn your invoices, credit notes and payments into the numbers you need to run the business and to hand to your accountant: who owes you and for how long, how much you invoiced and collected each month, the tax you collected, and which payment methods your clients used. Reports are included on every plan, Free and Team. Each report is also an API call and an MCP tool, so your own code or your AI assistant gets exactly the same figures as the screen.
The reports
| Report | What it shows | Report name |
|---|---|---|
| Aged receivables | Who owes you and for how long. Open balances grouped Current, 1-30, 31-60, 61-90 and 90+ days past due, per client, with totals. | aged-receivables |
| Outstanding by client | The open balance of each client. | outstanding-by-client |
| Client statement | For one client and a date range: invoices, credit notes and payments with a running balance. Ready to send to the client. | client-statement |
| Revenue | Amounts invoiced and paid per month. | revenue |
| Tax collected | Tax per tax rate and period, net of credit notes. Useful for your tax return. | tax-collected |
| Payments received | Payments per payment method (Stripe, bank transfer and so on) and month. | payments-received |
Filters
Every report takes the same filters:
- Business: one business, or every business you can reach.
- Client: one client.
- Date range: from and to.
- Currency: limit the report to one currency.
Your filters change only the view. The numbers come from the same documents and payments, so a CSV or PDF export of a filtered report shows exactly the figures on screen.
Several currencies
If you invoice in more than one currency, amounts are shown per currency, plus a total in the business currency. That total uses the exchange rate frozen on each document when it was issued, not today's rate, so last year's revenue does not change when rates move.
What counts
- Credit notes reduce an invoice's balance, and tax collected is shown net of credit notes, so reports show the position after corrections.
- A payment counts once it is recorded: from a verified payment-provider event, or a payment recorded by a person. A browser redirect after checkout never counts as a payment.
- Each instalment of a payment schedule has its own due date.
View a report in the web app
Open Reports
Reports is in the app sidebar.
Pick a report
For example Aged receivables to see overdue balances, or Client statement for one client.
Set the filters
Choose the business, client, date range and currency. The report updates as you change them.
Export
Download the report as CSV for a spreadsheet or your accountant, or as PDF to share or send. Both give the same numbers as the screen.
A client statement as PDF is a quick way to show a client everything open on their account in one document. Clients with portal access can also see their own statement in the client portal.
Reports through the API
Each report is a GET request. Get a report takes the report name in the path; aged receivables also has its own endpoint, Get aged receivables. Filters are query parameters: business_id, client_id, from, to, currency and format.
curl "https://api.freeinvoiceautomation.com/v1/reports/aged-receivables?business_id=0193f2a1-7c4e-7b9a-9f10-3c2d1e0a4b51" \
-H "Authorization: Bearer $FIA_API_KEY"format is json (the default), csv or pdf. Asking for csv or pdf is an export (Export a report) and needs the reports.export permission. Money in JSON reports follows the usual rule: strings of integer minor units with a currency, so "125000" with "currency": "USD" is 1,250.00 USD. See Money and currencies.
With your AI assistant
Two MCP tools read reports: get_aged_receivables and get_report (with a report name). Both are read-only, so your assistant can call them without a confirmation step. Ask in plain language:
Which clients owe me money for more than 60 days?
How much tax did I collect between January and March 2027?The assistant gets the same numbers as the Reports screen. See the MCP tool reference.
Rules and limits
- Read-only. Reports never change your data.
- Your scope only. A member who can reach only some businesses sees only those businesses in every report.
- Exact maths. All totals are computed from integer minor units by the same money code that computes invoice totals, so a report total always matches the documents it lists.
- Not tax filing. Tax collected is a figure to give your accountant. Free Invoice Automation does not file tax returns.
- Full accounting reports (trial balance, profit and loss, balance sheet, general ledger) belong to the accounting ledger.
Errors
| Code | When |
|---|---|
validation_failed | An unknown report name, a bad date or an invalid filter value. |
permission_denied | Your role lacks reports.view, or reports.export for CSV or PDF. |
business_out_of_scope | You asked for a business you cannot reach. |
not_found | The client id does not exist in your account. |
Permissions
| Action | Permission key | Default roles |
|---|---|---|
| View reports | reports.view | Owner, Admin, Editor, Viewer, Accountant |
| Export to CSV or PDF | reports.export | Owner, Admin, Editor, Accountant |