Skip to main content
Preview Documentation — This integration is in final testing. API shapes are stable; endpoints will be live shortly. Contact your RebelFi rep if you have questions before go-live.
Walk through the core integration loop — from creating a merchant to receiving USDC.

Prerequisites

  • RebelFi account with ramping enabled
  • API key (from dashboard Settings)
  • Webhook endpoint URL configured in dashboard Settings

Step 1: Create a Merchant

Create a merchant to start the KYB process.
curl -X POST "https://api.rebelfi.io/v1/ramp/merchants" \
  -H "x-api-key: your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "OnEdge",
    "type": "business",
    "external_id": "your-internal-ref-123"
  }'
Response:
{
  "id": 1,
  "name": "OnEdge",
  "type": "business",
  "external_id": "your-internal-ref-123",
  "kyb_status": "pending",
  "kyb_url": "https://kyb.provider.com/verify/abc123",
  "created_at": "2026-03-15T10:00:00Z"
}
The kyb_url in the response is the link you send to your merchant. They complete a short hosted verification form — takes a few minutes.

Step 2: Wait for KYB Approval

KYB is asynchronous. When approved, RebelFi fires a customer.approved webhook to your endpoint with the merchant’s bank account details.
{
  "event": "customer.approved",
  "timestamp": "2026-03-15T12:00:00Z",
  "data": {
    "customer_id": 1,
    "name": "OnEdge",
    "bank_account": {
      "account_number": "12345678",
      "routing_number": "987654321",
      "bank_name": "Lead Bank",
      "capabilities": ["ach", "fedwire"]
    }
  }
}
If KYB is declined, you’ll receive a customer.declined event instead.

Step 3: Share Bank Account Details

Your merchant can now receive USD payments. Pull bank account details anytime via GET /v1/ramp/merchants/{id} — the bank_account object is present once kyb_status is approved.
curl "https://api.rebelfi.io/v1/ramp/merchants/1" \
  -H "x-api-key: your_api_key"
{
  "id": 1,
  "name": "OnEdge",
  "type": "business",
  "kyb_status": "approved",
  "bank_account": {
    "account_number": "12345678",
    "routing_number": "987654321",
    "bank_name": "Lead Bank",
    "capabilities": ["ach", "fedwire"],
    "status": "active"
  },
  "total_volume_usd": 0,
  "monthly_volume_usd": 0,
  "transaction_count": 0,
  "created_at": "2026-03-15T10:00:00Z"
}
Share the account number and routing number with your merchant so their payers can send USD via ACH or wire.

Step 4: Receive Transaction Events

When a payer deposits USD into the virtual bank account, RebelFi converts it to USDC and fires a transaction.completed webhook:
{
  "event": "transaction.completed",
  "timestamp": "2026-03-20T14:35:00Z",
  "data": {
    "transaction_id": 1,
    "customer_id": 1,
    "usd_amount": "50000",
    "total_fee": "125",
    "developer_fee": "25",
    "usdc_delivered": "49875"
  }
}
Query GET /v1/ramp/transactions anytime to pull transaction history.

Next Steps