Expense Type Catalogue Repository
API Contract
REST
/api/v1/expense-types
6 endpoints
GET
/api/v1/expense-types/api/v1/expense-types
List all expense types for an organization
Public
Response Example
{
"data": [
{
"type_id": "travel_distance",
"name": "Distance Travel",
"description": "Reimbursement per km driven",
"requires_receipt": false,
"exclusive_group": null,
"rate_per_km": 4.5,
"currency": "NOK",
"active": true
},
{
"type_id": "parking",
"name": "Parking",
"description": "Parking fees",
"requires_receipt": true,
"exclusive_group": null,
"active": true
},
{
"type_id": "driver_honorarium",
"name": "Driver Honorarium",
"description": "Fixed honorarium for drivers",
"requires_receipt": false,
"exclusive_group": "honorarium_group",
"active": true
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 8
}
}
GET
/api/v1/expense-types/api/v1/expense-types/:id
Get a single expense type by ID
Public
Response Example
{
"type_id": "travel_distance",
"name": "Distance Travel",
"description": "Reimbursement per km driven",
"requires_receipt": false,
"exclusive_group": null,
"rate_per_km": 4.5,
"currency": "NOK",
"active": true,
"created_at": "2025-01-01T00:00:00Z"
}
POST
/api/v1/expense-types/api/v1/expense-types
Create a new expense type in the catalogue
Public
Request Example
{
"organization_id": "org_4729bc",
"name": "Ferry",
"description": "Ferry crossing fees",
"requires_receipt": true,
"exclusive_group": null,
"active": true
}
Response Example
{
"type_id": "ferry",
"organization_id": "org_4729bc",
"name": "Ferry",
"description": "Ferry crossing fees",
"requires_receipt": true,
"exclusive_group": null,
"active": true,
"created_at": "2026-03-26T10:00:00Z"
}
PUT
/api/v1/expense-types/api/v1/expense-types/:id
Update an expense type
Public
Request Example
{
"requires_receipt": false,
"description": "Ferry crossing fees — receipt no longer mandatory",
"active": true
}
Response Example
{
"type_id": "ferry",
"requires_receipt": false,
"description": "Ferry crossing fees — receipt no longer mandatory",
"active": true,
"updated_at": "2026-03-26T10:15:00Z"
}
DELETE
/api/v1/expense-types/api/v1/expense-types/:id
Deactivate an expense type
Public
Response Example
{
"deleted": true,
"type_id": "ferry"
}
GET
/api/v1/expense-types/api/v1/expense-types/exclusive-groups
List all exclusive groups (mutually-exclusive expense type sets)
Public
Response Example
{
"data": [
{
"group_id": "honorarium_group",
"name": "Honorarium Types",
"type_ids": [
"driver_honorarium",
"coach_honorarium"
],
"description": "Only one honorarium type may be claimed per activity"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 1
}
}