REST /api/v1/expense-calculations 6 endpoints
GET /api/v1/expense-calculations/api/v1/expense-calculations

List historical expense calculations

Public

Response Example

{
  "data": [
    {
      "id": "calc-001",
      "expense_id": "exp-8821",
      "selected_types": [
        "kilometers",
        "tolls"
      ],
      "total_amount": 47.5,
      "currency": "EUR",
      "breakdown": [
        {
          "expense_type": "kilometers",
          "amount": 37.5,
          "unit": "km",
          "quantity": 75
        },
        {
          "expense_type": "tolls",
          "amount": 10,
          "unit": "fixed",
          "quantity": 1
        }
      ],
      "calculated_at": "2026-03-26T09:30:00Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 1
  }
}
GET /api/v1/expense-calculations/api/v1/expense-calculations/:id

Get a specific calculation result

Public

Response Example

{
  "id": "calc-001",
  "expense_id": "exp-8821",
  "selected_types": [
    "kilometers",
    "tolls"
  ],
  "total_amount": 47.5,
  "currency": "EUR",
  "breakdown": [
    {
      "expense_type": "kilometers",
      "amount": 37.5,
      "unit": "km",
      "quantity": 75
    },
    {
      "expense_type": "tolls",
      "amount": 10,
      "unit": "fixed",
      "quantity": 1
    }
  ],
  "formula_descriptions": {
    "kilometers": "Rate: €0.50/km × declared distance",
    "tolls": "Reimbursed at cost with receipt"
  },
  "calculated_at": "2026-03-26T09:30:00Z"
}
POST /api/v1/expense-calculations/api/v1/expense-calculations

Calculate reimbursement for selected expense types and input params

Public

Request Example

{
  "expense_id": "exp-8824",
  "selected_types": [
    "kilometers",
    "parking"
  ],
  "inputs": {
    "kilometers": {
      "distance_km": 120,
      "vehicle_type": "personal_car"
    },
    "parking": {
      "duration_hours": 3,
      "cost_per_hour": 2.5
    }
  }
}

Response Example

{
  "id": "calc-002",
  "expense_id": "exp-8824",
  "selected_types": [
    "kilometers",
    "parking"
  ],
  "total_amount": 67.5,
  "currency": "EUR",
  "breakdown": [
    {
      "expense_type": "kilometers",
      "amount": 60,
      "unit": "km",
      "quantity": 120
    },
    {
      "expense_type": "parking",
      "amount": 7.5,
      "unit": "hours",
      "quantity": 3
    }
  ],
  "formula_descriptions": {
    "kilometers": "Rate: €0.50/km × 120 km",
    "parking": "€2.50/hr × 3 hrs"
  },
  "calculated_at": "2026-03-26T11:45:00Z"
}
PUT /api/v1/expense-calculations/api/v1/expense-calculations/:id

Recalculate with updated input parameters

Public

Request Example

{
  "selected_types": [
    "kilometers",
    "parking"
  ],
  "inputs": {
    "kilometers": {
      "distance_km": 140,
      "vehicle_type": "personal_car"
    },
    "parking": {
      "duration_hours": 3,
      "cost_per_hour": 2.5
    }
  }
}

Response Example

{
  "id": "calc-002",
  "expense_id": "exp-8824",
  "selected_types": [
    "kilometers",
    "parking"
  ],
  "total_amount": 77.5,
  "currency": "EUR",
  "breakdown": [
    {
      "expense_type": "kilometers",
      "amount": 70,
      "unit": "km",
      "quantity": 140
    },
    {
      "expense_type": "parking",
      "amount": 7.5,
      "unit": "hours",
      "quantity": 3
    }
  ],
  "formula_descriptions": {
    "kilometers": "Rate: €0.50/km × 140 km",
    "parking": "€2.50/hr × 3 hrs"
  },
  "calculated_at": "2026-03-26T11:50:00Z"
}
DELETE /api/v1/expense-calculations/api/v1/expense-calculations/:id

Delete a calculation record

Public

Response Example

{
  "success": true,
  "deleted_id": "calc-002"
}
GET /api/v1/expense-calculations/api/v1/expense-calculations/required-inputs/:expense_type

Get required input fields for a specific expense type

Public

Response Example

{
  "expense_type": "kilometers",
  "required_inputs": [
    {
      "field_id": "distance_km",
      "label": "Distance (km)",
      "type": "number",
      "min": 0,
      "max": 5000,
      "unit": "km",
      "required": true
    },
    {
      "field_id": "vehicle_type",
      "label": "Vehicle Type",
      "type": "enum",
      "options": [
        "personal_car",
        "motorcycle",
        "electric_vehicle"
      ],
      "required": true
    }
  ]
}

Additional Metadata

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