Skip to content
Main navigation
All integrations

ERP via the API

From Premium
How it works:Your ERP fetches only changed entries and marks what is on the invoice. Locked entries never end up on two invoices.

Your ERP or invoicing software fetches the time entries through the REST API and reports back which entries are billed. The delta sync only returns what changed since the last call; a billing run marks entries with your invoice number and locks them. Both are part of Premium.

  1. As owner or admin, add a token with the abilities read and billing under Settings, API and devices. It is shown only once.
  2. On the first call, fetch all entries without a cursor and keep meta.next_cursor from the answer.
  3. From then on always ask with the stored cursor. You only get changed entries, deleted ones with deleted_at set. If the API answers 410, the cursor is older than 90 days: start again without a cursor and replace your copy.
  4. After invoicing, create a billing run, first with "dry_run": true to try it. The entries are then billed and locked.

Fetch time entries, first without, then with a cursor:

Example (bash)
curl "https://api.horaka.com/v1/time-entries/changes?cursor=0" -H "Authorization: Bearer YOUR_TOKEN"
curl "https://api.horaka.com/v1/time-entries/changes?cursor=CURSOR" -H "Authorization: Bearer YOUR_TOKEN"

Clients with their IDs, then bill everything open of one client up to the end of the month:

Example (bash)
curl https://api.horaka.com/v1/clients -H "Authorization: Bearer YOUR_TOKEN"

curl -X POST https://api.horaka.com/v1/billing-runs \
  -H "Authorization: Bearer YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"filter": {"client_id": 4, "until": "2026-10-31"}, "invoice_ref": "RE-2026-0042", "dry_run": true}'

Instead of asking regularly, Horaka can also notify your ERP on every change: add a webhook under Settings, Webhooks. Every field, filter and error code is described in the API documentation.

Win back the hours you give away.

Get started in a minute. 14 days of Premium free and without a card, then carry on with Free at no cost or from €4.90 a month with everything for billing.