Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.hifi.com/llms.txt

Use this file to discover all available pages before exploring further.

Time to complete: 10-15 minutes
All examples use the sandbox environment (https://sandbox.hifibridge.com). Sandbox transactions are simulated and do not move real funds.

Overview

EUR offramps convert stablecoins, such as USDC, into EUR and send the funds to a recipient bank account through SEPA. The flow has three steps:
1

Create an EUR offramp account

Register the recipient bank account with EUR and SEPA details.
2

Create an offramp quote

Create an offramp request with destination.currency set to eur.
3

Accept the quote

Accept the quote before it expires to execute the offramp.

Prerequisites

Before creating an EUR offramp, make sure you have:
  • A user with Terms of Service accepted
  • KYC or KYB approved for the Global Network rail
  • A wallet funded with a supported stablecoin
  • Recipient bank details, including IBAN and SWIFT/BIC
  • API keys from the Dashboard
For general offramp behavior, quote acceptance, and status handling, see Offramps.

Step 1: Create an EUR Offramp Account

Create a Global Network offramp account for the recipient’s EUR bank account. For EUR SEPA payouts, set the account currency to eur and transfer type to sepa. This example creates a France EUR offramp account. Use the country-specific account type that matches the recipient’s bank country.
curl -X POST "https://sandbox.hifibridge.com/v2/users/usr_abc123/accounts" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "rail": "offramp",
    "type": "franceGlobalNetwork",
    "accountHolder": {
      "type": "individual",
      "name": "Marie Laurent",
      "address": {
        "addressLine1": "10 Rue de Rivoli",
        "city": "Paris",
        "stateProvinceRegion": "IDF",
        "postalCode": "75001",
        "country": "FRA"
      }
    },
    "franceGlobalNetwork": {
      "transferType": "sepa",
      "currency": "eur",
      "bankName": "Example Bank",
      "iban": "FR7630006000011234567890189",
      "swiftCode": "AGRIFRPP"
    }
  }'
For SEPA payouts in EUR, type and the matching nested property name are both {country}GlobalNetwork — lower camelCase from the English country name for where the beneficiary bank is located (not the account holder’s residence, if those differ).The object at that key always uses this shape for EUR SEPA:
{
  "transferType": "sepa",
  "currency": "eur",
  "bankName": "string",
  "iban": "string",
  "swiftCode": "string"
}
Countrytype (and nested key)
AlbaniaalbaniaGlobalNetwork
AndorraandorraGlobalNetwork
AustriaaustriaGlobalNetwork
BelgiumbelgiumGlobalNetwork
BulgariabulgariaGlobalNetwork
CroatiacroatiaGlobalNetwork
CypruscyprusGlobalNetwork
Czech RepublicczechRepublicGlobalNetwork
DenmarkdenmarkGlobalNetwork
EstoniaestoniaGlobalNetwork
FinlandfinlandGlobalNetwork
FrancefranceGlobalNetwork
GermanygermanyGlobalNetwork
GreecegreeceGlobalNetwork
HungaryhungaryGlobalNetwork
IcelandicelandGlobalNetwork
IrelandirelandGlobalNetwork
ItalyitalyGlobalNetwork
LatvialatviaGlobalNetwork
LiechtensteinliechtensteinGlobalNetwork
LithuanialithuaniaGlobalNetwork
LuxembourgluxembourgGlobalNetwork
MaltamaltaGlobalNetwork
MoldovamoldovaGlobalNetwork
MonacomonacoGlobalNetwork
MontenegromontenegroGlobalNetwork
NetherlandsnetherlandsGlobalNetwork
North MacedonianorthMacedoniaGlobalNetwork
NorwaynorwayGlobalNetwork
PolandpolandGlobalNetwork
PortugalportugalGlobalNetwork
RomaniaromaniaGlobalNetwork
San MarinosanMarinoGlobalNetwork
SerbiaserbiaGlobalNetwork
SlovakiaslovakiaGlobalNetwork
SloveniasloveniaGlobalNetwork
SpainspainGlobalNetwork
SwedenswedenGlobalNetwork
SwitzerlandswitzerlandGlobalNetwork
Vatican CityvaticanCityGlobalNetwork
{
  "type": "franceGlobalNetwork",
  "franceGlobalNetwork": {
    "transferType": "sepa",
    "currency": "eur",
    "bankName": "Example Bank",
    "iban": "FR7630006000011234567890189",
    "swiftCode": "AGRIFRPP"
  }
}
For the full country and payment-method matrix, see Coverage.
Save the returned id. You will use it as destination.accountId when creating the offramp.

Step 2: Create an EUR Offramp Quote

Create an offramp request with a stablecoin source and an EUR destination.
curl -X POST "https://sandbox.hifibridge.com/v2/offramps" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "requestId": "b08e27be-c086-4b84-a321-307ed9f265e1",
    "source": {
      "currency": "usdc",
      "chain": "POLYGON",
      "userId": "usr_abc123",
      "amount": 100
    },
    "destination": {
      "currency": "eur",
      "accountId": "acc_eur123",
      "userId": "usr_abc123",
      "sepaReference": "Invoice 1001"
    },
    "purposeOfPayment": "other",
    "description": "EUR payout for invoice 1001"
  }'
destination.currency
string
required
Use eur for EUR offramps.
destination.accountId
string
required
The EUR offramp account that should receive the payout.
destination.sepaReference
string
Optional SEPA reference included with the payout. It must be 6 to 140 characters and may contain letters, numbers, spaces, ampersand (&), hyphen (-), full stop (.), and solidus (/).

Step 3: Review and Accept the Quote

The create response includes an offramp id, status, and quote information. Review the rate, fees, destination amount, and expiration time before accepting.
curl -X POST "https://sandbox.hifibridge.com/v2/offramps/off_abc123/quote/accept" \
  -H "Authorization: Bearer YOUR_API_KEY"
After the quote is accepted, the offramp moves through crypto and fiat processing statuses until completion.

Track the Offramp

You can track EUR offramp status in two ways:
curl -X GET "https://sandbox.hifibridge.com/v2/offramps/off_abc123" \
  -H "Authorization: Bearer YOUR_API_KEY"