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
  }
}

Additional Metadata

{
  "contract_summary": {
    "total_contracts": 410,
    "total_endpoints": 2416,
    "api_styles_used": [
      "rest"
    ]
  },
  "generated_at": "2026-03-26T06:55:53.316Z"
}