Skip to Content
HelvetlyDocs
API referenceExpenses

List expenses

Needs a token with the read:expenses scope (or write:expenses). Authentication

Try in Playground sends a real request to app.helvetly.com with a token you paste. It stays in this browser tab only (session storage) and goes to no one else.

GET
/api/v1/expenses

Expenses of the workspace, paged and filterable. Void ones are left out unless asked for.

Authorization

bearerAuth
headerAuthorizationBearer <token>

A personal API token, hvt_…, with scopes such as read:* or write:invoices

Query Parameters

page?integer

Page number, from 1.

Range1 <= value
Default1
page_size?integer

Items per page.

Range1 <= value <= 200
Default50
search?string

Matches supplier, reference and description.

status?string

Comma-separated: draft, booked, void.

payment?string

Payment state.

Value in"unpaid""paid""overdue""to_reimburse"
category_id?string

Comma-separated category ids.

currency?string

Comma-separated ISO codes.

from?string

Document date on or after.

Formatdate
to?string

Document date on or before.

Formatdate
sort?string

One of number, document_date, supplier, total, created_at; prefix - for descending. Default -document_date.

Response Body

OK

application/json
  1. response
data*array<>
meta*

Paging of a list: page/page_size in, totals out.

Example Request
curl -X GET 'https://app.helvetly.com/api/v1/expenses'
Example Response
{  "data": [    {      "id": "string",      "number": 0,      "status": "draft",      "source": "string",      "supplier_name": "string",      "supplier_vat_number": "string",      "supplier_country": "string",      "reference": "string",      "duplicate_of": {        "id": "string",        "number": 0,        "date": "2019-08-24"      },      "description": "string",      "category": {        "id": "string",        "name": "string",        "account_code": "string"      },      "document_date": "2019-08-24",      "due_date": "2019-08-24",      "currency": "string",      "amount_mode": "string",      "lines": [        {          "id": "string",          "position": 0,          "description": "string",          "amount": "1234.50",          "vat_rate": "string"        }      ],      "net_total": "1234.50",      "vat_total": "1234.50",      "total": "1234.50",      "vat_breakdown": [        {          "rate": "string",          "taxable_amount": "1234.50",          "vat_amount": "1234.50",          "deductible_amount": "1234.50"        }      ],      "input_tax": "string",      "reverse_charge": true,      "input_tax_box": "string",      "deductible_percent": "string",      "deductible_vat": "1234.50",      "exchange_rate": "string",      "exchange_rate_date": "2019-08-24",      "exchange_rate_source": "string",      "base": {        "currency": "string",        "net_total": "1234.50",        "vat_total": "1234.50",        "total": "1234.50",        "deductible_vat": "1234.50"      },      "payment_status": "string",      "paid_on": "2019-08-24",      "payment_method": "string",      "paid_by_member": {        "id": "string",        "name": "string"      },      "reimbursed_on": "2019-08-24",      "is_overdue": true,      "note": "string",      "receipt_missing_reason": "string",      "receipts_count": 0,      "is_complete": true,      "missing_fields": [        "string"      ],      "created_by": {        "id": "string",        "name": "string"      },      "booked_at": "2019-08-24T14:15:22Z",      "booked_by": {        "id": "string",        "name": "string"      },      "voided_at": "2019-08-24T14:15:22Z",      "voided_by": {        "id": "string",        "name": "string"      },      "void_reason": "string",      "created_at": "2019-08-24T14:15:22Z",      "updated_at": "2019-08-24T14:15:22Z"    }  ],  "meta": {    "page": 0,    "page_size": 0,    "total": 0,    "total_pages": 0  }}