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

# Deposits & On-Ramping

> Fund subaccounts using fiat, stablecoins, and cryptocurrencies.

## Overview

Enable users to deposit funds into their subaccounts using multiple methods:

* **Fiat Currency** (e.g., NGN, BRL)
* **Stablecoins** (USDC, USDT) on supported networks
* **Cryptocurrency** (BTC via Lightning Network)

For a full list of supported currencies and networks, see the [Supported Currencies](/en/supported-currencies) page.

## 1. List Deposit Channels

Retrieve available funding methods, limits, and fees for a specific currency. You can filter the response to find the appropriate `channelId` for your deposit.

<Card title="API Reference" icon="code" href="/api-reference/endpoint/get-v1-ramp-banking-channels">
  See the full endpoint documentation
</Card>

```bash theme={null}
curl --request GET \
  --url https://api.bullring.finance/v1/ramp/banking/channels \
  --header 'Authorization: Bearer <YOUR_API_KEY>'
```

**Response**

```json theme={null}
{
  "USDC": {
    "channels": [
      {
        "id": "usdc-channel-id-bullring-finance",
        "currency": "USDC",
        "min": 0,
        "max": 1500000000000000000,
        "rampType": "deposit",
        "channelType": "crypto",
        "status": "active"
      }
    ],
    "networks": [
      {
        "id": "eth-mainnet-network-id",
        "name": "Ethereum Mainnet",
        "code": "ETH-MAINNET"
      }
    ]
  },
  "NGN": {
    "channels": [
      {
        "id": "ngn-channel-id-bullring-finance",
        "currency": "NGN",
        "min": 100,
        "max": 10000000,
        "rampType": "deposit",
        "channelType": "fiat",
        "status": "active"
      }
    ]
  }
}
```

## 2. Initiate Deposit

### Method A: Fiat Deposit

Initiate a bank transfer or other local payment method. The response will include banking details or payment instructions.

<Card title="API Reference" icon="code" href="/api-reference/endpoint/post-v1-ramp-subaccountid-banking-deposits">
  See the full endpoint documentation
</Card>

**Example: NGN Deposit**

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v1/ramp/{subaccountId}/banking/deposits \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "channelId": "ngn-channel-id-bullring-finance"
  }'
```

**Response**

```json theme={null}
{
  "id": "deposit-uuid",
  "status": "pending",
  "amount": 5000,
  "currency": "NGN",
  "bankInfo": {
    "bankName": "Providus Bank",
    "accountNumber": "1234567890",
    "accountName": "Bullring Checkout"
  }
}
```

### Method B: Crypto Deposit (On-Chain)

Get a dedicated deposit address for a specific blockchain network (e.g., Ethereum, Solana).

<Card title="API Reference" icon="code" href="/api-reference/endpoint/get-v1-ramp-subaccountid-banking-deposits-crypto-onchainnetwork">
  See the full endpoint documentation
</Card>

**Example: Get USDC Address on Ethereum Sepolia**

```bash theme={null}
curl --request GET \
  --url https://api.bullring.finance/v1/ramp/{subaccountId}/banking/deposits/crypto/ETH-SEPOLIA \
  --header 'Authorization: Bearer <YOUR_API_KEY>'
```

**Response**

```json theme={null}
{
  "id": "address-uuid",
  "address": "0x34e36e819b37577c66e7032e060866bd6a04e677",
  "chain": "ETH-SEPOLIA",
  "currency": "USDC"
}
```

### Method C: Lightning Network Deposit (BTC)

Create a Lightning invoice for Bitcoin deposits.

<Card title="API Reference" icon="code" href="/api-reference/endpoint/post-v1-ramp-subaccountid-banking-deposits-lightning">
  See the full endpoint documentation
</Card>

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v1/ramp/{subaccountId}/banking/deposits/lightning \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '{
    "amount": 10000,
    "currency": "usd",
    "note": "Top up"
  }'
```

**Response**

```json theme={null}
{
  "id": "invoice-uuid",
  "lightningInvoice": "lntbs108323630n1p53uucupp5t0...",
  "status": "unpaid",
  "paymentRequestAmount": 10000,
  "paymentRequestCurrency": "usd"
}
```

## 3. Listen for Webhook Events

Listen to webhook events to track the status of your deposits in real-time.

* `deposit.status.paid`: The deposit has been successfully paid.
* `deposit.status.unpaid`: The deposit failed.

See [Deposit Events](/en/deposit-events) for payload details.

## Common Mistakes

* **Incorrect Network:** Sending crypto assets on the wrong network (e.g., sending USDC via Polygon to an Ethereum address) will result in permanent loss of funds. Always verify the network.
* **Unverified subaccounts:** All deposit methods require the subaccount to have approved verification. Attempting to deposit into an unverified account will return an error.
* **Ignoring Limits:** Ensure the deposit amount is within the `min` and `max` limits specified in the `channels` response.
* **Wrong Channel ID:** When making a fiat deposit, ensure you use the `channelId` corresponding to the correct currency and payment method.
