Skip to main content
Offramps convert stablecoins into fiat currency and send it to external bank accounts. Users must accept a quote before the conversion executes.

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:
curl -X POST "https://sandbox.hifibridge.com/v2/offramps" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79",
    "source": {
      "currency": "usdc",
      "chain": "POLYGON",
      "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee",
      "amount": 10
    },
    "destination": {
      "currency": "usd",
      "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce",
      "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee",
      "sameDayAch": false
    },
    "developerFee": {
      "fees": [
        {
          "type": "PERCENTAGE",
          "value": "0.0005",
          "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7"
        }
      ]
    }
  }'
The response contains the offramp quote information:
{
  "transferType": "OFFRAMP",
  "transferDetails": {
    "id": "173c1e89-7bbd-4352-9e5d-73807681510d",
    "requestId": "201ca31d-700f-4c76-ac4b-961623acbb79",
    "createdAt": "2025-02-03T16:12:04.331652+00:00",
    "updatedAt": "2025-02-03T16:12:08.732+00:00",
    "status": "OPEN_QUOTE",
    "failedReason": null,
    "source": {
      "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee",
      "chain": "POLYGON",
      "currency": "usdc",
      "amount": 10,
      "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D6",
      "user": {
        "email": "[email protected]",
        "firstName": "John",
        "lastName": "Doe",
        "businessName": null
      }
    },
    "destination": {
      "userId": "7d54a7a7-dac3-4313-8b09-27fa4b7fd1ee",
      "amount": 0,
      "currency": "usd",
      "user": {
        "email": "[email protected]",
        "firstName": "John",
        "lastName": "Doe",
        "businessName": null
      },
      "accountId": "12c1c496-8f57-41a1-8292-dbe6547791ce",
      "sameDayAch": false
    },
    "receipt": {
      "transactionHash": null,
      "paymentTracking": null
    },
    "developerFee": {
      "id": "1c3d24c1-6136-574c-a647-e7eb6a9fb6ed",
      "transactionHash": null,
      "fees": [
        {
          "type": "PERCENTAGE",
          "value": "0.0005",
          "amount": "0.000515",
          "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7"
        },
        {
          "type": "FLAT",
          "value": "0.01",
          "amount": "0.010000",
          "walletAddress": "0x366B759bAA089Fa57a08edd3F2E028E86b97f8D7"
        }
      ]
    },
    "quoteInformation": {
      "sendGross": {
        "amount": "10",
        "currency": "usdc"
      },
      "sendNet": {
        "amount": "10",
        "currency": "usdc"
      },
      "receiveGross": {
        "amount": "10",
        "currency": "usd"
      },
      "receiveNet": {
        "amount": "10",
        "currency": "usd"
      },
      "rate": "1",
      "expiresAt": "2025-02-03T16:22:08.668Z"
    },
    "depositInformation": []
  }
}
transferDetails.id
string
Unique offramp ID. Use this to track the transaction and accept the quote.
transferDetails.status
string
Offramp status. OPEN_QUOTE means the quote is ready for review. See Transaction Status for details.
transferDetails.quoteInformation
object
Conversion quote details including exchange rate, amounts, and expiration time.
transferDetails.developerFee
object
Developer fee details if included in the request.
transferDetails.source
object
Source wallet details including user information and stablecoin amount.
transferDetails.destination
object
Destination bank account details including account ID and user information.
transferDetails.receipt
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:
curl -X POST "https://sandbox.hifibridge.com/v2/offramps/173c1e89-7bbd-4352-9e5d-73807681510d/quote/accept" \
  -H "Authorization: Bearer YOUR_API_KEY"
When the quote is accepted, the response shows the updated status:
{
  "transferType": "OFFRAMP",
  "transferDetails": {
    "id": "off_abc123",
    "status": "CRYPTO_INITIATED",
    "quoteInformation": {
      "expiresAt": "2025-02-03T16:22:08.668Z"
    }
  }
}
transferDetails.status
string
Updated offramp status. CRYPTO_INITIATED means the conversion has started. See Transaction Status for progression.
Once accepted, the offramp progresses through crypto and fiat processing phases until completion.

Transaction Status

Offramps progress through several phases:

System Statuses

StatusDescription
CREATEDOfframp request created successfully
NOT_INITIATEDRequest not submitted due to validation error
OPEN_QUOTEQuote generated and awaiting acceptance
IN_REVIEWTransaction under review by monitoring systems
QUOTE_FAILEDQuote expired before acceptance

Crypto Processing Phase

StatusDescription
CRYPTO_INITIATEDConverting stablecoins, blockchain transaction started
CRYPTO_PENDINGBlockchain transaction awaiting confirmation
CRYPTO_PROCESSEDStablecoins successfully converted
CRYPTO_FAILEDBlockchain transaction failed
CRYPTO_RETURNEDFailed transaction refunded to user’s wallet

Fiat Processing Phase

StatusDescription
FIAT_INITIATEDFiat payout process started
FIAT_PENDINGFiat transaction awaiting settlement
FIAT_FAILEDFiat transaction failed
COMPLETEDFiat successfully delivered to bank account

Tracking Offramps

Status Updates: Subscribe to OFFRAMP.CREATE and OFFRAMP.UPDATE webhook events to receive real-time status notifications. See Webhooks for setup instructions.
Monitor offramp status using the Retrieve Offramp endpoint. The response structure matches the create endpoint shown above. Request:
curl -X GET "https://sandbox.hifibridge.com/v2/offramps/173c1e89-7bbd-4352-9e5d-73807681510d" \
  -H "Authorization: Bearer YOUR_API_KEY"

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
If your quote expires (status becomes QUOTE_FAILED):
  1. Create a new offramp request
  2. Review the updated quote
  3. Accept the new quote within 10 minutes
Time Sensitive: Always check quoteInformation.expiresAt before accepting. Attempting to accept an expired quote will fail.

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)

CodeDescription
ACMAgency Commission
AESAdvance payment against EOS
AFAReceipts or payments from personal residents bank account or deposits abroad
AFLReceipts or payments from personal non-resident bank account in the UAE
ALWAllowances
ATSAir transport
BONBonus
CCPCorporate Card Payment
CEAEquity and investment fund shares for the establishment of new company from residents abroad, equity of merger or acquisition of companies abroad from residents and participation to capital increase of related companies abroad
CELEquity and investment fund shares for the establishment of new company in the UAE from non-residents, equity of merger or acquisition of companies in the UAE from non-residents and participation to capital increase of related companies from non-residents in the UAE
CHCCharitable Contributions
CINCommercial Investments
COMCommission
COPCompensation
CRPCredit Card Payments
DCPPre-Paid Reloadable & Personalized Debit Card Payments
DIVDividend Payouts
DLAPurchases and sales of foreign debt securities in not related companies – More than a year
DLFDebt instruments intragroup loans, deposits foreign
DLLPurchases and sales of securities issued by residents in not related companies – More than a year
DOEDividends on equity not intra group
DSAPurchases and sales of foreign debt securities in not related companies – Less than a year
DSFDebt instruments intragroup foreign securities
DSLPurchases and sales of securities issued by residents in not related companies – Less than a year
EDUEducational Support
EMIEquated Monthly Instalments
EOSEnd of Service
FAMFamily Support
FDAFinancial derivatives foreign
FDLFinancial derivatives in the UAE
FIAInvestment fund shares foreign
FILInvestment fund shares in the UAE
FISFinancial services
FSAEquity other than investment fund shares in not related companies abroad
FSLEquity other than investment fund shares in not related companies in the UAE
GDEGoods Sold
GDIGoods bought
GMSProcessing repair and maintenance services on goods
GOSGovernment goods and services embassies etc
GRIGovernment related income taxes tariffs capital transfers etc
IFSInformation services
IGDIntra group dividends
IGTInter group transfer
IIDIntra group interest on debt
INSInsurance services
IODIncome on deposits
IOLIncome on loans
IPCCharges for the use of intellectual property royalties
IPOIPO subscriptions
IRPInterest rate swap payments
IRWInterest rate unwind payments
ISHIncome on investment funds share
ISLInterest on securities more than a year
ISSInterest on securities less than a year
ITSComputer services
LASLeave salary
LDLDebt instruments intragroup loans, deposits in the UAE
LDSDebt instruments intragroup securities in the UAE
LEALeasing abroad
LELLeasing in the UAE
LIPLoan interest payments
LLALoans – Drawings or Repayments on loans extended to nonresidents – Long-term
LLLLoans – Drawings or Repayments on foreign loans extended to residents – Long-term
LNCLoan charges
LNDLoan disbursements
MCRMonetary Claim Reimbursements Medical Insurance or Auto Insurance etc.
MWIMobile wallet cash in
MWOMobile wallet cash out
MWPMobile wallet payments
OATOwn account transfer
OTSOther modes of transport
OVTOvertime
PENPension
PINPersonal Investments
PIPProfits on Islamic products
PMSProfessional and management consulting services
PORRefunds or Reversals on IPO subscriptions
POSPOS Merchant Settlement
PPAPurchase of real estate abroad from residents
PPLPurchase of real estate in the UAE from non-residents
PRPProfit rate swap payments
PRRProfits or rents on real estate
PRSPersonal cultural audio visual and recreational services
PRWProfit rate unwind payments
RDSResearch and development services
RFSRepos on foreign securities
RLSRepos on securities issued by residents
RNTRent payments
SAASalary advance
SALSalary
SCOConstruction
SLALoans – Drawings or Repayments on loans extended to nonresidents – Short-term
SLLLoans – Drawings or Repayments on foreign loans extended to residents – Short-term
STRTravel
STSSea transport
SVIStored value card cash-in
SVOStored value card cash-out
SVPStored value card payments
TCPTrade credits and advances payable
TCRTrade credits and advances receivable
TCSTelecommunication services
TKTTickets
TOFTransfer of funds between persons Normal and Juridical
TTSTechnical trade-related and other business services
UTLUtility Bill Payments

Key Concepts

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
Always verify receiveNet matches your expectations before accepting.
Monetize offramp transactions by adding a developer fee when creating the offramp:FIX: Fixed amount regardless of transaction size
{
  "fee": {
    "type": "FIX",
    "value": 0.5
  }
}
PERCENT: Percentage of transaction amount
{
  "fee": {
    "type": "PERCENT",
    "value": 0.01
  }
}
Developer fees are paid in stablecoins from the source wallet before conversion.
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.
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