What is Offramp?
Offramp lets your customers convert cryptocurrency (USDT, USDC,etc) into fiat currency deposited to their bank account. The flow works like this:- Customer sends crypto to a deposit address
- Coinut detects the deposit
- Coinut executes the trade
- Fiat arrives in the customer’s bank account
Architecture
Prerequisites
Before starting an offramp flow, ensure:- Customer has
APPROVEDKYC status - Customer’s bank account has been added and verified
- You have the bank account ID from the
POST /bank-account/addresponse
Step-by-Step Implementation
Create Customer
Same as onramp. Call
POST /customer/create with name, email, type="DEPOSITOR", isIndividual=true. Wait for CUSTOMER_APPROVED webhook.Add Bank Account
Call Store the returned
POST /bank-account/add with the customer’s banking details.bankAccountId. Required fields vary by currency — see the Bank Account Requirements table below.Create Offramp Flow
Call This creates a deposit address and links incoming crypto to automatic fiat conversion.
POST /autoramp-flow/offramp with the crypto source and fiat destination:Display Deposit Address
Retrieve the deposit address from the flow creation response or call Display this address to the customer with a clear warning to send only on the specified network.
GET /deposit-address/detail:Customer Sends Crypto
Customer sends USDT to the displayed address on the specified network (ETH or TRX). Provide clear instructions:
- Minimum deposit amount
- Correct network only (wrong network = lost funds)
- Include memo/tag if required
Monitor Deposits
Listen for webhook events:
DEPOSIT_RECEIVED— crypto detected on-chainDEPOSIT_APPROVED— confirmations reached, deposit cleared
Track Trade
After deposit approval:
TRADE_CREATED— fiat trade initiatedTRADE_SETTLED— trade executed, fiat queued for bank transfer
Bank Account Requirements
| Currency | Required Fields | Optional Fields | Typical Settlement |
|---|---|---|---|
| USD | bankName, accountNo, aba OR swift | accountName, bankAddress | 1-2 business days |
| EUR | bankName, accountNo OR iban, swift | accountName, bankAddress | 1 business day |
| GBP | bankName, accountNo OR iban, swift | accountName, sortCode | 1 business day |
| CAD | bankName, accountNo, institutionNumber, transit | accountName | 1 business day |
| AUD | bankName, accountNo, bsb | accountName | 1 business day |
| SGD | bankName, accountNo, aba OR swift | accountName, bankAddress | 1 business day |
Complete Code Example
Go-Live Checklist
- Bank account validation working for all target currencies
- Deposit address generation tested in sandbox
- End-to-end flow verified with test transfers
- Webhook handlers for all deposit and trade events
- Error handling for insufficient funds and invalid addresses
- Banking cutoff times documented for customer communication
- Retry logic for failed bank transfers
Banking cutoff times vary by currency and institution. EUR SEPA transfers typically process until 3:00 PM CET. USD ACH transfers have a 5:00 PM ET cutoff. Communicate these timelines to your customers.

