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

# Off-Ramp

> USDC/USDT to USD conversion and payout via off-ramp accounts

## Overview

Off-ramp accounts let your recipients convert USDC or USDT to USD. Each off-ramp account has a dedicated crypto deposit address — send stablecoins to it, and USD is delivered to the configured bank account via ACH, Fedwire, or SWIFT.

## How It Works

<Steps>
  <Step title="Recipient Has KYB + Address">
    The recipient must be KYB-approved and have a physical address on file. Include the address when creating the recipient, or update it later.
  </Step>

  <Step title="Create Off-Ramp Account">
    Call `POST /v1/ramp/recipients/{id}/offramp-accounts` with the source wallet, payment rail, and bank details.
  </Step>

  <Step title="Receive Crypto Deposit Address">
    The response includes a `source_crypto_address` — this is the address where USDC/USDT should be sent.
  </Step>

  <Step title="Send Stablecoins">
    Send USDC or USDT to the deposit address from any wallet.
  </Step>

  <Step title="USD Delivered">
    The stablecoins are converted to USD and delivered to the configured bank account. Fees are deducted automatically.
  </Step>
</Steps>

## Creating an Off-Ramp Account

```bash theme={null}
curl -X POST "https://api.rebelfi.io/v1/ramp/recipients/1/offramp-accounts" \
  -H "x-api-key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "org_wallet_id": 42,
    "source_asset": "USDC",
    "rail": "ach",
    "bank_details": {
      "routing_number": "021000021",
      "account_number": "987654321",
      "account_type": "checking",
      "account_holder_name": "OnEdge Inc",
      "bank_name": "Chase Bank"
    }
  }'
```

### Parameters

| Parameter       | Required | Description                                                 |
| --------------- | -------- | ----------------------------------------------------------- |
| `org_wallet_id` | Yes      | Source wallet ID                                            |
| `source_asset`  | No       | Crypto asset to accept (default: `USDC`)                    |
| `rail`          | No       | Payment rail: `ach`, `fedwire`, or `swift` (default: `ach`) |
| `bank_details`  | Yes      | Bank account for USD delivery                               |

### Response

```json theme={null}
{
  "id": 1,
  "source_crypto_address": "0xABC123...",
  "source_asset": "USDC",
  "destination_asset": "USD",
  "network_id": "solana-mainnet",
  "rail": "ach",
  "fiat_bank_name": "Chase Bank",
  "fiat_account_type": "checking",
  "fiat_account_holder_name": "OnEdge Inc",
  "status": "active"
}
```

<Info>
  The `source_crypto_address` is the deposit address. Share this with the recipient or use it programmatically to send USDC/USDT for conversion.
</Info>

## Transaction Events

Off-ramp transactions fire dedicated webhook events:

* `offramp_transaction.completed` — USD successfully delivered to bank account
* `offramp_transaction.failed` — conversion or delivery failed

See [Webhooks](/ramping/webhooks) for full payload details.

## What to Do With On-Ramped Stablecoins

Once USDC/USDT lands in your wallet via on-ramp, you can deploy it to earn yield using RebelFi's yield infrastructure. See our [yield documentation](/guides/welcome) to learn how to generate 5-8% APY on your on-ramped stablecoins.
