Expensicat
API Reference

Metrics

GET
/v1/metrics/profit-loss

Get monthly profit/loss breakdown

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

start_date*string

Start date (YYYY-MM-DD)

end_date*string

End date (YYYY-MM-DD)

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/profit-loss?start_date=string&end_date=string"
{  "data": [    {      "period": "string",      "total_revenue": 0,      "total_expenses": 0,      "net_profit_loss": 0    }  ]}
GET
/v1/metrics/cash-flow

Get monthly cash flow by category type (operating/investing/financing)

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

start_date*string

Start date (YYYY-MM-DD)

end_date*string

End date (YYYY-MM-DD)

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/cash-flow?start_date=string&end_date=string"
{  "data": [    {      "period": "string",      "operating_cash_flow": 0,      "investing_cash_flow": 0,      "financing_cash_flow": 0,      "net_cash_flow": 0    }  ]}
GET
/v1/metrics/cash-projection

Get daily cash projection based on unpaid invoices and recurring patterns

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

days_ahead?|

Number of days ahead for projection

Default90

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/cash-projection"
{  "data": [    {      "projection_date": "string",      "expected_inflows": 0,      "expected_outflows": 0    }  ]}
GET
/v1/metrics/invoice-aging

Get outstanding invoice amounts grouped by aging buckets

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/invoice-aging"
{  "data": {    "total_outstanding": 0,    "invoice_count": 0,    "current_amount": 0,    "overdue_0_to_30": 0,    "overdue_31_to_60": 0,    "overdue_60_plus": 0,    "expected_14_days": 0,    "expected_30_days": 0,    "expected_60_days": 0  }}
GET
/v1/metrics/top-categories

Get spending grouped by category for the date range

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

start_date*string

Start date (YYYY-MM-DD)

end_date*string

End date (YYYY-MM-DD)

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/top-categories?start_date=string&end_date=string"
{  "data": [    {      "category_id": "string",      "category_name": "string",      "category_slug": "string",      "category_color": "string",      "total_amount": 0,      "transaction_count": 0    }  ]}
GET
/v1/metrics/spend-variance

Get spending variance by category compared to budget and last month

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

month*string

Month (YYYY-MM-DD, first day of month)

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/spend-variance?month=string"
{  "data": [    {      "category_id": "string",      "category_name": "string",      "category_slug": "string",      "category_color": "string",      "actual_spend": 0,      "budget_amount": 0,      "variance": 0,      "variance_pct": 0,      "last_month_spend": 0,      "mom_change": 0,      "mom_change_pct": 0,      "is_over_budget": true,      "is_anomaly": true    }  ]}
GET
/v1/metrics/cash-events

Get upcoming cash events (invoices, recurring transactions, scheduled invoices)

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Query Parameters

start_date*string

Start date (YYYY-MM-DD)

end_date*string

End date (YYYY-MM-DD)

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/cash-events?start_date=string&end_date=string"
{  "data": [    {      "event_id": "string",      "organization_id": "string",      "event_date": "string",      "direction": "inflow",      "amount": 0,      "currency": "string",      "type": "string",      "reference_table": "string",      "reference_id": "string",      "probability": 0,      "description": "string",      "metadata": {        "property1": null,        "property2": null      }    }  ]}
GET
/v1/metrics/recurring-series

Get detected recurring transaction patterns

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/recurring-series"
{  "data": [    {      "series_id": "string",      "organization_id": "string",      "counterparty_name": "string",      "direction": "inflow",      "average_amount": 0,      "currency": "string",      "frequency": "string",      "category_id": "string",      "category_name": "string",      "last_seen_date": "string",      "next_expected_date": "string",      "status": "active",      "transaction_count": 0    }  ]}
GET
/v1/metrics/financial-snapshot

Get financial overview including cash balance, burn rate, and runway

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/financial-snapshot"
{  "data": {    "cash_balance": 0,    "burn_rate": 0,    "monthly_revenue": 0,    "recurring_monthly_revenue": 0,    "currency": "string",    "runway_months": 0  }}
GET
/v1/metrics/recent-transactions

Get most recent transactions with category info

Authorization

bearerAuth
AuthorizationBearer <token>

Session JWT or OAuth2 access token

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/metrics/recent-transactions"
{  "data": [    {      "id": "string",      "booking_date": "string",      "amount": 0,      "base_amount": 0,      "currency": "string",      "description": "string",      "name": "string",      "category_id": "string",      "category_name": "string",      "category_slug": "string",      "category_color": "string"    }  ]}