> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anchorage.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Overview

> Receive event-driven notifications for operations and transactions across your organization.

The Anchorage Digital Webhooks API delivers event-driven notifications for your organization's operations and transactions. Event notifications are configurable by endpoint and by event type.

For details on retry behavior, delivery guarantees, and consumer requirements, see [Delivery and reliability](/knowledge-base/porto/developers/webhooks/webhooks-delivery).

## Supported events

### transfer

**`transfer.initiated`**\
Payload: `transactionId`, [`details`](#transaction-lifecycle-transfers-and-withdrawals)

Transfer initiated. Fires multiple times as the transfer advances — see [Transaction lifecycle](#transaction-lifecycle-transfers-and-withdrawals).

<hr className="webhook-event-divider" />

**`transfer.completed`**\
Payload: `transactionId`, [`details`](#transaction-lifecycle-transfers-and-withdrawals)

Transfer successfully completed.

<hr className="webhook-event-divider" />

**`transfer.failed`**\
Payload: `transactionId`, [`details`](#failure-reasons)

Transfer failed. See [Failure reasons](#failure-reasons).

### withdrawal

**`withdrawal.initiated`**\
Payload: `transactionId`, [`details`](#transaction-lifecycle-transfers-and-withdrawals)

Withdrawal initiated. Fires multiple times as the withdrawal advances — see [Transaction lifecycle](#transaction-lifecycle-transfers-and-withdrawals).

<hr className="webhook-event-divider" />

**`withdrawal.completed`**\
Payload: `transactionId`, [`details`](#transaction-lifecycle-transfers-and-withdrawals)

Withdrawal successfully completed.

<hr className="webhook-event-divider" />

**`withdrawal.failed`**\
Payload: `transactionId`, [`details`](#failure-reasons)

Withdrawal failed. See [Failure reasons](#failure-reasons).

### deposit

**`deposit.attributed`**\
Payload: `transactionId`

Deposit attribution completed.

<hr className="webhook-event-divider" />

**`deposit.pending-attribution`**\
Payload: `transactionId`

New deposit pending attribution.

## Transaction lifecycle (transfers and withdrawals)

For `transfer` and `withdrawal`, the three events, `initiated`, `completed`, and `failed`, track an operation across its whole lifecycle. Unlike other topics, `initiated` fires more than once: each time the operation reaches a new phase, a fresh `initiated` event arrives with a different `details` value. Read `details` to know where the operation is. `completed` fires once on success, and `failed` fires once on a terminal failure, each with its own `details` value.

<Note>
  Expanded lifecycle `details` are rolling out per organization. If you don't yet see a `details` field on your `transfer` and `withdrawal` events, notify your integration point of contact.
</Note>

<Frame>
  <img src="https://mintcdn.com/deployment-4/bSO_CWn8q41fjx44/knowledge-base/images/diagrams/withdrawal_state_machine.svg?fit=max&auto=format&n=bSO_CWn8q41fjx44&q=85&s=bb5f0cf2094c63b66e7316d8be8a23b2" alt="Transfer and withdrawal request lifecycle: initiated queued, quorum-met (withdrawal only), and signing are cancelable and can fail; initiated broadcasting is not cancelable; then completed. Failures are rejected, expired, or canceled." width="1100" height="420" data-path="knowledge-base/images/diagrams/withdrawal_state_machine.svg" />
</Frame>

Each `initiated` event carries one of these `details` values:

| `details`                           | Fires when                                                         | Still cancelable? |
| :---------------------------------- | :----------------------------------------------------------------- | :---------------- |
| `queued`                            | Operation created, waiting on quorum approval and/or risk review   | Yes               |
| `quorum-met` (withdrawals only)     | Quorum approvals gathered, handed to Anchorage Digital risk review | Yes               |
| `signing`                           | Risk review passed, transaction signing begins                     | Yes               |
| `broadcasting` (committed on-chain) | Transaction broadcast to the network                               | No                |

The `completed` event carries a single `details` value, `completed`, once the operation settles successfully.

### Failure reasons

A `failed` event fires once if the operation ends unsuccessfully, carrying one of these `details` values:

| `details`  | Meaning                                                             |
| :--------- | :------------------------------------------------------------------ |
| `rejected` | An approver or Anchorage Digital risk review rejected the operation |
| `expired`  | The operation timed out before completion                           |
| `canceled` | The operation was canceled                                          |

Some `failed` events arrive with no `details` field. Treat a missing `details` as an unspecified failure.

Because `initiated` now fires multiple times, order matters. Webhook delivery is at-least-once and events may arrive out of order, so use `details` rather than arrival order to track progress. See [Delivery and reliability](/knowledge-base/porto/developers/webhooks/webhooks-delivery) for handling duplicates and out-of-order events.
