Skip to main content
POST
cURL

Authorizations

Authorization
string
header
required

Your secret key, rk_test_… or rk_live_…, sent as Authorization: Bearer <key>. Keep it on your server. Restricted keys carry only the scopes you give them.

Headers

Reflections-Version
string

The dated API version. Defaults to the version your account is pinned to.

Example:

"2026-10-15"

Idempotency-Key
string

A unique key for this operation, up to 255 characters. In test mode, POST keys are scoped to your account and mode and bind the endpoint and body for 24 hours. A different endpoint or body with the same key is refused.

Initial live check and generation creation require a nonempty key. Each operation has a separate account-scoped namespace; retain the same API key, body and idempotency key for retries within 24 hours of creation. A pending check returns 202 with status: "checking". Completed checks replay their sealed response; successful generation POSTs replay the original accepted 202, so use GET for current state. Live verification is a read-only query that returns a fresh verification ID on each call, without exact response caching.

The broader delegated-account contract also scopes keys to Reflections-Account; delegated requests and the other planned live POST operations remain unsupported.

Maximum string length: 255

Path Parameters

statement_id
string
required

The statement's ID.

Pattern: ^stmt_[0-9a-hjkmnp-tv-z]{26}$
payment_id
string
required

The payment's ID, from the statement's payments.

Pattern: ^pay_[0-9a-hjkmnp-tv-z]{26}$

Body

application/json
received_at
string<date-time>

When the payment arrived. Defaults to now.

Response

The statement, with the payment confirmed.

id
string
required

The statement's ID. Record, confirm and dispute payments against it.

Pattern: ^stmt_[0-9a-hjkmnp-tv-z]{26}$
object
string
required

Always statement.

Allowed value: "statement"
livemode
boolean
required

true in live mode, false in test mode, where statements are generated daily.

license
string
required

The license the statement covers. Each statement covers one license for one month.

Pattern: ^lic_[0-9a-hjkmnp-tv-z]{26}$
talent
string
required

The talent the licensee owes.

Pattern: ^tal_[0-9a-hjkmnp-tv-z]{26}$
licensee
string
required

The account that holds the license and pays the talent's payee.

Pattern: ^acct_[0-9a-hjkmnp-tv-z]{26}$
status
enum<string>
required

open while the month runs, then issued. paid once confirmed payments reach amount_due, or disputed while the talent's side disputes it.

Available options:
open,
issued,
paid,
disputed
period
object
required

The month the statement covers.

currency
string
required

The ISO 4217 code, lowercase, of every amount on the statement.

Pattern: ^[a-z]{3}$
lines
object[]
required

One line per unit the license bills.

amount_due
integer
required

What the licensee owes for the period under the license's compensation, in the currency's smallest unit.

amount_paid
integer
required

The total of payments, in the currency's smallest unit.

reconciliation
object
required

How the units reported compare with the units Reflections observed.

created_at
string<date-time>
required

When the statement opened, at the start of its period.

payments
object[]

Payments the licensee recorded against the statement, in the order recorded.

dispute
object | null

Present while the talent's side disputes the statement.

due_at
string<date-time> | null

When payment is due. Null while open.

issued_at
string<date-time> | null

When the statement was issued, or last reissued after a dispute. Null while open.

document_url
string<uri> | null

The statement as a document a person reads. Null while open.