For each webhook event, the tables give its lifecycle state, when the platform sends it and what your endpoint does with it. The events for token sales, trading venues and XvP settlements are on Market and settlement events. Payload fields, schemas and examples are not here. They live in the machine-readable event definitions and in the Webhook types of @settlemint/dalp-sdk. Subscriptions, lifecycle states and consuming rules have their own pages.
In a State cell, beta is an event-contract maturity label. It is not a value of the envelope's lifecycle_state field.
Before using payload fields
New endpoints use thin payloads, which omit personal data fields. Some actions in the tables need fields that thin payloads remove, such as accountAddress, subjectAddress, confirmationId or statementId. Configure fat payloads and acknowledge the required fields before the platform records those events if your receiver needs those fields. The payload-shape rules describe this change. Replay sends the stored payload, so it cannot recover fields already removed from a thin event.
Find the event for your question
Access control
An access manager is the contract that records which accounts hold which roles. A role change has no final event: apply it when the provisional event arrives, and undo it when the matching retracted event arrives. A chain reorganisation replaces recent blocks. After a chain reorganisation removes the block of a role change, the platform sends a retracted event only when it recorded a successful delivery of the provisional event. If your acknowledgement was lost, the platform can cancel the event and send no retraction. Reconcile an uncertain role against the current canonical transaction receipt and its logs. Retractions states the rule.
A role granted with an expiry is time-bound: the platform revokes it at expiresAt. The role can be a token role, which names tokenAddress and account, or the organisation owner role, which names userId. Two events announce the end of a time-bound grant. The platform's expiry sweep sends them rather than a chain log, so they arrive as final without a provisional event. Match them by grantId. A token role revocation also produces access- when the revoke lands on chain. An owner role goes out on the organisation's default chain, so an organisation with no default chain receives neither event for it.
Asset
Asset events report changes to a tokenised asset, read from chain logs. A block reaches chain finality once the chain head is the network's finality depth past it, as Lifecycle states defines. The platform sends a final asset event at that point and never retracts it.
Compliance
Freeze events report that a holder's balance of an asset was frozen or released, and the platform reads them from the logs of the asset contract. The verification verdict event reports a connected provider's decision and has no chain log behind it.
Bank rail
Subscribe to bank-rail.credit.* and bank-rail.cash-out.* to follow bank payments on your endpoint's System and chain. The default state subscriptions skip these names. Every event below has envelope state final and version 1. A bank recall is a credit status event, separate from the envelope's reserved recall lifecycle.
The Console's Payments tab lists every recall, including the partial ones that send no credit event, so read it when a recall changes a credit and no event arrives.
Amounts are decimal strings in the bank currency: "12.50" with currency: "EUR" means 12.50 EUR. occurredAt is the time the rail stored the milestone. A thin payload omits participantId. Approval identities, thresholds, park reasons, recovered amounts and write-down figures stay private in every payload shape.
Mint approval, mint submission and resolution submission send no intermediate credit event. Cash-out events advance once through requested, instructed, paid and returned, or report released. A released request can later report paid after late settlement, full recovery and burn, then returned once its re-credit is admitted. Remove delivery duplicates by evt_id, and use source_id to identify the same occurrence across replays.
Custody
A System is an organisation's on-chain DALP deployment, and its account factory creates smart wallets, which are contract wallets. Custody events report those accounts, including changes to their signing rules, and the cash balances of custody participants. The account events reach only endpoints on the System that owns the account. The deposit, withdrawal and fee events give amount as a decimal string in base units, the smallest unit of the asset that assetKey names.
Funding
A funding requirement records that an address needs more of the chain's native currency to pay gas, the fee for a transaction. The platform opens one when a write, a transaction it sends to the chain, pauses for lack of gas, and closes it when the address is funded or the wait ends. Match the events of one requirement by requirementId, and read requiredWei as an amount in wei, the smallest unit of the native currency. observedWei, when present, is the balance the platform read for the address: on funding. the balance when the requirement opened, on funding. the balance that settled it.
Identity
Each System, an organisation's on-chain DALP deployment, has an identity registry that links account addresses to identity contracts, which hold the claims about each account. These events report changes to registry entries and to claims on registered identities. The platform sends a final identity event after chain finality and never retracts it.
Operations
An operations case records a problem that the platform cannot resolve automatically, for example a reconciliation break between a bank statement and token supply, or a bank credit that the bank rail parked. An operator acknowledges the case and resolves it, or the platform resolves it when the problem clears. A case that is not resolved by expiresAt is expired, and no event reports that. Two kinds belong to the custodian watch: custodian-, for a privileged action by a wallet outside the custodian's organisation on a token it custodies, and custodian-upgrade-notice, for an upgrade scheduled for a factory whose tokens it custodies. Custodian watch describes both. Match the events of one case by caseId. Each event belongs to the chain in chainId. If chainId is null, the case names no chain and the event belongs to the organisation's default chain. A thin delivery omits participantId, accountRef, detail and resolvedBy.
Reporting
Reporting events tell you what the platform recorded in its reporting store. reporting. confirms a token movement for one wallet, and the platform sends it only to endpoints of an organisation with a member who holds the wallet or signs for it, once the block reaches chain finality. The other reporting events go to every endpoint of the organisation.
Token
The platform reads transfer and fee events from chain logs. It sends a coupon claim or maturity redemption event for each claim or redemption log once the log's block reaches chain finality, and it records corporate action and document events itself, with no chain log behind them. A corporate action is a scheduled change to a token and its holders' positions, such as a dividend, a coupon or a stock split. A mint or burn also produces the transfer events, with the all-zero address as sender or recipient.
The token., token.transfer.retracted, asset.issuance.* and asset.burn.final events, and version 2 of token.transfer.final, carry occurredAt, the time of the block that holds the movement, so a ledger can post the movement on the right date from the event alone. A token that keeps a register books each movement as a numbered line with a register reference, the identifier the registrar files it under. When a movement is booked as one of those lines, the event also carries registerLine with lineId, registerReference and, for a line that corrects an earlier one, correctsLineId. A movement that the platform cannot pair with exactly one booked line carries no registerLine. A mint or burn of a mirror token carries externalReference, the custodian or registrar transaction id sent with the mint or burn. Events stored before these fields existed have none of them.
Transaction request
A transaction request is one on-chain write that the platform accepts and tracks. These events report the request's progress, not the finality of a token movement. Each event reaches the organisation and chain of the request. Match events by transactionId, and use the asset and token events to record movements.
The final state of transaction. and the other outcome events means the request has its outcome. It does not mean the block is final on the chain. transaction. goes out once the platform's indexer has processed the block that holds the transaction, for direct wallet writes and for account abstraction writes alike. A chain reorganisation after that point can still remove the transaction, so wait for the token or asset events before you treat a movement as final. A transaction. event is the one exception while its transaction request shows may: the event is final for the queue, but a later outcome event with the same transactionId can still follow.
The platform records the event together with the state change. Setting a request to the state it already holds sends nothing. Leaving the broadcast states and entering them again with a hash sends another broadcast event. Replacing a hash while confirming sends nothing. A request that fails, is retried by an operator, and fails again sends two failed events with different source_id values.
One request can send transaction. and then transaction., when it is cancelled after it failed. A dead-lettered request can send another outcome later, as the transaction request table describes. Treat the latest outcome as the current one, and read the record before you retry or refund on a failed event.
A thin delivery omits fromAddress, errorMessage, and revertReason. The platform limits the two error fields to 1,024 characters. Read the full record with GET /api/.
The default subscriptions skip all five events. Use transaction.request.*, transaction.*, exact names, or *, as the subscriptions reference describes.
Test event
webhook.test.final is the default test event. The platform sends a test event only when someone requests one for an endpoint, from the Console or with POST /api/. It reaches that endpoint whatever its subscriptions, with lifecycle_state final, is_test set to true and the payload { "test": true }. Use it to check your signature verification, and never act on it as a business event. The setup guide states its limits.
Reserved names
These event names are registered, but no action in the platform sends them.
Related
- Market and settlement events: the events of token sales, trading venues and XvP settlements.
- Subscriptions: the patterns that select events, and the events the default subscriptions skip.
- Lifecycle states: what each state means, with worked sequences.
- Consuming webhooks: identifiers, deduplication, ordering, retries and retractions.