How Onramp Accounts Work
Create onramp
Initiate an onramp using the Create Onramp endpoint. HIFI generates a one-time account for that transaction—unique deposit details (bank account, routing number, reference ID) valid only for this transfer.
User sends fiat
The user sends the exact amount to the generated account details, including the reference ID in the transfer memo so HIFI can match the deposit.
source.accountId and use the one-time deposit instructions returned in the Create Onramp response. For Africa currencies, you must first register an onramp account (Create Account with rail: "onramp") and pass source.accountId when creating the onramp.
Each one-time account is valid for a single transaction and the specified amount and currency.
Prerequisites
Creating Onramp Accounts (Registered Accounts)
For Africa, users must have a registered onramp account before you can create an onramp. For USD, the one-time deposit flow does not require a pre-registered account. You can still register USD onramp accounts via the Create Account endpoint withrail: "onramp"; the required fields vary by region and currency.
USD Accounts
For USD onramps, you can register an onramp account so it is available when creating onramps. When creating an onramp, omittingsource.accountId returns one-time deposit instructions for that transaction.
Always
onramp for onramp accounts.Account region. For US accounts, use
us.Account holder information. Must match user’s KYC data for compliance.
US-specific bank account details.
Unique account ID. Save this to pass as
source.accountId when creating onramps.Account status:
ACTIVE (ready to use), PENDING (being validated), or REJECTED (validation failed)List of validation errors. Empty array means all fields are valid.
Africa Rail Accounts
Africa Rail supports multiple countries with bank accounts and mobile money (momo) as the source of fiat for onramps. For Africa currencies, a registered onramp account is required before creating an onramp—you must passsource.accountId when calling Create Onramp.
Financial institution name (e.g.,
MTN, Vodafone, or specific bank names). See supported institutions in the Africa Rail documentation.Account type:
momo (mobile money) or bankAccount or mobile money number
Currency code (e.g.,
ugx, kes, ngn)Country code (e.g.,
uga, ken, gha)Check the Africa Rail documentation and supported institutions for onramp-supported combinations of country, currency, and financial institution.
Using the One-Time Generated Account
Create an onramp with the Create Onramp endpoint. The response includes one-time deposit details (depositInfo) for that transaction. For Africa, you must first create an onramp account (see above) and pass its ID in source.accountId.
Request (USD — one-time deposit instructions):
source.accountId when creating the onramp.
Complete Onramp Flow: See the Onramps documentation for the full process including quote acceptance, status tracking, and deposit instructions.
Account Validation
After creating an onramp account, HIFI validates the account details:| Status | Description |
|---|---|
| ACTIVE | Account validated and ready to use for onramps |
| PENDING | Account being validated (typically resolves within minutes) |
| REJECTED | Validation failed - check invalidFields for specific issues |
ACCOUNT.ONRAMP.CREATE, ACCOUNT.ONRAMP.UPDATE) or by calling the Retrieve an account endpoint.
List, Retrieve, and Delete
- List accounts: GET /v2/users//accounts — use query param
rail=onrampto filter onramp accounts. - Retrieve one account: GET /v2/users//accounts/
- Delete account: DELETE /v2/users//accounts/
Key Concepts
USD: One-time generated account
USD: One-time generated account
For USD onramps, you typically omit
source.accountId. The Create Onramp response includes a one-time generated account—unique bank details and a reference ID for that single transaction. The user sends fiat to those details; HIFI matches the deposit and delivers stablecoins.Africa: accountId required
Africa: accountId required
For Africa currencies,
source.accountId is required when creating an onramp. The user must have at least one active onramp account (created via Create Account with rail: "onramp") for the chosen currency/country before you can create an onramp.Onramp accounts vs virtual accounts
Onramp accounts vs virtual accounts
Onramp accounts (one-time): When you create an onramp, HIFI generates a one-time set of deposit details for that transaction. Virtual accounts are reusable HIFI-issued bank account details; the user deposits fiat to the same account number for multiple deposits. Both support fiat-to-crypto; virtual accounts are reusable, while onramp-API flow uses a new one-time account per transaction.
Getting Help
- 📧 Email: support@hifi.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Quickstart Guide - Step-by-step tutorial
- Rails - Understand KYC requirements for different rails
- Onramps - Complete guide to onramp transfers
- Virtual Accounts - Reusable deposit accounts for USD onramps
- Account Events - Real-time onramp account creation and updates
- API Reference - Complete endpoint documentation