REST API
Expenses

Expenses

All routes under /api/v1/expenses require authentication.

Expense Categories

Category
Rent
Utilities
Salaries
Supplies
Transport
Marketing
Maintenance
Licences & permits
Insurance
Other

GET /expenses

List expenses with filtering and pagination.

Auth: Required

Query Parameters:

ParameterTypeDescription
searchstringSearch by title
categorystringFilter by category
payment_methodstringFilter by payment method
orderingstringdate, -date, amount, -amount
pageintPage number
page_sizeintItems per page

Response: Paginated expense list.


POST /expenses

Record a new expense.

Auth: Required

Request Body:

{
  "title": "January Rent",
  "category": "Rent",
  "amount": 350000,
  "payment_method": "Bank",
  "payment_reference": "Transfer ref 123",
  "notes": "Monthly shop rent",
  "receipt_url": "https://..."
}

Response: Expense object.


GET /expenses/summary

Get expense summary with totals by category.

Auth: Required

Response:

{
  "success": true,
  "data": {
    "total": 1250000,
    "by_category": {
      "Rent": 350000,
      "Utilities": 120000,
      "Salaries": 600000,
      "Supplies": 180000
    }
  }
}

GET /expenses/:id

Get a single expense.

Auth: Required


PATCH /expenses/:id

Update an expense. All fields optional.

Auth: Required


DELETE /expenses/:id

Delete an expense.

Auth: Required

Response (200): {"success": true}