> ## 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.

# From External Wallet

> Offramp deposit flow: fetch a user deposit address, receive the DEPOSIT success webhook, and query deposit transactions before selling.

For a user selling crypto, a deposit must happen first. The user sees one transaction, but you need to handle deposit and sell as two separate steps:

1. Fetch the user's deposit wallet address.
2. Make the deposit to that address.
3. Wait for the success callback webhook.

## API Descriptions

1. **Fetch Deposit Wallet Address**

**API Endpoint:**\
GET [https://api.saber.money/api/v1/wallet/user\_deposit\_address?symbol=USDT\&network=BSC](https://api.saber.money/api/v1/wallet/user_deposit_address?symbol=USDT\&network=BSC)

Both `symbol` and `network` are mandatory query params. Omitting `network` returns HTTP 400 (`network is required`); omitting `symbol` returns HTTP 400 (`currency is required`). `network` must be a single value, not a comma-separated list.

**Request Example**

**Sample request:**

```bash theme={null}
curl --location 'https://api.saber.money/api/v1/wallet/user_deposit_address?symbol=BTC&network=BTC' \
  --header 'X-Timestamp: 1667458513' \
  --header 'X-Client-Id: 18e963ea-39fd-4a1b-b1e6-decbfe791d31' \
  --header 'X-Request-Id: {{request_id}}' \
  --header 'X-User-Id: {{user_id}}' \
  --header 'X-Secret-Key: {{signature}}' \
  --header 'Host: {{host}}'
```

**Sample response:**

```json theme={null}
{
  "success": true,
  "data": [
    {
      "network": "BTC",
      "name": "Bitcoin",
      "coin": "BTC",
      "address": "1HTs5QzAfwfxjPBKWtKxTBNYkGmReMS36M",
      "tag": "",
      "url": "https://blockchair.com/bitcoin/address/1HTs5QzAfwfxjPBKWtKxTBNYkGmReMS36M",
      "batchReleaseLimit": ""
    }
  ]
}
```

2. **Deposit Success Webhook**

**Webhook URL:** POST {{configured_webhook}}

**Sample webhook:**

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

Notes:

* `source_address` is always present (a string). It is empty (`""`) for internal/aggregator transfers, otherwise the on-chain sending address.
* `fees` is always present and nullable; it is currently `null` for crypto deposits.

3. **Fetch All Transactions for a User**

**API Endpoint:**\
GET [https://api.saber.money/api/v1/wallet/deposit/{user_id}](https://api.saber.money/api/v1/wallet/deposit/%7Buser_id%7D)

**Request Example**

**Sample request:**

```bash theme={null}
curl --location 'https://api.saber.money/api/v1/wallet/deposit/42a054f3-3c15-407c-9cd7-2641ab867643' \
  --header 'X-Timestamp: {{timestamp}}' \
  --header 'X-Client-Id: •••••••' \
  --header 'X-Request-Id: qretyrty' \
  --header 'X-User-Id: •••••••' \
  --header 'X-Secret-Key: •••••••' \
  --header 'Host: {{host}}'
```

**Sample response:**

```json theme={null}
{
  "success": true,
  "data": {
    "id": "42a054f3-3c15-407c-9cd7-2641ab867643",
    "created_at": 1675165880000,
    "tag": "",
    "crypto_symbol": "USDT",
    "txn_hash": "Internal transfer 127892568047",
    "transaction_type": "DEPOSIT",
    "usd_value": 9,
    "network": "MATIC",
    "source_address": null,
    "address": "0x94f30b2a43ec890848c64ecdbb434ea1bcc4b798",
    "updated_at": 1675166104000,
    "amount": 9,
    "status": "COMPLETED"
  }
}
```

4. **Fetch All Deposit Transactions**

**API Endpoint:**\
GET [https://api.saber.money/api/v2/wallet/transactions?transaction\_type=DEPOSIT](https://api.saber.money/api/v2/wallet/transactions?transaction_type=DEPOSIT)

**Request Example**

**Sample request:**

```bash theme={null}
curl --location 'https://api.saber.money/api/v2/wallet/transactions?transaction_type=DEPOSIT' \
  --header 'X-Timestamp: {{timestamp}}' \
  --header 'X-Client-Id: •••••••' \
  --header 'X-Request-Id: 2' \
  --header 'X-User-Id: •••••••' \
  --header 'X-Secret-Key: •••••••'
```

**Sample response:**

```json theme={null}
{
  "success": true,
  "data": [
    {
      "id": "018f9e6b-98f4-7381-95bc-6bbc537b153b",
      "transaction_type": "CRYPTO_DEPOSIT",
      "status": "COMPLETED",
      "amount": 29.5,
      "created_at": 1716349803000,
      "updated_at": 1716349803000,
      "uuid": "018f9e6b-98f4-7381-95bc-6bbc537b153b",
      "symbol": "USDT",
      "user_id": "25e0cdc5-7406-4011-a2e3-cd93b265d966",
      "usd_value": 29.5,
      "txn_hash": "0xf9c493a740dd47fe9cc282e5aac19f8a64056e42dff71cdcaa7159cd9e354d87",
      "tag": "",
      "source_address": "",
      "address": "0xe9c35b9e75c150d37571f1ec9..."
    }
  ]
}
```

**API Reference:** [Get Deposit Address](https://saber-money.readme.io/reference/getdepositaddress)


## Related topics

- [Quick Start Guide](/docs/quick-start-guide.md)
- [Quickstart](/docs/quickstart.md)
- [Get Buy Quote (v1)](/api-reference/onramp/get-buy-quote-v1.md)
- [Initiating Transaction](/onramp/operations/initiate-transaction.md)
- [Fund Management](/offramp/operations/fund-management.md)
