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:
| Parameter | Type | Description |
|---|---|---|
search | string | Search by title |
category | string | Filter by category |
payment_method | string | Filter by payment method |
ordering | string | date, -date, amount, -amount |
page | int | Page number |
page_size | int | Items 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}