Create and manage invoices for your clients. Supports Belgian VAT compliance and automatic invoice numbering.
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"invoiceNumber": "INV-2026-0001",
"invoiceDate": "2026-01-15",
"dueDate": "2026-02-15",
"caseId": "case-uuid-here",
"contactId": "contact-uuid-here",
"subtotal": 1500.00,
"vatAmount": 315.00,
"total": 1815.00,
"status": "sent",
"firmId": "firm-uuid-here",
"createdAt": "2026-01-15T10:00:00Z"
}
| Field | Type | Description |
|---|---|---|
| id | string | Unique identifier (UUID) |
| invoiceNumber | string | Auto-generated invoice number |
| invoiceDate | date | Invoice issue date |
| dueDate | date | Payment due date |
| caseId | string | Associated case (optional) |
| contactId | string | Client to invoice |
| subtotal | decimal | Amount before VAT |
| vatAmount | decimal | VAT amount |
| total | decimal | Total including VAT |
| status | string | draft, sent, paid, overdue, void |
GET /api/invoices
| Parameter | Type | Description |
|---|---|---|
| status | string | Filter by status (draft, sent, paid) |
GET /api/invoices?status=sent
Response:
{
"success": true,
"data": [
{
"id": "...",
"invoiceNumber": "INV-2026-0001",
"total": 1815.00,
"status": "sent",
...
}
]
}
GET /api/invoices/{id}
POST /api/invoices
Invoice number is auto-generated.
{
"invoiceDate": "2026-01-15",
"dueDate": "2026-02-15",
"caseId": "case-uuid-here",
"contactId": "contact-uuid-here",
"subtotal": 1500.00,
"vatAmount": 315.00,
"total": 1815.00,
"status": "draft"
}
{
"success": true,
"data": {
"id": "newly-generated-uuid",
"invoiceNumber": "INV-2026-0002",
...
}
}
PUT /api/invoices/{id}
{
"invoiceDate": "2026-01-15",
"dueDate": "2026-02-28",
"subtotal": 1600.00,
"vatAmount": 336.00,
"total": 1936.00,
"status": "draft",
"caseId": "case-uuid-here",
"contactId": "contact-uuid-here"
}
POST /api/invoices/{id}/send
Updates the invoice status to "sent".
{
"success": true,
"data": {
"id": "...",
"status": "sent",
...
}
}
POST /api/invoices/{id}/pay
Updates the invoice status to "paid".
{
"success": true,
"data": {
"id": "...",
"status": "paid",
...
}
}
DELETE /api/invoices/{id}
Only draft invoices can be deleted. Sent invoices must be voided instead.