Skip to content

The signed-in ambassador's payout statements

GET
/api/partner/statements/
curl --request GET \
--url http://localhost:8000/api/partner/statements/ \
--header 'Authorization: Bearer <token>'

Every monthly statement, newest first: what the month adds up to and where it stands — drafted, approved, paid, or carried into the next month because it fell under the minimum payout. Paged with limit / offset like /ledger/; count is every statement. 404 without an ambassador record; 401 without a session; 403 for a partner API key; 400 on a bad page. A platform admin passes ?ambassador=<slug> to read any ambassador’s page (#2517).

ambassador
string

A platform admin (the support account) reads THIS ambassador’s page, exactly as the ambassador sees it, and the read is written to the admin_action trail. Anyone else may pass only their own slug; any other value is the same 404 as having no record.

limit
integer

Rows per page, 1–500 (default 200).

offset
integer

Rows to skip (default 0).

Media typeapplication/json

GET /api/partner/statements/ — the ambassador’s statements, newest month first.

object
rows
required
Array<object>

One monthly payout statement, as the partner tab lists it.

object
period
required

YYYY-MM, the month the statement covers (UTC).

string
opening_carry_cents
required

Carried in from an earlier month that fell under the minimum payout, USD cents.

integer
accrued_cents
required

Commission on the month’s invoices plus any adjustments, USD cents.

integer
fees_cents
required

One-off payouts — fixed fees, institutional referrals, conversion bonuses — USD cents.

integer
reversals_cents
required

Commission taken back on refunded or disputed invoices, USD cents (negative).

integer
total_cents
required

What the month pays out, USD cents.

integer
status
required

draft — drafted, being checked; approved — payable by due_date; paid — on paid_on; carried — under the minimum, rolls into the next month.

  • draft - Draft
  • approved - Approved
  • paid - Paid
  • carried - Carried
string
Allowed values: draft approved paid carried
due_date
required

Net-30: the last day of the month after the period; null when carried.

string format: date
nullable
paid_on
required

The day it was paid, UTC; null until then.

string format: date
nullable
count
required

Statements in all, for paging.

integer
limit
required

The page size applied.

integer
offset
required

The offset applied.

integer

Examples

ExampleAPaidMonth,AnApprovedOneAndOneCarriedForward

A paid month, an approved one and one carried forward

{
"rows": [
{
"period": "2026-08",
"opening_carry_cents": 0,
"accrued_cents": 3515,
"fees_cents": 5000,
"reversals_cents": -1485,
"total_cents": 7030,
"status": "approved",
"due_date": "2026-09-30",
"paid_on": null
},
{
"period": "2026-07",
"opening_carry_cents": 2500,
"accrued_cents": 8092,
"fees_cents": 0,
"reversals_cents": 0,
"total_cents": 10592,
"status": "paid",
"due_date": "2026-08-31",
"paid_on": "2026-08-18"
},
{
"period": "2026-06",
"opening_carry_cents": 0,
"accrued_cents": 2500,
"fees_cents": 0,
"reversals_cents": 0,
"total_cents": 2500,
"status": "carried",
"due_date": null,
"paid_on": null
}
],
"count": 3,
"limit": 200,
"offset": 0
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Example generated

{
"detail": "example"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Example generated

{
"detail": "example"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Example generated

{
"detail": "example"
}
Media typeapplication/json
object
detail
required

Human-readable message, or a stable machine code for the cases a client branches on. The standard envelope for 400 (validation — a field-keyed object may appear instead), 401 (missing / invalid credentials), 403 (authenticated but not permitted), and 404 (absent — cross-team records are collapsed to 404 so the API never leaks the existence of another team’s data).

string

Examples

ExampleNoAmbassadorRecordOnThisAccount

No ambassador record on this account

{
"detail": "No ambassador record is linked to this account."
}