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