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

> ## Agent Instructions
> Bitnob API requests authenticate with an `X-Auth-Client` API key header against https://api.bitnob.com.
> Always use the sandbox environment for testing. Never put live API keys in sample code.
> Money amounts are integers in the smallest unit of the currency (satoshis for BTC, cents for fiat). Never use floats.
> Every state-changing request takes a client-supplied `reference` and must be treated as idempotent on retry.
> Quotes expire. Re-quote rather than reusing a stale quote id.

# Stablecoins UX best practices

> Interface patterns that make chains, fees, confirmations, and addresses understandable to users.

## Let users choose chain, but only when it adds value

If advanced users want control, expose a "Select Network" dropdown, populated from [Stablecoins Supported Chains](https://www.bitnob.dev/api-reference/addresses/supported-chains.md) rather than a hardcoded list, with:

* Network name (e.g., Solana (SPL))
* Token type (e.g., USDT)
* Withdrawal fee (\$1 flat, the same on every chain)
* Typical confirmation time for that chain

Educate the user at the moment of decision, not in a separate guide.

## Always show status clearly

For every transfer or deposit:

* Show “Pending” with a live progress bar (e.g., “6/15 confirmations”)
* Auto-update to “Confirmed” when Bitnob emits the [webhook](https://www.bitnob.dev/docs/stablecoins/address-webhook-events.md#webhook)

On failure, surface the following. `transfer.failed` carries no failure reason; the [error responses](https://www.bitnob.dev/api-reference/withdrawals/initiate-withdrawal.md) list the codes a rejected request can return.

* Error summary (e.g., "The transfer failed and your funds were returned.")
* Reference ID for support
* Option to retry or contact support

Transaction feedback is critical. Never leave users in a “did it work?” state.

## Display fees transparently

Before submitting a send:

* You’re sending: \$100 USDT
* Network: Polygon (USDT)
* Fee: \$1.00 (flat on every chain)
* You will be charged: \$101.00

After confirmation:

* Display the amount and chain from [Create withdrawal](https://www.bitnob.dev/api-reference/withdrawals/initiate-withdrawal.md), and read `fee` and the on-chain hash from [Get transaction](https://www.bitnob.dev/api-reference/transactions/get-transaction-by-id.md). The create response has no fee field.
* Let users click to view the transaction in a block explorer

## Reuse the reference field for trust & transparency

* Show users their reference when [initiating a send](https://www.bitnob.dev/api-reference/withdrawals/initiate-withdrawal.md)
* Reuse the same reference in receipts, webhooks, logs, and support tickets
* Encourage merchants to share that reference with customers when automating payouts

This improves user trust and makes internal debugging much faster.

## Surface the chain and token format

Check the destination with [Validate Address](https://www.bitnob.dev/api-reference/addresses/validate-address.md) before submitting, and always show:

* Chain (e.g., Ethereum)
* Token format (e.g., ERC-20)
* Wallet address format (e.g., 0x..., T..., 3...)

Warn users:

> [!NOTE]
>
> “Make sure you're sending USDT using the TRC-20 format. Sending USDT from the wrong chain may result in permanent loss of funds.”

## QR code generation

For deposits:

Show a QR code containing:

* The blockchain address returned by [Generate Addresses](https://www.bitnob.dev/api-reference/addresses/generate-address.md)
* Optionally: metadata (e.g., chain type in the URI)

Label it clearly:

“Scan to send USDT on Tron (TRC-20)”

## Mobile UX

Use action sheets for selecting chain/token Include touch-friendly copy buttons for wallet addresses

Show [transaction history](https://www.bitnob.dev/api-reference/transactions/list-transactions.md) with clear icons:

* Received → Green
* Sent → Red
* Pending → Yellow

## Error and edge case UX

If a user sends to the wrong address or chain:

* Don’t promise recovery
* Offer an “Unverified Deposit” view for manual follow-up with support

Surface a support contact flow with:

* txHash
* address used
* chain and token

## Real-time alerts

Integrate [Bitnob webhooks](https://www.bitnob.dev/docs/stablecoins/address-webhook-events.md#webhook) with:

* Toasts/snackbars on successful deposits or transfers
* In-app notifications
* Email/SMS if applicable for higher-value transfers


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.