Skip to content

Executed refunds recorded in core, newest first

GET
/money/refunds
curl --request GET \
--url 'https://quikstik-core.fly.dev/money/refunds?limit=50' \
--header 'Authorization: Bearer <token>'

Core’s view, not the ledger’s and not Stripe’s (source: "core"). Rows come from core’s executed-refund table (refunds_executed) — refunds core executed or reconciled from the processor — windowed on the merchant-timezone date of execution (from/to inclusive; defaults: to = today, from = today - 30; at most 92 days apart). It reports nothing about revenue or net cash, and a refund absent here may still exist at the processor.

refund_id is core’s idempotency key for the refund. processor_ref is the processor’s reversal reference, null when core minted a synthetic reference for a cumulative out-of-band refund (no processor object is invented). The table stores no refund reason, so none is returned. lead is the contact stamped on the obligation (same fallback as GET /money/receivables).

Session, or an operator key scoped bookings.read. limit defaults to 50, max 200.

from
string format: date

Window start, a merchant-timezone calendar date (YYYY-MM-DD). Window is at most 92 days.

to
string format: date

Window end, inclusive (YYYY-MM-DD).

limit
integer
default: 50 >= 1 <= 200

Executed refunds, core’s view

Media typeapplication/json
object
from
required
string format: date
to
required
string format: date
tz
required
string
source
required
string
Allowed values: core
items
required
Array<object>
object
refund_id
required

Core’s idempotency key for the refund.

string
obligation_ref
required
string format: uuid
reference
required

Guest-facing QS-XXXXXXXX reference.

string
amount_minor
required
integer format: int64
currency
required
string
executed_at_ms
required
integer format: int64
processor_ref
required

Processor reversal reference; null for a core-minted cumulative reference.

string
nullable
lead
required

The guest to contact, from the contact stamped on the obligation.

object
display_name
required

Name, else email, else phone, else “Unnamed guest”.

string
email
required
string
nullable
phone
required
string
nullable

Example

{
"source": "core"
}

Missing or invalid session bearer token

Media typeapplication/json
object
reason
required

Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).

string

Example

{
"reason": "sold_out"
}

The session’s effect authority does not cover this operation

Media typeapplication/json
object
reason
required

Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).

string

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.

Media typeapplication/json
object
reason
required

Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).

string

Example

{
"reason": "sold_out"
}

No durable backend is wired for this operation (fail-closed)

Media typeapplication/json
object
reason
required

Stable, machine-readable reason code (e.g. “sold_out”, “processor_not_configured”, “rail_refused”).

string

Example

{
"reason": "sold_out"
}