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

# Order lifecycle and Webhooks

> Maps the Offramp deposit and sell lifecycle states and details the deposit, sell, and withdraw webhook payloads merchants receive.

The Offramp transaction lifecycle consists of the following steps:

**Crypto Deposit**

1. Completed (there is no failed state, as failed deposits do not appear in our database)

**Sell**

1. Initiated (Created)
2. Processing (Outgoing Payment Processing)
3. Completed
4. Failed

## Webhooks

The merchant can receive the following webhooks if a webhook URL is configured.

### 1. Crypto Deposit Successful

```json theme={null}
{
  "transaction_type": "DEPOSIT",
  "status": "COMPLETED",
  "crypto_symbol": "USDT",
  "network": "BSC",
  "amount": "10.00000000",
  "created_at": 1675171122000,
  "tag": "",
  "fees": null,
  "updated_at": 1675171203000,
  "usd_value": "10.00",
  "txn_hash": "Internal transfer 127897710444",
  "id": "91994108-9eff-4999-8e8f-238df8bd4961",
  "event": "deposit",
  "address": "0x94f30b2a43ec890848c64ecdbb434ea1bcc4b798",
  "source_address": "0x1a2b3c4d5e6f7890abcdef1234567890abcdef12",
  "user_id": "3faced19-20c7-48b8-952b-6143c8c198d2"
}
```

### 2. Sell Completed

```json theme={null}
{
  "event": "SELL",
  "user_id": "77c4562e-ce47-4054-9d4e-4df69ca11a11",
  "client_id": "3a309275-5936-4c79-8375-0ebb897502f0",
  "transaction_status": "COMPLETED",
  "invested_at": "2022-11-16T09:30:13Z",
  "transaction_id": "4f4d9561-b12f-4cdd-9726-d29333892fc9",
  "transfer_type": "BANK_TRANSFER",
  "bank_reference_id": "1176073620125",
  "usd_amount": 1.21,
  "fiat_amount": 100.00
}
```

### 3. Crypto Withdraw Successful

```json theme={null}
{
  "transaction_type": "COMPLETED",
  "status": "COMPLETED",
  "crypto_symbol": "USDT",
  "network": "BSC",
  "amount": "10.00000000",
  "created_at": 1675171122000,
  "tag": "",
  "fees": null,
  "updated_at": 1675171203000,
  "txn_hash": "Internal transfer 127897710444",
  "id": "91994108-9eff-4999-8e8f-238df8bd4961",
  "event": "withdraw",
  "address": "0x94f30b2a43ec890848c64ecdbb434ea1bcc4b798",
  "user_id": "3faced19-20c7-48b8-952b-6143c8c198d2"
}
```

> For crypto withdraw webhooks, `transaction_type` contains the transaction status, not a transaction-type string. Its value is one of `CREATED`, `PROCESSING`, `COMPLETED`, or `FAILED`. The separate `status` field carries the internal wallet transaction status.


## Related topics

- [Order lifecycle and Webhooks](/onramp/operations/lifecycle.md)
- [Traditional Rails](/offramp/currencies/inr-traditional.md)
- [USD Onramp](/onramp/currencies/usd.md)
- [Overview](/offramp/overview.md)
