Listar gastos
GET
/api/v1/expenses Devuelve los gastos (tickets con OCR) de tu empresa, del más reciente al más antiguo. Cada gasto trae su comercio, importe (con su equivalente en euros), impuestos, categoría, estado (processing / imported / error) y si está conciliado con un movimiento bancario. Filtrable por empleado y estado. Se pagina (25 por página, máximo 100) e incluye un objeto meta con page, page_size y total.
Parámetros de consulta
| Nombre | Tipo | Obligatorio | Descripción |
|---|---|---|---|
user_id | string | No | Solo los gastos de este empleado. |
status | string | No | Estado: 'processing', 'imported' o 'error'. |
page | integer | No | Página (desde 1). |
page_size | integer | No | Gastos por página (máx. 100). |
Ejemplo
Sustituye db_live_tu_clave por tu clave.
curl -s -H "Authorization: Bearer db_live_tu_clave" \
"https://api.dutybeat.com/api/v1/expenses?user_id=u-civm1" | jq Respuesta de ejemplo
Lo que imprime cada snippet al ejecutarlo: cURL devuelve el JSON crudo; los snippets de Python y PowerShell piden campos concretos, así que su salida es la de cada uno.
{
"data": [
{
"id": "exp-dem-4",
"user_id": "u-civm1",
"status": "imported",
"merchant": "Taxi Madrid",
"expense_date": "2026-06-05",
"total_amount": 18,
"tax_amount": 1.64,
"currency": "EUR",
"amount_eur": 18,
"fx_rate": 1,
"category": "Desplazamiento",
"reconciled": false,
"error_reason": null,
"created_at": "2026-06-05T09:30:00Z",
"processed_at": "2026-06-05T09:31:00Z"
},
{
"id": "exp-dem-1",
"user_id": "u-civm1",
"status": "imported",
"merchant": "Mercadona",
"expense_date": "2026-06-01",
"total_amount": 23.4,
"tax_amount": 2.13,
"currency": "EUR",
"amount_eur": 23.4,
"fx_rate": 1,
"category": "Dietas",
"reconciled": true,
"error_reason": null,
"created_at": "2026-06-01T12:00:00Z",
"processed_at": "2026-06-01T12:01:00Z"
}
],
"meta": {
"page": 1,
"page_size": 25,
"total": 2
}
}