Skip to main content

Money is integer agorot

Every amount in the API is an integer number of agorot. One shekel is 100 agorot. Amount fields end in Agorot, so you can’t confuse them with shekels: amountAgorot, paidAgorot, creditedAgorot, refundedAgorot, budgetAgorot, retainerAmountAgorot, expectedValueAgorot.
Convert at the edge of your system and keep integers everywhere else. Floating-point shekels (59.9 * 100 = 5989.999…) are a classic source of off-by-one-agora bugs. Use Math.round(shekels * 100) once, at input.

What a payment request’s amounts mean

Still owed = amountAgorot - paidAgorot - creditedAgorot. A payment’s refundedAgorot is how much of that payment was refunded.

Pagination

List endpoints (GET /v1/clients, /v1/projects, /v1/payment-requests, /v1/payments) take two query parameters:
integer
default:"1"
1-based page number.
integer
default:"25"
Items per page, 1 to 100.
They all return the same envelope:
array
The page of results.
integer
How many results match, across all pages.
integer
The page you asked for.
integer
The page size used.

Read everything

Mind the rate limit (60 requests a minute) when paging through large lists, and prefer filters (since, clientId, status) over reading everything.

Dates and IDs

  • Timestamps (createdAt, paidAt, …) are ISO 8601 in UTC, for example 2026-11-12T08:30:00.000Z.
  • Calendar dates (dueDate, startDate, the since filter) are yyyy-MM-dd. Lancer’s business calendar is Asia/Jerusalem.
  • IDs are opaque strings. Don’t parse them.