Skip to main content

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 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
On failure, surface the following. transfer.failed carries no failure reason; the error responses 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, and read fee and the on-chain hash from Get transaction. 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
  • 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 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:
“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
  • 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 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 with:
  • Toasts/snackbars on successful deposits or transfers
  • In-app notifications
  • Email/SMS if applicable for higher-value transfers