Open receivables behind the summary, bucket order then largest due first
const url = 'https://quikstik-core.fly.dev/money/receivables?bucket=overdue&limit=50';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://quikstik-core.fly.dev/money/receivables?bucket=overdue&limit=50' \ --header 'Authorization: Bearer <token>'Core’s view, not the ledger’s and not Stripe’s (source: "core"). One row per
non-cancelled booking whose obligation still has a balance owed (due_minor > 0), with the
same window, bucket and accrual semantics as GET /money/summary: a receivable is an unpaid
balance by departure date — not revenue, not cash. due_minor equals the amount
GET /obligations/{ref}/balance serves for the same obligation. Ordered by bucket
(overdue, today, next_7, later), then due_minor descending, then obligation_ref.
lead is the contact stamped on the obligation; display_name falls back to the email,
then the phone, then "Unnamed guest", while email/phone stay null when absent.
last_reminder_at_ms is the newest delivered balance-reminder email recorded for the
obligation (the delivery webhook’s recorded time, not the send time); null if none. The
booking channel and a pay-link token are not exposed: core stores no channel on a
booking, and a balance link persists only its token hash (the plaintext exists once, at
mint).
Session, or an operator key scoped bookings.read. limit defaults to 50, max 200
(invalid_limit, 422).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Window start, a merchant-timezone calendar date (YYYY-MM-DD). Window is at most 92 days.
Window end, inclusive (YYYY-MM-DD).
Departure-date bucket of an open receivable, relative to the merchant’s today.
Restrict to one departure bucket (invalid_bucket, 422, otherwise).
Responses
Section titled “Responses”Open receivables, core’s view
object
One open receivable (an unpaid balance on a non-cancelled booking). Core’s view.
object
Guest-facing QS-XXXXXXXX reference.
Departure-date bucket of an open receivable, relative to the merchant’s today.
The guest to contact, from the contact stamped on the obligation.
object
Name, else email, else phone, else “Unnamed guest”.
Full amount owed, tax included.
Settled so far, as core last synced it.
Gross - settled; equals GET /obligations/{ref}/balance. Always greater than 0.
Departure date minus today in the merchant timezone; negative once overdue.
Newest delivered balance-reminder email recorded; null if none.
Example
{ "source": "core", "items": [ { "bucket": "overdue" } ]}Missing or invalid session bearer token
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}The session’s effect authority does not cover this operation
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}Invalid query. reason is one of invalid_date, invalid_window (from after to),
window_too_large (more than 92 days), invalid_limit, invalid_bucket.
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}No durable backend is wired for this operation (fail-closed)
object
Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).
Example
{ "reason": "sold_out"}