<!-- x-generated: Generated by the Hyperscale artifact pipeline; do not edit by hand -->

# Events

The 408 webhook events the platform contract can emit, mapped onto the instrument lifecycles that fire them. A composed product emits the subset its surface exposes; its Kit's docs/events.md lists exactly that subset.

## Delivery envelope

Every delivery POSTs one JSON envelope:

```json
{
  "id": "aud_sandbox_event0001",
  "object": "event",
  "apiVersion": "2026-06-04",
  "environment": "sandbox",
  "tenantId": "ten_sandbox_riyadhresale01",
  "event": "sale_settlement.piece_3_released",
  "createdAt": "2026-07-22T12:00:00.000Z",
  "operationId": "ops_sandbox_event0001",
  "relatedObject": {
    "id": "sale_sandbox_event0001",
    "type": "instrument_instance"
  },
  "data": {
    "object": {
      "operationName": "sale_settlement.release_piece_3",
      "sourceSurface": "http",
      "status": "released"
    }
  }
}
```

Events are deliberately thin: `relatedObject` names the changed resource and `data.object` carries only the allow-listed operation facts (`accountId`, `amount`, `currency`, `expiredAt`, `expiresAt`, `externalConfirmations`, `metadata`, `operationName`, `postedAmount`, `receivedAt`, `remainingReservedAmount`, `sourceSurface`, `status`). Fetch the resource's current state over the authenticated API instead of trusting an embedded snapshot; that keeps payloads version-stable.

Delivery order is not guaranteed and the event feed lists newest-first with no sequence number, so never apply events in arrival order: on each event, re-read the resource and trust its current `status`.

## Instrument lifecycle events

### Escrow order (`escrow_order`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `escrow_order.expired` | `escrow_order.expire` | `created` -> `expired` (terminal) |
| `escrow_order.canceled` | `escrow_order.cancel` | `created` -> `canceled` (terminal) |
| `escrow_order.penalty_collected` | `escrow_order.collect_penalty` | `refunded` -> `penalty_collected` (terminal) |
| `escrow_order.created` | `escrow_order.create` | `new` -> `created` |
| `escrow_order.disputed` | `escrow_order.dispute` | `funded` -> `disputed` |
| `escrow_order.funded` | `escrow_order.fund` | `created` -> `funded` |
| `escrow_order.quoted` | `escrow_order.quote` | `disputed` -> `refund_quoted` |
| `escrow_order.refunded` | `escrow_order.refund` | `refund_quoted` -> `refunded` |
| `escrow_order.released` | `escrow_order.release` | `funded` -> `released` (terminal) |
| `escrow_order.resumed` | `escrow_order.resume` | `disputed` -> `funded` |

Terminal events: `escrow_order.expired` (lands in `expired`); `escrow_order.canceled` (lands in `canceled`); `escrow_order.penalty_collected` (lands in `penalty_collected`); `escrow_order.released` (lands in `released`). There is no composite "escrow_order finished" event; the terminal event of each exit path above is the done signal.

### Listing (`listing`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `listing.expired` | `listing.expire` | `active` -> `withdrawn` (terminal) |
| `listing.created` | `listing.create` | `new` -> `draft` |
| `listing.published` | `listing.publish` | `draft` -> `active` |
| `listing.reopened` | `listing.reopen` | `reserved` -> `active` |
| `listing.reserved` | `listing.reserve` | `active` -> `reserved` |
| `listing.sold` | `listing.sell` | `reserved` -> `sold` (terminal) |
| `listing.withdrawn` | `listing.withdraw` | `draft`/`active` -> `withdrawn` (terminal) |

Terminal events: `listing.expired` (lands in `withdrawn`); `listing.sold` (lands in `sold`); `listing.withdrawn` (lands in `withdrawn`). There is no composite "listing finished" event; the terminal event of each exit path above is the done signal.

### Order (`order`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `order.expired` | `order.expire` | `created` -> `expired` (terminal) |
| `order.canceled` | `order.cancel` | `created`/`confirmed` -> `canceled` (terminal) |
| `order.confirmed` | `order.confirm` | `created` -> `confirmed` |
| `order.created` | `order.create` | `new` -> `created` |
| `order.fulfilled` | `order.fulfill` | `confirmed` -> `fulfilled` (terminal) |

Terminal events: `order.expired` (lands in `expired`); `order.canceled` (lands in `canceled`); `order.fulfilled` (lands in `fulfilled`). There is no composite "order finished" event; the terminal event of each exit path above is the done signal.

### Policy (`policy`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `policy.activated` | `policy.activate` | `bound` -> `active` |
| `policy.expired` | `policy.expire` | `active` -> `expired` (terminal) |
| `policy.bound` | `policy.bind` | `quoted` -> `bound` |
| `policy.canceled` | `policy.cancel` | `cancel_quoted` -> `canceled` (terminal) |
| `policy.quoted` | `policy.create` | `new` -> `quoted` |
| `policy.endorsed` | `policy.endorse` | `active` -> `active` |
| `policy.previewed` | `policy.preview` | `bound` -> `cancel_quoted` |
| `policy.withdrawn` | `policy.withdraw` | `quoted` -> `canceled` (terminal) |

Terminal events: `policy.expired` (lands in `expired`); `policy.canceled` (lands in `canceled`); `policy.withdrawn` (lands in `canceled`). There is no composite "policy finished" event; the terminal event of each exit path above is the done signal.

### Claim (`claim`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `claim.approved` | `claim.approve` | `assessed` -> `approved` |
| `claim.assessed` | `claim.assess` | `filed` -> `assessed` |
| `claim.attested` | `claim.attest` | `assessed` -> `approved` |
| `claim.filed` | `claim.create` | `new` -> `filed` |
| `claim.denied` | `claim.deny` | `filed`/`assessed` -> `denied` (terminal) |
| `claim.paid` | `claim.pay` | `approved` -> `paid` (terminal) |
| `claim.reversed` | `claim.reverse` | `approved` -> `denied` (terminal) |

Terminal events: `claim.denied` (lands in `denied`); `claim.paid` (lands in `paid`); `claim.reversed` (lands in `denied`). There is no composite "claim finished" event; the terminal event of each exit path above is the done signal.

### Deposit hold (`deposit_hold`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `deposit_hold.expired` | `deposit_hold.expire` | `held` -> `expired` (terminal) |
| `deposit_hold.canceled` | `deposit_hold.cancel` | `created` -> `canceled` (terminal) |
| `deposit_hold.claimed` | `deposit_hold.claim` | `held` -> `claimed` (terminal) |
| `deposit_hold.created` | `deposit_hold.create` | `new` -> `created` |
| `deposit_hold.funded` | `deposit_hold.fund` | `created` -> `held` |
| `deposit_hold.returned` | `deposit_hold.return` | `held` -> `returned` (terminal) |

Terminal events: `deposit_hold.expired` (lands in `expired`); `deposit_hold.canceled` (lands in `canceled`); `deposit_hold.claimed` (lands in `claimed`); `deposit_hold.returned` (lands in `returned`). There is no composite "deposit_hold finished" event; the terminal event of each exit path above is the done signal.

### Cardholder (`cardholder`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `cardholder.activated` | `cardholder.activate` | `pending` -> `active` |
| `cardholder.closed` | `cardholder.close` | `pending`/`active`/`suspended` -> `closed` (terminal) |
| `cardholder.created` | `cardholder.create` | `new` -> `pending` |
| `cardholder.resumed` | `cardholder.resume` | `suspended` -> `active` |
| `cardholder.suspended` | `cardholder.suspend` | `active` -> `suspended` |

Terminal events: `cardholder.closed` (lands in `closed`). There is no composite "cardholder finished" event; the terminal event of each exit path above is the done signal.

### Card (`card`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `card.activated` | `card.activate` | `issued` -> `active` |
| `card.canceled` | `card.cancel` | `issued`/`active`/`frozen` -> `canceled` (terminal) |
| `card.issued` | `card.create` | `new` -> `issued` |
| `card.freezed` | `card.freeze` | `active` -> `frozen` |
| `card.unfrozen` | `card.unfreeze` | `frozen` -> `active` |

Terminal events: `card.canceled` (lands in `canceled`). There is no composite "card finished" event; the terminal event of each exit path above is the done signal.

### Card authorization (`card_authorization`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `card_authorization.expired` | `card_authorization.expire` | `approved` -> `expired` (terminal) |
| `card_authorization.approved` | `card_authorization.approve` | `pending` -> `approved` |
| `card_authorization.captured` | `card_authorization.capture` | `approved` -> `captured` (terminal) |
| `card_authorization.requested` | `card_authorization.create` | `new` -> `pending` |
| `card_authorization.declined` | `card_authorization.decline` | `pending` -> `declined` (terminal) |
| `card_authorization.reversed` | `card_authorization.reverse` | `approved` -> `reversed` (terminal) |

Terminal events: `card_authorization.expired` (lands in `expired`); `card_authorization.captured` (lands in `captured`); `card_authorization.declined` (lands in `declined`); `card_authorization.reversed` (lands in `reversed`). There is no composite "card_authorization finished" event; the terminal event of each exit path above is the done signal.

### Card transaction (`card_transaction`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `card_transaction.posted` | `card_transaction.create` | `new` -> `posted` |
| `card_transaction.refunded` | `card_transaction.refund` | `posted` -> `refunded` (terminal) |

Terminal events: `card_transaction.refunded` (lands in `refunded`). There is no composite "card_transaction finished" event; the terminal event of each exit path above is the done signal.

### Card dispute (`card_dispute`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `card_dispute.lost` | `card_dispute.lose` | `filed`/`under_review` -> `lost` (terminal) |
| `card_dispute.filed` | `card_dispute.create` | `new` -> `filed` |
| `card_dispute.reviewed` | `card_dispute.review` | `filed` -> `under_review` |
| `card_dispute.won` | `card_dispute.win` | `under_review` -> `won` (terminal) |

Terminal events: `card_dispute.lost` (lands in `lost`); `card_dispute.won` (lands in `won`). There is no composite "card_dispute finished" event; the terminal event of each exit path above is the done signal.

### Motor policy (`motor_policy`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `motor_policy.expired` | `motor_policy.expire` | `active` -> `expired` (terminal) |
| `motor_policy.bound` | `motor_policy.bind` | `quoted` -> `active` |
| `motor_policy.canceled` | `motor_policy.cancel` | `quoted` -> `canceled` (terminal) |
| `motor_policy.created` | `motor_policy.create` | `new` -> `quoted` |
| `motor_policy.deny_claimed` | `motor_policy.deny_claim` | `claim_open` -> `denied` (terminal) |
| `motor_policy.open_claimed` | `motor_policy.open_claim` | `active` -> `claim_open` |
| `motor_policy.claim_settled` | `motor_policy.settle_claim` | `claim_open` -> `settled` (terminal) |

Terminal events: `motor_policy.expired` (lands in `expired`); `motor_policy.canceled` (lands in `canceled`); `motor_policy.deny_claimed` (lands in `denied`); `motor_policy.claim_settled` (lands in `settled`). There is no composite "motor_policy finished" event; the terminal event of each exit path above is the done signal.

### Vehicle escrow (`vehicle_escrow`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `vehicle_escrow.penalty_collected` | `vehicle_escrow.collect_penalty` | `canceled` -> `penalty_collected` (terminal) |
| `vehicle_escrow.confirm_canceled` | `vehicle_escrow.confirm_cancel` | `cancel_quoted` -> `canceled` |
| `vehicle_escrow.created` | `vehicle_escrow.create` | `new` -> `created` |
| `vehicle_escrow.funded` | `vehicle_escrow.fund` | `created` -> `funded` |
| `vehicle_escrow.quote_canceled` | `vehicle_escrow.quote_cancel` | `funded` -> `cancel_quoted` |
| `vehicle_escrow.released` | `vehicle_escrow.release` | `funded` -> `settled` (terminal) |

Terminal events: `vehicle_escrow.penalty_collected` (lands in `penalty_collected`); `vehicle_escrow.released` (lands in `settled`). There is no composite "vehicle_escrow finished" event; the terminal event of each exit path above is the done signal.

### Vehicle listing (`vehicle_listing`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `vehicle_listing.completed` | `vehicle_listing.complete` | `reserved` -> `sold` (terminal) |
| `vehicle_listing.created` | `vehicle_listing.create` | `new` -> `listed` |
| `vehicle_listing.delisted` | `vehicle_listing.delist` | `listed` -> `delisted` (terminal) |
| `vehicle_listing.reserved` | `vehicle_listing.reserve` | `listed` -> `reserved` |
| `vehicle_listing.unreserved` | `vehicle_listing.unreserve` | `reserved` -> `listed` |

Terminal events: `vehicle_listing.completed` (lands in `sold`); `vehicle_listing.delisted` (lands in `delisted`). There is no composite "vehicle_listing finished" event; the terminal event of each exit path above is the done signal.

### Flight booking (`flight_booking`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `flight_booking.completed` | `flight_booking.complete` | `confirmed`/`cancel_quoted` -> `completed` (terminal) |
| `flight_booking.expired` | `flight_booking.expire` | `held` -> `expired` (terminal) |
| `flight_booking.package_canceled` | `flight_booking.package_cancel` | `confirmed`/`cancel_quoted` -> `package_canceled` (terminal) |
| `flight_booking.amendment_collected` | `flight_booking.amend_collect` | `confirmed` -> `confirmed` |
| `flight_booking.amendment_fee_collected` | `flight_booking.amend_fee` | `confirmed` -> `confirmed` |
| `flight_booking.amendment_refunded` | `flight_booking.amend_refund` | `confirmed` -> `confirmed` |
| `flight_booking.cancel_confirmed` | `flight_booking.cancel_confirm` | `cancel_quoted` -> `canceled` |
| `flight_booking.cancel_quoted` | `flight_booking.cancel_quote` | `confirmed` -> `cancel_quoted` |
| `flight_booking.penalty_collected` | `flight_booking.collect_penalty` | `canceled` -> `penalty_collected` (terminal) |
| `flight_booking.confirmed` | `flight_booking.confirm` | `held` -> `confirmed` |
| `flight_booking.created` | `flight_booking.create` | `new` -> `held` |
| `flight_booking.released` | `flight_booking.release` | `held` -> `released` (terminal) |

Terminal events: `flight_booking.completed` (lands in `completed`); `flight_booking.expired` (lands in `expired`); `flight_booking.package_canceled` (lands in `package_canceled`); `flight_booking.penalty_collected` (lands in `penalty_collected`); `flight_booking.released` (lands in `released`). There is no composite "flight_booking finished" event; the terminal event of each exit path above is the done signal.

### Hotel stay (`hotel_stay`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `hotel_stay.completed` | `hotel_stay.complete` | `confirmed`/`cancel_quoted` -> `completed` (terminal) |
| `hotel_stay.expired` | `hotel_stay.expire` | `held` -> `expired` (terminal) |
| `hotel_stay.package_canceled` | `hotel_stay.package_cancel` | `confirmed`/`cancel_quoted` -> `package_canceled` (terminal) |
| `hotel_stay.amendment_collected` | `hotel_stay.amend_collect` | `confirmed` -> `confirmed` |
| `hotel_stay.amendment_fee_collected` | `hotel_stay.amend_fee` | `confirmed` -> `confirmed` |
| `hotel_stay.amendment_refunded` | `hotel_stay.amend_refund` | `confirmed` -> `confirmed` |
| `hotel_stay.cancel_confirmed` | `hotel_stay.cancel_confirm` | `cancel_quoted` -> `canceled` |
| `hotel_stay.cancel_quoted` | `hotel_stay.cancel_quote` | `confirmed` -> `cancel_quoted` |
| `hotel_stay.penalty_collected` | `hotel_stay.collect_penalty` | `canceled` -> `penalty_collected` (terminal) |
| `hotel_stay.confirmed` | `hotel_stay.confirm` | `held` -> `confirmed` |
| `hotel_stay.created` | `hotel_stay.create` | `new` -> `held` |
| `hotel_stay.released` | `hotel_stay.release` | `held` -> `released` (terminal) |

Terminal events: `hotel_stay.completed` (lands in `completed`); `hotel_stay.expired` (lands in `expired`); `hotel_stay.package_canceled` (lands in `package_canceled`); `hotel_stay.penalty_collected` (lands in `penalty_collected`); `hotel_stay.released` (lands in `released`). There is no composite "hotel_stay finished" event; the terminal event of each exit path above is the done signal.

### Travel package (`travel_package`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `travel_package.canceled` | `travel_package.cancel` | `booked` -> `cancelled` (terminal) |
| `travel_package.completed` | `travel_package.complete` | `booked` -> `completed` (terminal) |
| `travel_package.confirmed` | `travel_package.confirm` | `draft` -> `booked` |
| `travel_package.created` | `travel_package.create` | `new` -> `draft` |

Terminal events: `travel_package.canceled` (lands in `cancelled`); `travel_package.completed` (lands in `completed`). There is no composite "travel_package finished" event; the terminal event of each exit path above is the done signal.

### Wallet (`wallet`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `wallet.activated` | `wallet.activate` | `created` -> `active` |
| `wallet.closed` | `wallet.close` | `active`/`frozen` -> `closed` (terminal) |
| `wallet.created` | `wallet.create` | `new` -> `created` |
| `wallet.frozen` | `wallet.freeze` | `active` -> `frozen` |
| `wallet.topped_up` | `wallet.topup` | `active` -> `active` |
| `wallet.unfrozen` | `wallet.unfreeze` | `frozen` -> `active` |
| `wallet.withdrawn` | `wallet.withdraw` | `active` -> `active` |

Terminal events: `wallet.closed` (lands in `closed`). There is no composite "wallet finished" event; the terminal event of each exit path above is the done signal.

### Wallet spend (`wallet_spend`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `wallet_spend.created` | `wallet_spend.create` | `new` -> `created` |
| `wallet_spend.posted` | `wallet_spend.post` | `created` -> `posted` |
| `wallet_spend.refunded` | `wallet_spend.refund` | `posted` -> `refunded` (terminal) |

Terminal events: `wallet_spend.refunded` (lands in `refunded`). There is no composite "wallet_spend finished" event; the terminal event of each exit path above is the done signal.

### Credit agreement (`credit_agreement`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `credit_agreement.advanced` | `credit_agreement.advance` | `created`/`advanced` -> `advanced` |
| `credit_agreement.created` | `credit_agreement.create` | `new` -> `created` |
| `credit_agreement.refinanced` | `credit_agreement.refinance` | `advanced` -> `closed_refinanced` (terminal) |
| `credit_agreement.rescheduled` | `credit_agreement.reschedule` | `advanced` -> `closed_rescheduled` (terminal) |
| `credit_agreement.settled` | `credit_agreement.settle` | `advanced` -> `settled` (terminal) |
| `credit_agreement.written_off` | `credit_agreement.write_off` | `advanced` -> `written_off` (terminal) |

Terminal events: `credit_agreement.refinanced` (lands in `closed_refinanced`); `credit_agreement.rescheduled` (lands in `closed_rescheduled`); `credit_agreement.settled` (lands in `settled`); `credit_agreement.written_off` (lands in `written_off`). There is no composite "credit_agreement finished" event; the terminal event of each exit path above is the done signal.

### Installment (`installment`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `installment.collected` | `installment.collect` | `scheduled`/`overdue` -> `collected` (terminal) |
| `installment.marked_overdue` | `installment.mark_overdue` | `scheduled` -> `overdue` |
| `installment.created` | `installment.create` | `new` -> `scheduled` |
| `installment.written_off` | `installment.write_off` | `overdue` -> `written_off` (terminal) |

Terminal events: `installment.collected` (lands in `collected`); `installment.written_off` (lands in `written_off`). There is no composite "installment finished" event; the terminal event of each exit path above is the done signal.

### Exposure arrangement (`exposure_arrangement`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `exposure_arrangement.approved` | `exposure_arrangement.approve` | `pending_approval` -> `approved` |
| `exposure_arrangement.closed` | `exposure_arrangement.close` | `approved` -> `closed` (terminal) |
| `exposure_arrangement.created` | `exposure_arrangement.create` | `new` -> `pending_approval` |
| `exposure_arrangement.rejected` | `exposure_arrangement.reject` | `pending_approval` -> `rejected` (terminal) |

Terminal events: `exposure_arrangement.closed` (lands in `closed`); `exposure_arrangement.rejected` (lands in `rejected`). There is no composite "exposure_arrangement finished" event; the terminal event of each exit path above is the done signal.

### Collections case (`collections_case`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `collections_case.plan_agreed` | `collections_case.agree_plan` | `assigned` -> `plan_agreed` (terminal) |
| `collections_case.assigned` | `collections_case.assign` | `opened` -> `assigned` |
| `collections_case.created` | `collections_case.create` | `new` -> `opened` |
| `collections_case.recalled` | `collections_case.recall` | `opened`/`assigned` -> `recalled` (terminal) |
| `collections_case.recovered` | `collections_case.recover` | `assigned` -> `recovered` (terminal) |
| `collections_case.returned_uncollected` | `collections_case.return_uncollected` | `assigned` -> `returned_uncollected` (terminal) |

Terminal events: `collections_case.plan_agreed` (lands in `plan_agreed`); `collections_case.recalled` (lands in `recalled`); `collections_case.recovered` (lands in `recovered`); `collections_case.returned_uncollected` (lands in `returned_uncollected`). There is no composite "collections_case finished" event; the terminal event of each exit path above is the done signal.

### Contact attempt (`contact_attempt`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `contact_attempt.created` | `contact_attempt.create` | `new` -> `recorded` |
| `contact_attempt.voided` | `contact_attempt.void` | `recorded` -> `voided` (terminal) |

Terminal events: `contact_attempt.voided` (lands in `voided`). There is no composite "contact_attempt finished" event; the terminal event of each exit path above is the done signal.

### Payout run (`payout_run`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `payout_run.executed` | `payout_run.execute` | `scheduled`/`withheld` -> `executed` (terminal) |
| `payout_run.canceled` | `payout_run.cancel` | `scheduled` -> `canceled` (terminal) |
| `payout_run.created` | `payout_run.create` | `new` -> `scheduled` |
| `payout_run.withheld` | `payout_run.withhold` | `scheduled` -> `withheld` |

Terminal events: `payout_run.executed` (lands in `executed`); `payout_run.canceled` (lands in `canceled`). There is no composite "payout_run finished" event; the terminal event of each exit path above is the done signal.

### Funding round (`funding_round`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `funding_round.activated` | `funding_round.activate` | `open` -> `active` |
| `funding_round.failed` | `funding_round.fail` | `open` -> `failed` (terminal) |
| `funding_round.closed` | `funding_round.close` | `active` -> `settled` (terminal) |
| `funding_round.created` | `funding_round.create` | `new` -> `open` |

Terminal events: `funding_round.failed` (lands in `failed`); `funding_round.closed` (lands in `settled`). There is no composite "funding_round finished" event; the terminal event of each exit path above is the done signal.

### Funding commitment (`funding_commitment`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `funding_commitment.collected` | `funding_commitment.collect` | `committed` -> `collected` (terminal) |
| `funding_commitment.refunded` | `funding_commitment.refund` | `committed` -> `refunded` (terminal) |
| `funding_commitment.created` | `funding_commitment.create` | `new` -> `committed` |

Terminal events: `funding_commitment.collected` (lands in `collected`); `funding_commitment.refunded` (lands in `refunded`). There is no composite "funding_commitment finished" event; the terminal event of each exit path above is the done signal.

### Lender distribution (`lender_distribution`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `lender_distribution.payouted` | `lender_distribution.payout` | `claimed` -> `paid` (terminal) |
| `lender_distribution.created` | `lender_distribution.create` | `new` -> `claimed` |

Terminal events: `lender_distribution.payouted` (lands in `paid`). There is no composite "lender_distribution finished" event; the terminal event of each exit path above is the done signal.

### Savings circle (`savings_circle`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `savings_circle.activated` | `savings_circle.activate` | `forming` -> `active` |
| `savings_circle.closed` | `savings_circle.close` | `active` -> `completed` (terminal) |
| `savings_circle.created` | `savings_circle.create` | `new` -> `forming` |
| `savings_circle.disbanded` | `savings_circle.disband` | `forming` -> `disbanded` (terminal) |

Terminal events: `savings_circle.closed` (lands in `completed`); `savings_circle.disbanded` (lands in `disbanded`). There is no composite "savings_circle finished" event; the terminal event of each exit path above is the done signal.

### Circle membership (`circle_membership`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `circle_membership.activated` | `circle_membership.activate` | `joined` -> `active` |
| `circle_membership.contributed` | `circle_membership.contribute` | `active`/`paid` -> `active` |
| `circle_membership.pot_received` | `circle_membership.receive_pot` | `active` -> `paid` |
| `circle_membership.withdrawn` | `circle_membership.withdraw` | `joined` -> `withdrawn` (terminal) |
| `circle_membership.created` | `circle_membership.create` | `new` -> `joined` |

Terminal events: `circle_membership.withdrawn` (lands in `withdrawn`). There is no composite "circle_membership finished" event; the terminal event of each exit path above is the done signal.

### Sale settlement (`sale_settlement`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `sale_settlement.abandoned` | `sale_settlement.abandon` | `created` -> `abandoned` (terminal) |
| `sale_settlement.cancelled` | `sale_settlement.cancel` | `funded` -> `cancelling_1` |
| `sale_settlement.service_fee_collected` | `sale_settlement.collect_service_fee` | `funding_3` -> `funded` |
| `sale_settlement.handover_confirmed` | `sale_settlement.confirm_handover` | `funded` -> `releasing_1` |
| `sale_settlement.created` | `sale_settlement.create` | `new` -> `created` |
| `sale_settlement.piece_1_funded` | `sale_settlement.fund_piece_1` | `created` -> `funding_1` |
| `sale_settlement.piece_2_funded` | `sale_settlement.fund_piece_2` | `funding_1` -> `funding_2` |
| `sale_settlement.piece_3_funded` | `sale_settlement.fund_piece_3` | `funding_2` -> `funding_3` |
| `sale_settlement.piece_2_refunded` | `sale_settlement.refund_piece_2` | `cancelling_1` -> `cancelling_2` |
| `sale_settlement.piece_3_refunded` | `sale_settlement.refund_piece_3` | `cancelling_2` -> `cancelled` (terminal) |
| `sale_settlement.piece_2_released` | `sale_settlement.release_piece_2` | `releasing_1` -> `releasing_2` |
| `sale_settlement.piece_3_released` | `sale_settlement.release_piece_3` | `releasing_2` -> `released` (terminal) |
| `sale_settlement.piece_1_unfunded` | `sale_settlement.unfund_piece_1` | `funding_1`/`abandoning_1` -> `abandoned` (terminal) |
| `sale_settlement.piece_2_unfunded` | `sale_settlement.unfund_piece_2` | `funding_2`/`abandoning_2` -> `abandoning_1` |
| `sale_settlement.piece_3_unfunded` | `sale_settlement.unfund_piece_3` | `funding_3` -> `abandoning_2` |

Terminal events: `sale_settlement.abandoned` (lands in `abandoned`); `sale_settlement.piece_3_refunded` (lands in `cancelled`); `sale_settlement.piece_3_released` (lands in `released`); `sale_settlement.piece_1_unfunded` (lands in `abandoned`). There is no composite "sale_settlement finished" event; the terminal event of each exit path above is the done signal.

### Trade settlement (`trade_settlement`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `trade_settlement.posted` | `trade_settlement.post` | `released` -> `settled` (terminal) |
| `trade_settlement.abandoned` | `trade_settlement.abandon` | `created` -> `abandoned` (terminal) |
| `trade_settlement.cancelled` | `trade_settlement.cancel` | `funded` -> `cancelled` (terminal) |
| `trade_settlement.created` | `trade_settlement.create` | `new` -> `created` |
| `trade_settlement.clawed_back` | `trade_settlement.dispute` | `released` -> `clawed_back` (terminal) |
| `trade_settlement.funded` | `trade_settlement.fund` | `created` -> `funded` |
| `trade_settlement.released` | `trade_settlement.release` | `funded` -> `released` |

Terminal events: `trade_settlement.posted` (lands in `settled`); `trade_settlement.abandoned` (lands in `abandoned`); `trade_settlement.cancelled` (lands in `cancelled`); `trade_settlement.clawed_back` (lands in `clawed_back`). There is no composite "trade_settlement finished" event; the terminal event of each exit path above is the done signal.

### Held settlement (`held_settlement`)

| Event | Fired by | Lifecycle move |
| --- | --- | --- |
| `held_settlement.released_on_deadline` | `held_settlement.release_on_deadline` | `funded` -> `released` (terminal) |
| `held_settlement.abandoned` | `held_settlement.abandon` | `created` -> `abandoned` (terminal) |
| `held_settlement.cancelled` | `held_settlement.cancel` | `funded` -> `cancelled` (terminal) |
| `held_settlement.created` | `held_settlement.create` | `new` -> `created` |
| `held_settlement.funded` | `held_settlement.fund` | `created` -> `funded` |
| `held_settlement.released` | `held_settlement.release` | `funded` -> `released` (terminal) |

Terminal events: `held_settlement.released_on_deadline` (lands in `released`); `held_settlement.abandoned` (lands in `abandoned`); `held_settlement.cancelled` (lands in `cancelled`); `held_settlement.released` (lands in `released`). There is no composite "held_settlement finished" event; the terminal event of each exit path above is the done signal.

## Platform events

| Event | Fired by | Resulting status |
| --- | --- | --- |
| `account.closed` | `account.close` | `accepted`, `succeeded`, `failed` |
| `account.created` | `account.create` | `accepted`, `succeeded`, `failed` |
| `account.frozen` | `account.freeze` | `accepted`, `succeeded`, `failed` |
| `account.unfrozen` | `account.unfreeze` | `accepted`, `succeeded`, `failed` |
| `account.system_frozen` | `account.system_freeze` | `accepted`, `succeeded`, `failed` |
| `account.system_unfrozen` | `account.system_unfreeze` | `accepted`, `succeeded`, `failed` |
| `api.key.rotated` | `api_key.rotate` | `accepted`, `succeeded`, `failed` |
| `beneficiary.activated` | `beneficiary.activate` | `accepted`, `succeeded`, `failed` |
| `billing.adjustment.created` | `billing_adjustment.create` | `accepted`, `succeeded`, `failed` |
| `admin.billing.discount.cleared` | `admin.billing.discount.clear` | `accepted`, `succeeded`, `failed` |
| `admin.billing.discount.set` | `admin.billing.discount.set` | `accepted`, `succeeded`, `failed` |
| `billing.period.opened` | `billing_period.open` | `accepted`, `succeeded`, `failed` |
| `billing.period.snapshotted` | `billing_period.snapshot` | `accepted`, `succeeded`, `failed` |
| `billing.period.snapshot.voided` | `billing_period.snapshot.void` | `accepted`, `succeeded`, `failed` |
| `admin.billing.platform_rate.cleared` | `admin.billing.platform_rate.clear` | `accepted`, `succeeded`, `failed` |
| `admin.billing.platform_rate.set` | `admin.billing.platform_rate.set` | `accepted`, `succeeded`, `failed` |
| `billing.platform_revenue_account.provisioned` | `billing.platform.revenue.account.provision` | `accepted`, `succeeded`, `failed` |
| `billing.subscription.activated` | `billing_subscription.activate` | `accepted`, `succeeded`, `failed` |
| `billing.subscription.cancelled` | `billing_subscription.cancel` | `accepted`, `succeeded`, `failed` |
| `billing.sweep.executed` | `billing_sweep.execute` | `accepted`, `succeeded`, `failed` |
| `reporting.bureau_report.generated` | `bureau_report.generate` | `accepted`, `succeeded`, `failed` |
| `credit.granted` | `credit.grant` | `accepted`, `succeeded`, `failed` |
| `credit_note.created` | `credit_note.create` | `accepted`, `succeeded`, `failed` |
| `customer_access.activated` | `customer_access.activate` | `accepted`, `succeeded`, `failed` |
| `reporting.default_rate_publication.generated` | `default_rate_publication.generate` | `accepted`, `succeeded`, `failed` |
| `deposit.received` | `deposit.record` | `accepted`, `succeeded`, `failed` |
| `deposit.returned` | `deposit.return` | `accepted`, `succeeded`, `failed` |
| `entity.disabled` | `entity.disable` | `accepted`, `succeeded`, `failed` |
| `entity.rejected` | `entity.reject` | `accepted`, `succeeded`, `failed` |
| `fee_settlement.executed` | `fee_settlement.execute` | `accepted`, `succeeded`, `failed` |
| `financial_address.activated` | `financial_address.activate` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.corrected` | `internal_transfer.correct` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.expired` | `internal_transfer.expire` | `accepted`, `succeeded`, `failed` |
| `invoice.credited` | `invoice.credit` | `accepted`, `succeeded`, `failed` |
| `invoice.drafted` | `invoice.draft` | `accepted`, `succeeded`, `failed` |
| `invoice.finalized` | `invoice.finalize` | `accepted`, `succeeded`, `failed` |
| `invoice_line.created` | `invoice_line.create` | `accepted`, `succeeded`, `failed` |
| `invoice.paid` | `invoice.pay` | `accepted`, `succeeded`, `failed` |
| `invoice.voided` | `invoice.void` | `accepted`, `succeeded`, `failed` |
| `payout.completed` | `payout.complete` | `accepted`, `succeeded`, `failed` |
| `payout.failed` | `payout.fail` | `accepted`, `succeeded`, `failed` |
| `payout.reservation_rejected` | `payout.reject` | `accepted`, `succeeded`, `failed` |
| `payout.funds_reserved` | `payout.reserve` | `accepted`, `succeeded`, `failed` |
| `payout.returned` | `payout.return` | `accepted`, `succeeded`, `failed` |
| `payout.processing` | `payout.submit` | `accepted`, `succeeded`, `failed` |
| `product.capability.restricted` | `product.capability.restrict` | `accepted`, `succeeded`, `failed` |
| `product.capability.revoked` | `product.capability.revoke` | `accepted`, `succeeded`, `failed` |
| `product.program.relowered` | `product.program.relower` | `accepted`, `succeeded`, `failed` |
| `product.promoted` | `product.promote` | `accepted`, `succeeded`, `failed` |
| `provider.cost.recorded` | `provider.cost.record` | `accepted`, `succeeded`, `failed` |
| `provider.webhook.event.received` | `provider_webhook_event.simulate` | `accepted`, `succeeded`, `failed` |
| `reporting.safeguarding_report.generated` | `safeguarding_report.generate` | `accepted`, `succeeded`, `failed` |
| `admin.session.revoked` | `admin.session.revoke` | `accepted`, `succeeded`, `failed` |
| `reporting.statement.generated` | `statement.generate` | `accepted`, `succeeded`, `failed` |
| `statement.ingested` | `statement.ingest` | `accepted`, `succeeded`, `failed` |
| `admin.support.booking.confirmed` | `admin.support.booking.confirm` | `accepted`, `succeeded`, `failed` |
| `admin.support.booking.declined` | `admin.support.booking.decline` | `accepted`, `succeeded`, `failed` |
| `admin.support.plan.updated` | `admin.support.plan.set` | `accepted`, `succeeded`, `failed` |
| `admin.support.ticket.replied` | `admin.support.ticket.reply` | `accepted`, `succeeded`, `failed` |
| `admin.support.ticket.status.updated` | `admin.support.ticket.status.set` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_onboarding.begun` | `tenant.bank_onboarding.begin` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_onboarding.confirmed` | `tenant.bank_onboarding.confirm` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_onboarding.declined` | `tenant.bank_onboarding.decline` | `accepted`, `succeeded`, `failed` |
| `tenant.closed` | `tenant.close` | `accepted`, `succeeded`, `failed` |
| `tenant.created` | `tenant.create` | `accepted`, `succeeded`, `failed` |
| `tenant.reactivated` | `tenant.reactivate` | `accepted`, `succeeded`, `failed` |
| `tenant.suspended` | `tenant.suspend` | `accepted`, `succeeded`, `failed` |
| `admin.tenant.updated` | `admin.tenant.update` | `accepted`, `succeeded`, `failed` |
| `tenant.withdrawal.created` | `tenant.withdrawal.create` | `accepted`, `succeeded`, `failed` |
| `transfer_hold.canceled` | `transfer_hold.cancel` | `accepted`, `succeeded`, `failed` |
| `transfer_hold.cleared` | `transfer_hold.clear` | `accepted`, `succeeded`, `failed` |
| `transfer_hold.created` | `transfer_hold.create` | `accepted`, `succeeded`, `failed` |
| `transfer_hold.expired` | `transfer_hold.expire` | `accepted`, `succeeded`, `failed` |
| `transfer_return.completed` | `transfer_return.complete` | `accepted`, `succeeded`, `failed` |
| `transfer_return.dishonored` | `transfer_return.dishonor` | `accepted`, `succeeded`, `failed` |
| `transfer_return.rejected` | `transfer_return.reject` | `accepted`, `succeeded`, `failed` |
| `transfer_reversal.created` | `transfer_reversal.create` | `accepted`, `succeeded`, `failed` |
| `trust.review.external_confirmation.ingested` | `trust_evidence.external_confirmation.ingest` | `accepted`, `succeeded`, `failed` |
| `trust.review.external_confirmation.recorded` | `trust_evidence.external_confirmation.record` | `accepted`, `succeeded`, `failed` |
| `trust.review.requirement.recorded` | `trust_requirement.record` | `accepted`, `succeeded`, `failed` |
| `trust.review.requirement.waived` | `trust_requirement.waive` | `accepted`, `succeeded`, `failed` |
| `trust.review.approved` | `trust_review.approve` | `accepted`, `succeeded`, `failed` |
| `trust.review.cancelled` | `trust_review.cancel` | `accepted`, `succeeded`, `failed` |
| `trust.review.provider_check.recorded` | `trust_review.provider_check.record` | `accepted`, `succeeded`, `failed` |
| `trust.review.refreshed` | `trust_review.refresh` | `accepted`, `succeeded`, `failed` |
| `trust.review.reviewed` | `trust_review.review` | `accepted`, `succeeded`, `failed` |
| `trust.review.subject.upserted` | `trust_review_subject.upsert` | `accepted`, `succeeded`, `failed` |
| `usage.recorded` | `usage.record` | `accepted`, `succeeded`, `failed` |
| `admin.user.reactivated` | `admin.user.reactivate` | `accepted`, `succeeded`, `failed` |
| `admin.user.suspended` | `admin.user.suspend` | `accepted`, `succeeded`, `failed` |
| `api.key.live.created` | `api_key.live.create` | `accepted`, `succeeded`, `failed` |
| `api.key.revoked` | `api_key.revoke` | `accepted`, `succeeded`, `failed` |
| `api.key.sandbox.created` | `api_key.sandbox.create` | `accepted`, `succeeded`, `failed` |
| `beneficiary.created` | `beneficiary.create` | `accepted`, `succeeded`, `failed` |
| `beneficiary.disabled` | `beneficiary.disable` | `accepted`, `succeeded`, `failed` |
| `beneficiary.verified` | `beneficiary.verify` | `accepted`, `succeeded`, `failed` |
| `blueprint.submitted` | `blueprint.submit` | `accepted`, `succeeded`, `failed` |
| `card_dispute.updated` | `card_dispute.update` | `accepted`, `succeeded`, `failed` |
| `card.updated` | `card.update` | `accepted`, `succeeded`, `failed` |
| `cardholder.updated` | `cardholder.update` | `accepted`, `succeeded`, `failed` |
| `catalog.authored` | `catalog.author` | `accepted`, `succeeded`, `failed` |
| `claim.updated` | `claim.update` | `accepted`, `succeeded`, `failed` |
| `collection.pay_in.cancelled` | `collection.pay_in.cancel` | `accepted`, `succeeded`, `failed` |
| `collection.pay_in.captured` | `collection.pay_in.capture` | `accepted`, `succeeded`, `failed` |
| `collection.pay_in.reserved` | `collection.pay_in.reserve` | `accepted`, `succeeded`, `failed` |
| `collections_case.updated` | `collections_case.update` | `accepted`, `succeeded`, `failed` |
| `consent.granted` | `consent.grant` | `accepted`, `succeeded`, `failed` |
| `consent.revoked` | `consent.revoke` | `accepted`, `succeeded`, `failed` |
| `credit_agreement.updated` | `credit_agreement.update` | `accepted`, `succeeded`, `failed` |
| `customer_access.closed` | `customer_access.close` | `accepted`, `succeeded`, `failed` |
| `customer_access.created` | `customer_access.create` | `accepted`, `succeeded`, `failed` |
| `customer_access.reactivated` | `customer_access.reactivate` | `accepted`, `succeeded`, `failed` |
| `customer_access.suspended` | `customer_access.suspend` | `accepted`, `succeeded`, `failed` |
| `customer.created` | `customer.create` | `accepted`, `succeeded`, `failed` |
| `customer.disabled` | `customer.disable` | `accepted`, `succeeded`, `failed` |
| `customer.erased` | `customer.erase` | `accepted`, `succeeded`, `failed` |
| `customer.reactivated` | `customer.reactivate` | `accepted`, `succeeded`, `failed` |
| `customer.session.revoked` | `customer.session.revoke` | `accepted`, `succeeded`, `failed` |
| `customer.signed_up` | `customer.signup` | `accepted`, `succeeded`, `failed` |
| `customer.updated` | `customer.update` | `accepted`, `succeeded`, `failed` |
| `entity.kyc.submitted` | `entity.kyc.submit` | `accepted`, `succeeded`, `failed` |
| `entity.kyc.verification.refreshed` | `entity.kyc.verification.refresh` | `accepted`, `succeeded`, `failed` |
| `entity.kyc.verification.started` | `entity.kyc.verification.start` | `accepted`, `succeeded`, `failed` |
| `entity.updated` | `entity.update` | `accepted`, `succeeded`, `failed` |
| `escrow_order.updated` | `escrow_order.update` | `accepted`, `succeeded`, `failed` |
| `expected_payment.canceled` | `expected_payment.cancel` | `accepted`, `succeeded`, `failed` |
| `expected_payment.created` | `expected_payment.create` | `accepted`, `succeeded`, `failed` |
| `exposure_arrangement.updated` | `exposure_arrangement.update` | `accepted`, `succeeded`, `failed` |
| `financial_address.requested` | `financial_address.create` | `accepted`, `succeeded`, `failed` |
| `financial_address.disabled` | `financial_address.disable` | `accepted`, `succeeded`, `failed` |
| `flight_booking.updated` | `flight_booking.update` | `accepted`, `succeeded`, `failed` |
| `hotel_stay.updated` | `hotel_stay.update` | `accepted`, `succeeded`, `failed` |
| `installment.updated` | `installment.update` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.adjusted` | `internal_transfer.adjust` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.created` | `internal_transfer.create` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.partially_posted` | `internal_transfer.post` (outcome `reserved`) | `accepted`, `succeeded`, `failed` |
| `internal_transfer.posted` | `internal_transfer.post` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.reserved` | `internal_transfer.reserve` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.reversed` | `internal_transfer.reverse` | `accepted`, `succeeded`, `failed` |
| `internal_transfer.voided` | `internal_transfer.void` | `accepted`, `succeeded`, `failed` |
| `listing.updated` | `listing.update` | `accepted`, `succeeded`, `failed` |
| `motor_policy.updated` | `motor_policy.update` | `accepted`, `succeeded`, `failed` |
| `order.updated` | `order.update` | `accepted`, `succeeded`, `failed` |
| `payout.created` | `payout.create` | `accepted`, `succeeded`, `failed` |
| `payout_run.updated` | `payout_run.update` | `accepted`, `succeeded`, `failed` |
| `personal_access_token.created` | `personal_access_token.create` | `accepted`, `succeeded`, `failed` |
| `personal_access_token.revoked` | `personal_access_token.revoke` | `accepted`, `succeeded`, `failed` |
| `platform.tenant.designated` | `platform.tenant.designate` | `accepted`, `succeeded`, `failed` |
| `policy.updated` | `policy.update` | `accepted`, `succeeded`, `failed` |
| `product.blueprint.composed` | `product.blueprint.compose` | `accepted`, `succeeded`, `failed` |
| `product.build.kit.downloaded` | `product.build.kit.download` | `accepted`, `succeeded`, `failed` |
| `product.capability.retired` | `product.capability.retire` | `accepted`, `succeeded`, `failed` |
| `product.capability.unretired` | `product.capability.unretire` | `accepted`, `succeeded`, `failed` |
| `product.closed` | `product.close` | `accepted`, `succeeded`, `failed` |
| `product.dials.configured` | `product.dials.configure` | `accepted`, `succeeded`, `failed` |
| `product.disabled` | `product.disable` | `accepted`, `succeeded`, `failed` |
| `product.earn.rate.configured` | `product.earn.rate.set` | `accepted`, `succeeded`, `failed` |
| `product.earnings.settled` | `product.earnings.settle` | `accepted`, `succeeded`, `failed` |
| `product.instruments.composed` | `product.instruments.compose` | `accepted`, `succeeded`, `failed` |
| `product.primitives.created` | `product.primitives.create` | `accepted`, `succeeded`, `failed` |
| `product.reactivated` | `product.reactivate` | `accepted`, `succeeded`, `failed` |
| `product.recomposed` | `product.recompose` | `accepted`, `succeeded`, `failed` |
| `product.treasury.provisioned` | `product.treasury.provision` | `accepted`, `succeeded`, `failed` |
| `product.updated` | `product.update` | `accepted`, `succeeded`, `failed` |
| `sandbox.account.funded` | `sandbox.account.fund` | `accepted`, `succeeded`, `failed` |
| `sandbox.bank_credit.queued` | `sandbox_bank_credit.request` | `accepted`, `succeeded`, `failed` |
| `sandbox.beneficiary.accepted` | `sandbox.beneficiary.accept` | `accepted`, `succeeded`, `failed` |
| `sandbox.customer_access.activated` | `sandbox.customer_access.activate` | `accepted`, `succeeded`, `failed` |
| `sandbox.customer.onboarded` | `sandbox.customer.onboard` | `accepted`, `succeeded`, `failed` |
| `sandbox.platform.fired` | `sandbox.platform.fire` | `accepted`, `succeeded`, `failed` |
| `subject.created` | `subject.create` | `accepted`, `succeeded`, `failed` |
| `subject_kind.created` | `subject_kind.create` | `accepted`, `succeeded`, `failed` |
| `support.booking.cancelled` | `support.booking.cancel` | `accepted`, `succeeded`, `failed` |
| `support.booking.requested` | `support.booking.request` | `accepted`, `succeeded`, `failed` |
| `support.ticket.closed` | `support.ticket.close` | `accepted`, `succeeded`, `failed` |
| `support.ticket.message.posted` | `support.ticket.message.post` | `accepted`, `succeeded`, `failed` |
| `support.ticket.opened` | `support.ticket.open` | `accepted`, `succeeded`, `failed` |
| `team.member.invited` | `team.member.invite` | `accepted`, `succeeded`, `failed` |
| `team.member.invite.revoked` | `team.member.invite.revoke` | `accepted`, `succeeded`, `failed` |
| `team.member.removed` | `team.member.remove` | `accepted`, `succeeded`, `failed` |
| `team.member.role.updated` | `team.member.role.update` | `accepted`, `succeeded`, `failed` |
| `team.role.created` | `team.role.create` | `accepted`, `succeeded`, `failed` |
| `team.role.deleted` | `team.role.delete` | `accepted`, `succeeded`, `failed` |
| `team.role.updated` | `team.role.update` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_connection.configured` | `tenant.bank_connection.configure` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_connection.tested` | `tenant.bank_connection.test` | `accepted`, `succeeded`, `failed` |
| `tenant.bank_onboarding.submitted` | `tenant.bank_onboarding.submit` | `accepted`, `succeeded`, `failed` |
| `tenant.security.configured` | `tenant.security.configure` | `accepted`, `succeeded`, `failed` |
| `tenant.settlement_iban.configured` | `tenant.settlement_iban.set` | `accepted`, `succeeded`, `failed` |
| `tenant.updated` | `tenant.update` | `accepted`, `succeeded`, `failed` |
| `transfer_return.initiated` | `transfer_return.create` | `accepted`, `succeeded`, `failed` |
| `trust.review.evidence.attached` | `trust_evidence.attach` | `accepted`, `succeeded`, `failed` |
| `trust.review.requirement.responded` | `trust_requirement.respond` | `accepted`, `succeeded`, `failed` |
| `trust.review.created` | `trust_review.create` | `accepted`, `succeeded`, `failed` |
| `trust.review.submitted` | `trust_review.submit` | `accepted`, `succeeded`, `failed` |
| `user.email_verified` | `user.email.verification.confirm` | `accepted`, `succeeded`, `failed` |
| `user.email_verification_requested` | `user.email.verification.request` | `accepted`, `succeeded`, `failed` |
| `user.mfa_disabled` | `user.mfa.totp.disable` | `accepted`, `succeeded`, `failed` |
| `user.mfa_enrollment_started` | `user.mfa.totp.enrollment.begin` | `accepted`, `succeeded`, `failed` |
| `user.password_reset_confirmed` | `user.password.reset.confirm` | `accepted`, `succeeded`, `failed` |
| `user.password_reset_denied` | `user.password.reset.confirm` (outcome `denied`) | `accepted`, `succeeded`, `failed` |
| `user.password_reset_requested` | `user.password.reset.request` | `accepted`, `succeeded`, `failed` |
| `user.session.revoked` | `user.session.revoke` | `accepted`, `succeeded`, `failed` |
| `user.signed_up` | `user.signup` | `accepted`, `succeeded`, `failed` |
| `vehicle_escrow.updated` | `vehicle_escrow.update` | `accepted`, `succeeded`, `failed` |
| `vehicle_listing.updated` | `vehicle_listing.update` | `accepted`, `succeeded`, `failed` |
| `wallet.updated` | `wallet.update` | `accepted`, `succeeded`, `failed` |
| `webhook.delivery.resent` | `webhook.delivery.resend` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.created` | `webhook.endpoint.create` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.deleted` | `webhook.endpoint.delete` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.disabled` | `webhook.endpoint.disable` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.enabled` | `webhook.endpoint.enable` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.recovered` | `webhook.endpoint.recover` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.secret.rotated` | `webhook.endpoint.secret.rotate` | `accepted`, `succeeded`, `failed` |
| `webhook.endpoint.updated` | `webhook.endpoint.update` | `accepted`, `succeeded`, `failed` |
