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

# Instant Crypto Off-Ramp

> Convert crypto to cash instantly.

## Scenario

A user wants to sell crypto and receive cash in their local bank account using a single streamlined flow. Existing non-named offramp behavior is unchanged.

## Workflow

### 1. Add Beneficiary Bank Account

First, add the destination bank account as a beneficiary. This is where the funds will be sent after the crypto is received.

<Note>
  See the [Add Beneficiary](/api-reference/beneficiaries/add-beneficiary) API reference for full details.
</Note>

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v1/ramp/{subaccountId}/banking/beneficiaries \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "account_id": "667.136.083-96",
    "account_type": "cpf",
    "currency": "BRL"
  }'
```

### 2. Initiate Crypto Offramp

Initiate the offramp by specifying the recipient and the amount in the destination currency. The API will generate a payment instruction for the user.

<Note>
  See the [Offramp Crypto](/api-reference/withdrawals/offramp-crypto) API reference for full details.
</Note>

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v1/ramp/{subaccountId}/banking/offramp/initiate \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "recipient_id": "343bb162-d0ae-46ef-a5bb-13505eb52c89",
    "amount": 88
  }'
```

### 3. USD Offramps and named withdrawal

**Endpoint:** `POST /v2/ramp/{subaccountId}/banking/offramp/initiate`

For USD offramps, the `to` object can include `payment_rail` with `RTP`, `WIRE`, `SWIFT`, `SAME_DAY_ACH`, or `ACH`. Set `named_withdrawal` to `true` only for a USD named withdrawal. named withdrawal currently supports USD offramps only, requires a business recipient identified by `business_name`, and requires the recipient to include `beneficiary_date_of_formation`, `beneficiary_country_of_formation`, and `beneficiary_national_identification_number`. named withdrawal supports only `WIRE` and `SWIFT`; `RTP`, `SAME_DAY_ACH`, and `ACH` remain supported only for non-named USD flows where applicable.

Use the quote endpoint (`POST /v2/ramp/{subaccountId}/banking/offramp/quote`) with the same `to.payment_rail` and `to.named_withdrawal` fields when you need pricing before initiating the offramp.

### Example: Normal Non-named USD Offramp

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v2/ramp/{subaccountId}/banking/offramp/initiate \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "from": {
      "chain": "ETH-SEPOLIA",
      "asset": "USDC",
      "amount": 100,
      "sender_address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
    },
    "to": {
      "recipient_id": "39e4f180-b558-4346-bf5f-2ec9c6b444f4",
      "currency": "USD",
      "payment_rail": "ACH"
    },
    "client_offramp_reference": "5a26b319-fc68-4ee2-83f2-19889571619d"
  }'
```

### Example: USD named withdrawal Offramp by WIRE

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v2/ramp/{subaccountId}/banking/offramp/initiate \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "from": {
      "chain": "ETH-SEPOLIA",
      "asset": "USDC",
      "amount": 1000,
      "sender_address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
    },
    "to": {
      "recipient_id": "39e4f180-b558-4346-bf5f-2ec9c6b444f4",
      "currency": "USD",
      "payment_rail": "WIRE",
      "named_withdrawal": true
    },
    "client_offramp_reference": "5a26b319-fc68-4ee2-83f2-19889571620d"
  }'
```

### Example: USD named withdrawal Offramp by SWIFT

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v2/ramp/{subaccountId}/banking/offramp/initiate \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "from": {
      "chain": "ETH-SEPOLIA",
      "asset": "USDC",
      "amount": 1000,
      "sender_address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
    },
    "to": {
      "recipient_id": "39e4f180-b558-4346-bf5f-2ec9c6b444f4",
      "currency": "USD",
      "payment_rail": "SWIFT",
      "named_withdrawal": true
    },
    "client_offramp_reference": "5a26b319-fc68-4ee2-83f2-19889571621d"
  }'
```

### Example: Quote a USD named withdrawal Offramp

```bash theme={null}
curl --request POST \
  --url https://api.bullring.finance/v2/ramp/{subaccountId}/banking/offramp/quote \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: YOUR_API_KEY' \
  --data '{
    "from": {
      "asset": "USDC",
      "chain": "ETH-SEPOLIA"
    },
    "to": {
      "amount": 1000,
      "currency": "USD",
      "payment_rail": "WIRE",
      "named_withdrawal": true
    }
  }'
```

## Status and Webhooks

Track offramp status with `GET /v2/ramp/{subaccountId}/banking/offramp/{offrampId}` and listen for withdrawal webhook events to follow the final payout status.

## Advantages

This streamlined offramp flow offers several benefits:

* **Single API Call**: Generate payment instructions and initiate the withdrawal in one request
* **Automatic Processing**: Once the crypto payment is received, the withdrawal is processed automatically
* **Real-time Exchange Rates**: Get the current exchange rate and fees upfront
* **Simple Integration**: No need to manage separate deposit and withdrawal flows
