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

# Deposit Flows

> How to receive fiat and crypto deposits into your account

## Overview

There are two ways to receive deposits, depending on whether the funds are fiat or cryptocurrency. Each uses a different API and flow.

| Deposit type                   | API                                                                                   | Address source                          |
| ------------------------------ | ------------------------------------------------------------------------------------- | --------------------------------------- |
| **Fiat** (USD, EUR, GBP, etc.) | [Deposit Instructions](/api-reference/deposit-instructions/list-deposit-instructions) | Bank account details provided by HopNow |
| **Crypto** (USDC, USDT)        | [Wallets](/api-reference/wallets/create-wallet)                                       | Blockchain address from wallet creation |

## Fiat Deposits

Use the **Deposit Instructions** API to get bank account details your users can send fiat to.

<Steps>
  <Step title="Get deposit instructions">
    Call [GET /v1/accounts/\{account\_id}/deposit-instructions](/api-reference/deposit-instructions/list-deposit-instructions) to retrieve bank details for each enabled currency.

    ```bash theme={null}
    curl https://api.hopnow.io/v1/accounts/{account_id}/deposit-instructions
    ```

    The response includes bank name, account number, IBAN, SWIFT/BIC, routing number, and supported payment rails (ACH, SWIFT, SEPA, etc.).
  </Step>

  <Step title="User sends fiat">
    Share the deposit details with your user. They initiate a bank transfer using their bank or payment provider.
  </Step>

  <Step title="Receive webhook">
    When the funds arrive, you receive a [`payin.completed`](/webhooks/events#payincompleted) webhook and the account balance is updated.
  </Step>
</Steps>

<Info>
  **Fiat currencies must be enabled for your account.** If a currency returns `"status": "unavailable"`, contact support to enable it. Supported currencies include USD, EUR, GBP, JPY, and HKD.
</Info>

<Note>
  Deposit instructions are **fiat only**. To receive crypto deposits, use the Wallets API below.
</Note>

## Crypto Deposits

Use the **Wallets** API to create a blockchain wallet and get a deposit address for crypto.

<Steps>
  <Step title="Create a wallet">
    Call [POST /v1/accounts/\{account\_id}/wallets](/api-reference/wallets/create-wallet) with the desired currency and network.

    ```bash theme={null}
    curl -X POST https://api.hopnow.io/v1/accounts/{account_id}/wallets \
      -d '{"currency": "USDC", "network": "solana_devnet", "label": "USDC Wallet"}'
    ```

    The response includes the wallet's blockchain `address` — this is the deposit address.
  </Step>

  <Step title="User sends crypto">
    Share the deposit address with your user. They send USDC or USDT to that address on the correct network.
  </Step>

  <Step title="Receive webhook">
    When the transaction is confirmed on-chain, you receive a [`payin.completed`](/webhooks/events#payincompleted) webhook and the account balance is updated.
  </Step>
</Steps>

### Supported Currency and Network Combinations

<Tabs>
  <Tab title="Sandbox">
    | Currency | Network         | Notes                                                                                 |
    | -------- | --------------- | ------------------------------------------------------------------------------------- |
    | USDC     | `solana_devnet` | Fully functional — use a Solana Devnet faucet to test                                 |
    | USDT     | `solana_devnet` | Deposit **PYUSD** on Solana Devnet (temporary workaround due to provider limitations) |
  </Tab>

  <Tab title="Production">
    | Currency | Network    |
    | -------- | ---------- |
    | USDC     | `ethereum` |
    | USDC     | `solana`   |
    | USDT     | `ethereum` |
    | USDT     | `solana`   |
  </Tab>
</Tabs>

<Warning>
  One wallet is allowed per currency + network combination. Attempting to create a duplicate will return an error.
</Warning>

## Tracking Deposits

Both fiat and crypto deposits create **payin** records. Use the [Payins API](/api-reference/payins/list-payins) to query deposit history, or subscribe to [webhook events](/webhooks/events) for real-time notifications.

| Event              | Description                |
| ------------------ | -------------------------- |
| `payin.created`    | Deposit detected           |
| `payin.processing` | Deposit is being processed |
| `payin.completed`  | Funds credited to account  |
| `payin.failed`     | Deposit failed             |

## Quick Reference

<CardGroup cols={2}>
  <Card title="Fiat Deposit" icon="building-columns">
    `GET /deposit-instructions` → share bank details → `payin.completed`
  </Card>

  <Card title="Crypto Deposit" icon="wallet">
    `POST /wallets` → share address → `payin.completed`
  </Card>
</CardGroup>
