Coinbase Offramp Overview
Offramp lets your users convert crypto into fiat and send funds directly to a bank account (ACH) or a Coinbase account. Follow these steps to create and complete an offramp transaction:
- Create an offramp transaction by generating an Offramp URL
- Create an onchain transaction to send user funds from your App to Coinbase
- Coinbase process the transaction and deposits into your users account
See it live Check out our Onramp + Offramp Demo App repo.
Step 1: Generate an Offramp URL with your parameters
Create a https://pay.coinbase.com/v3/sell/<params>
URL which you direct your users to. Be sure to include the following parameters:
partnerUserId
: Your App’s unique user identifierredirectUrl
: User will be taken after they submit an offramp transaction (Add your url to your onramp app domain allowlist on CDP portal, Coinbase will validate that this is in your App’s domain allowlist. You can also use localhost domain for testing)addresses
: The address of the user cashing out crypto for fiat. This address must contain the funds to be sold when the offramp transaction is created.sessionToken
: used to securely authenticate users and manage sessions (this is required and will be enforced starting 7/31/2025)
Note: Offramp transactions time out 30 mins after users click the “Cash out now” button in the Coinbase widget. Users must perform the onchain send transaction within this time.
Example Offramp URL
Session tokens are now required and will be enforced starting 7/31/2025. The URL should look like this:
Step 2: Create an onchain transaction to send user funds from your App to Coinbase
- Call the Offramp Transaction Status API using
partnerUserId
. - Use the returned
sell_amount
,asset
,network
, andto_address
to create an onchain send transaction in your App.- Note:
to_address
is a Coinbase managed onchain address where send funds to be offramped
- Note:
- User signs the send transaction in your App.
- Once this transaction is created, Coinbase will wait for onchain confirmation and process the transaction.
Step 3: Coinbase processes the transaction and deposits fiat into the user’s account!
- Coinbase validates the onchain send transaction to match
from_address
,to_address
,amount
,network
, andasset
.- Note: for offramp transactions on Bitcoin and Bitcoin-based crypto assets (e.g. Zcash – ZEC, Litecoin – LTC, Bitcoin Cash – BCH, DogeCoin-DOGE) we do not validate
from_address
as it changes after every transaction.
- Note: for offramp transactions on Bitcoin and Bitcoin-based crypto assets (e.g. Zcash – ZEC, Litecoin – LTC, Bitcoin Cash – BCH, DogeCoin-DOGE) we do not validate
- Users will receive a status notification via SMS or email and in their Coinbase App based on the transaction’s state:
- Initiated: eg. “Your sell for $100.00 of BTC has been started”
- Success: eg. “You’ve sold $100.00 of BTC”
- Fail: eg. “Your BTC was deposited to your Coinbase account”
- If after the onchain send, the price of the asset falls below the “Receive at least” amount in a user’s transaction, Coinbase will cancel the transaction and deposit the full crypto amount in the user’s Coinbase account
- Your App can pull the latest offramp transaction status from the Offramp Transaction Status API
See it live!
Check out our Onramp + Offramp Demo App. Have questions? Drop us a message in the #onramp channel of the CDP Discord!
Offramp API Endpoints
The Offramp API has the following endpoints:
Method | Description |
---|---|
Session Token | Required starting 7/31/2025: Provides a secure way for the client to initialize the Onramp and Offramp widget. |
Offramp Config | Returns list of countries supported by Coinbase Offramp, and the payment methods available in each country. |
Offramp Options | Returns supported fiat currencies and available crypto assets that can be passed into the Offramp Quote API. |
Offramp Quote | Provides a quote based on the asset the user would like to sell, plus the network, the crypto amount, the cashout currency, payment method, and country. |
Transaction Status | Real time transaction status updates. |
Transactions | Historical transaction status. |
Full API endpoint list
For a complete list of all API endpoints supported by Onramp/Offramp, visit our API Reference section.
Rate Limiting
The Buy Quote API and Sell Quote API are rate limited to prevent abuse that would degrade our ability to maintain consistent API performance for all users. Throttling is enforced per endpoint by app ID at VAR::BUY_QUOTE_API_REQS_PER_SEC requests per second.
If your requests are being rate limited, HTTP response code 429 is returned with a rate_limit_exceeded
error.
Rate limiting is implemented using a sliding window algorithm.