Skip to content

Reports and exports

Explore here

Reports and exports

Ageing, income, tax, settlement and reconciliation, computed from stored amounts, plus the accounting export.

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
NameInTypeNotes
asOfoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: ArAgeingReport

Example requestSample
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
NameInTypeNotes
asOfoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$
jobIdoptionalqueryid—

Returns

data: ApAgeingReport

Example requestSample
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
NameInTypeNotes
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: IncomeReport

Example requestSample
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
NameInTypeNotes
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
businessIdoptionalqueryid—
basisoptionalqueryenumOne of cash, accrual

Returns

data: TaxCategoryReport

Example requestSample
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

Example requestSample
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
FieldTypeNotes
recordIdsrequiredid[]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 requestSample
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
FieldTypeNotes
recordIdsrequiredid[]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 requestSample
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
FieldTypeNotes
recordIdsrequiredid[]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 requestSample
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
NameInTypeNotes
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: TaxSummary

Example requestSample
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
NameInTypeNotes
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: Statement

Example requestSample
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
NameInTypeNotes
clientIdrequiredpathid—
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: ClientStatement

Example requestSample
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
NameInTypeNotes
yearrequiredqueryintegermin 2000 · max 2100
monthoptionalqueryintegermin 1 · max 12
currencyrequiredqueryCurrency—
businessIdoptionalqueryid—

Returns

data: PdfPreview

Example requestSample
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
NameInTypeNotes
clientIdrequiredpathid—
yearrequiredqueryintegermin 2000 · max 2100
monthoptionalqueryintegermin 1 · max 12
currencyrequiredqueryCurrency—

Returns

data: PdfPreview

Example requestSample
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
NameInTypeNotes
fromrequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
torequiredquerystringmatches ^\d{4}-\d{2}-\d{2}$
statusoptionalqueryenumOne of pending, processing, authorized, succeeded, declined, failed, voided, refunded, returned
methodoptionalqueryenumOne of card, ach, cash, check, bankTransfer, other
clientIdoptionalqueryid—
businessIdoptionalqueryid—
qoptionalquerystringup to 80 chars
settledoptionalqueryenumOne of settled, pending
dayoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: SettlementReport

Example requestSample
curl -X GET "https://api.billingmart.com/v1/reports/settlement" \
  -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
NameInTypeNotes
asOfoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: CollectionsInsights

Example requestSample
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
NameInTypeNotes
asOfoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: CashForecast

Example requestSample
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
NameInTypeNotes
datasetrequiredqueryenumOne of invoiceLines, ledger, expenditure, invoices, estimates, payments, bills, billLines, billPayments, clients, vendors, arAgeing, apAgeing
fromoptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$
tooptionalquerystringmatches ^\d{4}-\d{2}-\d{2}$

Returns

data: AccountingExport

Example requestSample
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

Example requestSample
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
FieldTypeNotes
asOfoptionalstringmatches ^\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 requestSample
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 →

Try it against your sandbox

Create a bmk_test_ key in the console. It can only reach your sandbox workspace.

We use Google Analytics on our website by default to understand visits. Choose Decline to turn it off; you can change this at any time on the Cookies page. We never send Google your name, email or account. Cookie policy