Crypto Deposit Withdraw

Accept crypto deposits and automatically initiate fiat payouts to your users.

Crypto Deposit Withdraw

Crypto Deposit Withdraw allows merchants to accept stablecoin deposits from users on supported blockchains and automatically convert them into fiat payouts. When a user sends crypto to the provided deposit address, Coinflow detects the deposit, converts it to USD, and initiates a payout to the user’s linked bank account or debit card.

This is ideal for platforms that want to offer crypto off-ramps without building and maintaining their own blockchain settlement infrastructure.

How It Works

  1. Your platform requests a deposit address for a user
  2. The user sends stablecoins (USDC or USDT) to the deposit address
  3. Coinflow detects the deposit and automatically initiates a fiat payout to the user’s linked account

Supported Chains

Crypto Deposit Withdraw supports the following chains:

Production:

ChainSupported Tokens
PolygonUSDC, USDT
SolanaUSDC, USDT
EthereumUSDC, USDT
ArbitrumUSDC, USDT
BaseUSDC, USDT

Sandbox:

ChainSupported Tokens
Polygon AmoyUSDC, USDT
Solana DevnetUSDC, USDT
Base SepoliaUSDC, USDT

Use the Get Supported Chains endpoint to dynamically retrieve the current list of supported chains and tokens.


Prerequisites

Before using Crypto Deposit Withdraw, ensure:

  • The user has completed KYC verification
  • The user has a linked payout destination (bank account or debit card)
  • Your merchant account is configured for crypto withdrawals — contact the Coinflow integrations team to enable this feature

Integration

Get Supported Chains

Retrieve the list of supported blockchains and tokens. Use this to display available deposit options to your users.

$GET /withdraw/crypto-deposit-address

Response:

1{
2 "chains": [
3 {
4 "name": "Polygon",
5 "image": "https://example.com/polygon-logo.png",
6 "tokens": [
7 {
8 "name": "USD Coin",
9 "symbol": "USDC",
10 "image": "https://example.com/usdc-logo.png"
11 },
12 {
13 "name": "Tether USD",
14 "symbol": "USDT",
15 "image": "https://example.com/usdt-logo.png"
16 }
17 ]
18 }
19 ]
20}

The example response above shows sample values. Actual chain names, token names, and image URLs will differ in production. Always use the API response to populate your UI.

Create a Deposit Session

Create a deposit session to generate a deposit address for a user. The user sends stablecoins to this address — any amount is accepted — and once the deposit is confirmed, Coinflow automatically initiates the fiat payout for the value received.

Deposit addresses are open-ended: the user chooses the amount they send, and the payout is sized to match the value of the tokens received.

$POST /withdraw/crypto-deposit-address

Request Body:

ParameterTypeRequiredDescription
accountstringYesThe user’s payout account token (bank account or debit card token)
speedstringYesPayout speed — see Payout Speeds
chainstringYesThe blockchain to accept deposits on (e.g., "Polygon", "Ethereum", "Solana")
tokenstringYesThe token symbol to accept (e.g., "USDC", "USDT")

Example Request:

1{
2 "account": "act_abc123",
3 "speed": "asap",
4 "chain": "Polygon",
5 "token": "USDC"
6}

The account value above is an example. Use the actual payout account token from your user’s linked bank account or debit card.

Response:

1{
2 "depositAddress": "0x1234...abcd",
3 "paymentChainName": "Polygon",
4 "paymentCurrencySymbol": "USDC",
5 "chainLogoUrl": "https://example.com/polygon-logo.png",
6 "currencyLogoUrl": "https://example.com/usdc-logo.png"
7}
FieldDescription
depositAddressThe on-chain address where the user should send tokens
paymentChainNameThe name of the blockchain for the deposit
paymentCurrencySymbolThe token symbol the user should send
chainLogoUrlURL for the blockchain logo (use in your UI)
currencyLogoUrlURL for the token logo (use in your UI)

Authentication

The Create Deposit Session endpoint requires both:

  • Merchant authentication — Admin-level merchant API key
  • User authentication — The user must be an approved withdrawer (via wallet auth or session key)

See User Identification for details on authenticating users for payouts.


Payout Lifecycle

Once a user sends tokens to the deposit address:

  1. Deposit detected — Coinflow monitors the deposit address and detects the incoming transaction
  2. Conversion — The stablecoins are converted to USD
  3. Payout initiated — A fiat payout is automatically initiated to the user’s linked account at the specified speed
  4. Payout completed — The user receives funds in their bank account or on their debit card

Monitor payout status using Withdraw Webhooks to notify your users when their payout is complete.


Supported Payout Speeds

All standard payout speeds are available with Crypto Deposit Withdraw. The speed parameter determines how quickly the user receives their fiat funds after the deposit is confirmed.

SpeedDescription
"asap"RTP / Instant (24/7/365)
"card"Push to debit card (instant)
"same_day"Same-day ACH
"standard"Standard ACH (2-3 business days)

See Understanding Payout Speeds for full details.