How Offramps Work
Offramps follow a quote-based flow:1
Create offramp request
Specify the source wallet, destination account, and amount to convert.
2
Review quote
Examine the exchange rate, fees, and quote expiration time.
3
Accept quote
Accept the quote to execute the conversion. Stablecoins are converted to fiat and sent to the registered bank account.
Creating Offramps
Use the Create Offramp endpoint to get a quote. Request:Response
Response
string
Unique offramp ID. Use this to track the transaction and accept the quote.
string
Offramp status.
OPEN_QUOTE means the quote is ready for review. See Transaction Status for details.object
Conversion quote details including exchange rate, amounts, and expiration time.
object
Developer fee details if included in the request.
object
Source wallet details including user information and stablecoin amount.
object
Destination bank account details including account ID and user information.
object
Transaction receipt. Contains
transactionHash once the stablecoin conversion is confirmed on-chain, and paymentTracking once fiat processing begins.For detailed field documentation, see the Create
Offramp API reference.
Accepting Quotes
After reviewing the quote, accept it to execute the conversion using the Accept Quote endpoint. Request:Response
Response
string
Updated offramp status.
CRYPTO_INITIATED means the conversion has started. See Transaction Status for progression.Transaction Status
Offramps progress through several phases:System Statuses
Crypto Processing Phase
Fiat Processing Phase
Failed Payouts and Returns
An offramp can fail on either leg, and what happens to the funds depends on which leg failed:CRYPTO_FAILED: Transfer was rejected before the fiat leg started. When the offramp is funded from a HIFI wallet, nothing left the wallet. When it is funded from an external wallet, crypto is returned to the sender and offramp continues on toCRYPTO_RETURNED.FIAT_FAILED: Fiat payout failed after the crypto had already left the source wallet. Crypto is returned to the sender, and the offramp progresses toCRYPTO_RETURNEDonce that on-chain delivery confirms. Depending on the rail, it may report an intermediateFIAT_RETURNEDfirst.
Tracking Offramps
Status Updates: Subscribe to
OFFRAMP webhook events to receive real-time status notifications. See Webhooks for setup instructions.Quote Validity
Quotes expire 10 minutes after creation to ensure current market rates. This prevents:- Stale pricing during volatile markets
- Long-pending transactions
- Rate arbitrage
QUOTE_FAILED):
- Create a new offramp request
- Review the updated quote
- Accept the new quote within 10 minutes
Purpose of Payment Code
Payment Purpose Codes (PPCs), also known as payment reason codes, are standardized identifiers that provide the reason for a crossborder or international payment. PPCs enable payers to categorize the payment, whether for goods, services, investments, or other purposes. In crossborder payments, PPCs add an additional layer of transparency by ensuring funds are used for legitimate purposes and are considered mandatory or required fields by the Central Banking authority in certain jurisdictions, i.e. India, Malaysia, and the United Arab Emirates.United Arab Emirates (ARE)
Key Concepts
Quote Information
Quote Information
The quote provides complete pricing transparency:
- sendGross: Total stablecoins being converted
- sendNet: Net amount after fees
- receiveGross: Total fiat before fees
- receiveNet: Actual fiat you’ll receive
- rate: Exchange rate (stablecoin to fiat)
- expiresAt: Quote expiration timestamp
receiveNet matches your expectations before accepting.Developer Fees
Developer Fees
Monetize offramp transactions by adding a developer fee when creating the offramp:FIX: Fixed amount regardless of transaction sizePERCENT: Percentage of transaction amountDeveloper fees are paid in stablecoins from the source wallet before conversion.
USDT Fee
USDT Fee
USDT offramps incur an additional 0.1% exchange fee beyond standard rates. This fee appears on your monthly invoice, not deducted from the transaction amount.
Account Requirements
Account Requirements
Before creating offramps, ensure:
- User has completed KYC for the destination currency’s rail
- Offramp account is created and active (status:
ACTIVE) - Sufficient stablecoin balance in the source wallet
Getting Help
- 📧 Email: support@hifi.com
- 💬 Slack: Message us in our shared Slack channel
Related Resources
- Quickstart Guide - Complete offramp tutorial
- Offramp Accounts - Set up bank accounts for receiving fiat
- Users - KYC requirements for offramping
- Webhooks - Real-time offramp status notifications
- API Reference - Complete endpoint documentation