Source: https://billingmart.com/developers/api/reports # Reports and exports Ageing, income, tax, settlement and reconciliation, computed from stored amounts, plus the accounting export. [All sections](https://billingmart.com/developers/api) [Authentication](https://billingmart.com/developers/authentication) **On this page** - GET Ar ageing - GET Ap ageing - GET Income - GET Tax categories - GET List - POST Suggest bills - POST Suggest expenses - POST Suggest invoices - GET Tax summary - GET Statement - GET Client statement - GET Statement pdf - GET Client statement pdf - GET Settlement - GET Payment links - GET Collections - GET Cashflow - GET Accounting - GET Reconciliation - POST Collections narrative - OBJ ArAgeingReport - OBJ ApAgeingReport - OBJ IncomeReport - OBJ TaxCategoryReport - OBJ TaxCategoryList - OBJ TaxSummary - OBJ Statement - OBJ ClientStatement - OBJ SettlementReport - OBJ PaymentLinkReport - OBJ CollectionsInsights - OBJ CashForecast - OBJ AccountingExport - OBJ ReconciliationReport On this page - GET Ar ageing - GET Ap ageing - GET Income - GET Tax categories - GET List - POST Suggest bills - POST Suggest expenses - POST Suggest invoices - GET Tax summary - GET Statement - GET Client statement - GET Statement pdf - GET Client statement pdf - GET Settlement - GET Payment links - GET Collections - GET Cashflow - GET Accounting - GET Reconciliation - POST Collections narrative - OBJ ArAgeingReport - OBJ ApAgeingReport - OBJ IncomeReport - OBJ TaxCategoryReport - OBJ TaxCategoryList - OBJ TaxSummary - OBJ Statement - OBJ ClientStatement - OBJ SettlementReport - OBJ PaymentLinkReport - OBJ CollectionsInsights - OBJ CashForecast - OBJ AccountingExport - OBJ ReconciliationReport reports ## Ar ageing GET `/v1/reports/ar-ageing` Receivables by age bucket, per currency, as at a date. Scope `reports:read` Effect Read only MCP tool `ar_ageing_report` Retries Safe to repeat ### Parameters Ar ageing parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `asOf`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`ArAgeingReport`](https://billingmart.com/developers/api/reports#object-ArAgeingReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/ar-ageing" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Ap ageing GET `/v1/reports/ap-ageing` Payables by age bucket, per currency, as at a date. With jobId, the share of each bill charged to that work record. Scope `reports:read` Effect Read only MCP tool `ap_ageing_report` Retries Safe to repeat ### Parameters Ap ageing parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `asOf`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `jobId`optional | query | `id` | — | ### Returns `data`: [`ApAgeingReport`](https://billingmart.com/developers/api/reports#object-ApAgeingReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/ap-ageing" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Income GET `/v1/reports/income` Income and expenditure over a period, per currency. Scope `reports:read` Effect Read only MCP tool `income_report` Retries Safe to repeat ### Parameters Income parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`IncomeReport`](https://billingmart.com/developers/api/reports#object-IncomeReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/income" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Tax categories GET `/v1/reports/tax-categories` Totals by tax category for a period, per currency, on a cash (default) or accrual basis, reconciled to the income report. A suggestion aid, not tax advice. Scope `reports:read` Effect Read only MCP tool `tax_category_report` Retries Safe to repeat ### Parameters Tax categories parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `businessId`optional | query | `id` | — | | `basis`optional | query | `enum` | One of `cash`, `accrual` | ### Returns `data`: [`TaxCategoryReport`](https://billingmart.com/developers/api/reports#object-TaxCategoryReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/tax-categories" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` tax categories ## List GET `/v1/tax-categories` The tax categories: the built-in ones (code, direction, label, form line) and the workspace’s own, with their parent. Scope `reports:read` Effect Read only MCP tool `list_tax_categories` Retries Safe to repeat ### Returns `data`: [`TaxCategoryList`](https://billingmart.com/developers/api/reports#object-TaxCategoryList) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/tax-categories" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` tax categories ## Suggest bills POST `/v1/tax-categories/bills/suggest` Suggest tax categories for up to 25 bills. Drafts: a person confirms. Scope `bills:write` Effect Writes a draft or record MCP tool `suggest_bill_tax_categories` Retries Send an Idempotency-Key; a repeat replays the stored answer for 24 hours ### Request body JSON. Money is an integer count of minor units beside its currency; quantities are thousandths. Suggest bills request body | Field | Type | Notes | | --- | --- | --- | | `recordIds`required | `id[]` | up to 25 items · at least 1 | ### Returns `data`: `object` Errors this route can answer besides the shared ones: `AI_CREDITS_EXHAUSTED` , `AI_DISABLED` . Example request Sample ``` curl -X POST "https://api.billingmart.com/v1/tax-categories/bills/suggest" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"recordIds":[]}' ``` tax categories ## Suggest expenses POST `/v1/tax-categories/expenses/suggest` Suggest tax categories for up to 25 expenses. Drafts: a person confirms. Scope `expenses:write` Effect Writes a draft or record MCP tool `suggest_expense_tax_categories` Retries Send an Idempotency-Key; a repeat replays the stored answer for 24 hours ### Request body JSON. Money is an integer count of minor units beside its currency; quantities are thousandths. Suggest expenses request body | Field | Type | Notes | | --- | --- | --- | | `recordIds`required | `id[]` | up to 25 items · at least 1 | ### Returns `data`: `object` Errors this route can answer besides the shared ones: `AI_CREDITS_EXHAUSTED` , `AI_DISABLED` . Example request Sample ``` curl -X POST "https://api.billingmart.com/v1/tax-categories/expenses/suggest" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"recordIds":[]}' ``` tax categories ## Suggest invoices POST `/v1/tax-categories/invoices/suggest` Suggest tax categories for up to 25 issued invoices. Drafts: a person confirms. Scope `invoices:write` Effect Writes a draft or record MCP tool `suggest_invoice_tax_categories` Retries Send an Idempotency-Key; a repeat replays the stored answer for 24 hours ### Request body JSON. Money is an integer count of minor units beside its currency; quantities are thousandths. Suggest invoices request body | Field | Type | Notes | | --- | --- | --- | | `recordIds`required | `id[]` | up to 25 items · at least 1 | ### Returns `data`: `object` Errors this route can answer besides the shared ones: `AI_CREDITS_EXHAUSTED` , `AI_DISABLED` . Example request Sample ``` curl -X POST "https://api.billingmart.com/v1/tax-categories/invoices/suggest" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" \ -H "Content-Type: application/json" \ -d '{"recordIds":[]}' ``` reports ## Tax summary GET `/v1/reports/tax-summary` Tax charged and reclaimable over a period, per currency. Scope `reports:read` Effect Read only MCP tool `tax_summary_report` Retries Safe to repeat ### Parameters Tax summary parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`TaxSummary`](https://billingmart.com/developers/api/reports#object-TaxSummary) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/tax-summary" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Statement GET `/v1/reports/statement` The tenant statement: opening, movements and closing per currency. Scope `reports:read` Effect Read only MCP tool `statement_report` Retries Safe to repeat ### Parameters Statement parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`Statement`](https://billingmart.com/developers/api/reports#object-Statement) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/statement" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Client statement GET `/v1/reports/clients/{clientId}/statement` One client’s statement over a period. Scope `reports:read` Effect Read only MCP tool `client_statement` Retries Safe to repeat ### Parameters Client statement parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `clientId`required | path | `id` | — | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`ClientStatement`](https://billingmart.com/developers/api/reports#object-ClientStatement) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/clients/{clientId}/statement" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Statement pdf GET `/v1/reports/statement/pdf` Render the tenant statement for a year or a month, in one currency, and return a short-lived signed URL. Scope `reports:read` Effect Read only MCP tool `get_statement_pdf` Retries Safe to repeat ### Parameters Statement pdf parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `year`required | query | `integer` | min 2000 · max 2100 | | `month`optional | query | `integer` | min 1 · max 12 | | `currency`required | query | `Currency` | — | | `businessId`optional | query | `id` | — | ### Returns `data`: [`PdfPreview`](https://billingmart.com/developers/api/invoices#object-PdfPreview) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/statement/pdf" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Client statement pdf GET `/v1/reports/clients/{clientId}/statement/pdf` Render one client’s statement for a period, in one currency, and return a short-lived signed URL. Scope `reports:read` Effect Read only MCP tool `get_client_statement_pdf` Retries Safe to repeat ### Parameters Client statement pdf parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `clientId`required | path | `id` | — | | `year`required | query | `integer` | min 2000 · max 2100 | | `month`optional | query | `integer` | min 1 · max 12 | | `currency`required | query | `Currency` | — | ### Returns `data`: [`PdfPreview`](https://billingmart.com/developers/api/invoices#object-PdfPreview) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/clients/{clientId}/statement/pdf" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Settlement GET `/v1/reports/settlement` What settled and when, grouped by the gateway’s own settlement date, with unsettled payments named. Scope `reports:read` Effect Read only MCP tool `settlement_report` Retries Safe to repeat ### Parameters Settlement parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`SettlementReport`](https://billingmart.com/developers/api/reports#object-SettlementReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/settlement" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Payment links GET `/v1/reports/payment-links` What payment links took in a window, by link and payment status, with totals per currency and per link. Scope `reports:read` Effect Read only MCP tool `payment_link_report` Retries Safe to repeat ### Parameters Payment links parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `from`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`required | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `paymentLinkId`optional | query | `id` | — | | `status`optional | query | `enum` | One of `pending`, `processing`, `authorized`, `succeeded`, `declined`, `failed`, `voided`, `refunded`, `returned` | ### Returns `data`: [`PaymentLinkReport`](https://billingmart.com/developers/api/reports#object-PaymentLinkReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/payment-links" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` insights ## Collections GET `/v1/insights/collections` Predicted pay date and late-risk band per client and invoice, as at a date. Scope `reports:read` Effect Read only MCP tool `collections_insights` Retries Safe to repeat ### Parameters Collections parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `asOf`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`CollectionsInsights`](https://billingmart.com/developers/api/reports#object-CollectionsInsights) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/insights/collections" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` insights ## Cashflow GET `/v1/insights/cashflow` A 30/60/90-day cash forecast per currency, with a low and a high around each figure. Scope `reports:read` Effect Read only MCP tool `cash_forecast` Retries Safe to repeat ### Parameters Cashflow parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `asOf`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`CashForecast`](https://billingmart.com/developers/api/reports#object-CashForecast) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/insights/cashflow" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` exports ## Accounting GET `/v1/exports/accounting` Dated records for a window (at most 366 days, 5 000 rows): invoice lines, invoices, estimates, payments, the receivable ledger (the statement, signed by effect on what is owed), expenditure, bills, bill lines and bill payments; the client and vendor directories, and receivable and payable ageing (one row per open invoice or bill) as of a day. Amounts are exact decimal strings with the currency on every row. Scope `reports:read` Effect Read only MCP tool `accounting_export` Retries Safe to repeat ### Parameters Accounting parameters | Name | In | Type | Notes | | --- | --- | --- | --- | | `dataset`required | query | `enum` | One of `invoiceLines`, `ledger`, `expenditure`, `invoices`, `estimates`, `payments`, `bills`, `billLines`, `billPayments`, `clients`, `vendors`, `arAgeing`, `apAgeing` | | `from`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | | `to`optional | query | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: [`AccountingExport`](https://billingmart.com/developers/api/reports#object-AccountingExport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/exports/accounting" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` reports ## Reconciliation GET `/v1/reports/reconciliation` Do the books agree: the ledger against every invoice’s settled side, and the cash movements. The same computation the console runs. Scope `reports:read` Effect Read only MCP tool `reconciliation_report` Retries Safe to repeat ### Returns `data`: [`ReconciliationReport`](https://billingmart.com/developers/api/reports#object-ReconciliationReport) Example request Sample ``` curl -X GET "https://api.billingmart.com/v1/reports/reconciliation" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" ``` insights ## Collections narrative POST `/v1/insights/collections/narrative` A plain-language explanation of the collections figures. Every figure in it is filled in by the server from the computed insights, never written by the model. Scope `reports:read` Effect Read only MCP tool `explain_collections` Retries Send an Idempotency-Key; a repeat replays the stored answer for 24 hours ### Request body JSON. Money is an integer count of minor units beside its currency; quantities are thousandths. Collections narrative request body | Field | Type | Notes | | --- | --- | --- | | `asOf`optional | `string` | matches `^\d{4}-\d{2}-\d{2}$` | ### Returns `data`: `object` Errors this route can answer besides the shared ones: `AI_DISABLED` , `AI_CAP_REACHED` , `AI_CREDITS_EXHAUSTED` . Example request Sample ``` curl -X POST "https://api.billingmart.com/v1/insights/collections/narrative" \ -H "Authorization: Bearer $BILLINGMART_API_KEY" \ -H "Idempotency-Key: $(uuidgen)" ``` Object ## ArAgeingReport ArAgeingReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## ApAgeingReport ApAgeingReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## IncomeReport IncomeReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## TaxCategoryReport TaxCategoryReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## TaxCategoryList TaxCategoryList is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## TaxSummary TaxSummary is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## Statement Statement is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## ClientStatement ClientStatement is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## SettlementReport SettlementReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## PaymentLinkReport PaymentLinkReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## CollectionsInsights CollectionsInsights is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## CashForecast CashForecast is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## AccountingExport AccountingExport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Object ## ReconciliationReport ReconciliationReport is computed by the server for this request, not a stored document, so no contract describes it. Its fields are the TypeScript type of the same name that the handler returns. Next section ## Templates and pay themes How an invoice and its pay page look. Drafts only; publishing is an approved action. [Continue to Templates and pay themes →](https://billingmart.com/developers/api/templates) ## Try it against your sandbox Create a bmk_test_ key in the console. It can only reach your sandbox workspace. [Start free](https://app.billingmart.com/sign-up) [All sections](https://billingmart.com/developers/api) --- This is the Markdown copy of https://billingmart.com/developers/api/reports. Live plans, prices and limits are published as JSON at https://billingmart.com/plans.json and https://billingmart.com/agent-info.json.