Skip to main content
POST
Reverse an event's awards
Claws back value that a COMPLETED event’s rules credited. Recovery targets the lots the original awards created, where that value is still held by the originally credited participant or group; anything already spent, expired, transferred, or currently held is reported as shortfall_amount, never forced. Scrip caps cumulative reversals at each original award, so repeated partial reversals cannot claw back more than was earned. Omit fraction to reverse all remaining value, or pass a decimal string like "0.5" to reverse that share of every award line. A request that exceeds an award’s remaining reversible value returns 409 Conflict instead of clamping. The response reports each award line’s requested, recovered, and shortfall amounts, lists any of the event’s credit entries that are not reversible (with reasons), and includes the event’s state changes. State changes are never reverted; send a compensating event if your program logic requires it.
For when to use this endpoint versus an event-based clawback, see Reversing an event and the refund patterns.

Authorizations

X-API-Key
string
header
required

API key passed in the X-API-Key header.

Path Parameters

id
string<uuid>
required

Event ID

Body

application/json

Reversal details

idempotency_key
string
required

Required. The same key replays the original result; a different payload under the same key is rejected.

Required string length: 1 - 255
Example:

"refund-order-456-1"

fraction
string

Fraction of each original award to reverse, as a decimal string greater than 0 and at most 1. Omit to reverse all remaining value.

Example:

"0.5"

reason
string

Optional context recorded on the reversal and its ledger entries.

Maximum string length: 500
Example:

"partial refund"

shortfall_policy
enum<string>

Shortfall handling policy. V1 supports report only; omitted defaults to report.

Available options:
report
Example:

"report"

Response

Duplicate request (idempotency key matched, returns existing record)

created_at
string<date-time>
Example:

"2026-07-20T10:30:00Z"

event_id
string<uuid>
Example:

"550e8400-e29b-41d4-a716-446655440000"

fraction
string
Example:

"0.5"

id
string<uuid>
Example:

"550e8400-e29b-41d4-a716-446655440000"

idempotency_key
string
Example:

"refund-order-456-1"

ineligible_entries
object[]

CREDIT entries of the event this reversal did not process, with reasons

lines
object[]

Per original award line accounting

reason
string
Example:

"partial refund"

shortfall_policy
enum<string>
Available options:
report
Example:

"report"

state_changes
object[]

The original event's state changes (counters, tags, attributes, tiers). Reversals never revert state automatically; send a compensating event if your program logic requires it.

status
string
Example:

"COMPLETED"