Offramp to fiat with liquidation addresses
Liquidation Addresses are permanent on-chain addresses that auto-route incoming crypto to a fiat or crypto destination—enabling crypto → fiat or crypto → crypto conversions.
When funds are sent (e.g. USDC), Bridge converts and forwards them based on the destination_payment_rail
:
- Real-time rails (e.g. wire, sepa, blockchains): funds are sent instantly
- Batch rails (e.g. ach): funds are queued and processed daily
👉 Configure fees via Developer Fees
👉 View supported assets in Stablecoins and Blockchains
Routing crypto deposits to a fiat destination
You can create a liquidation address with a fiat destination (off ramp).
Step 1: Configure an external bank account
For fiat destinations, you need to first register your customer's external bank account with us. The following example walks through the option to create external bank accounts via the Bridge API. You also have the option to use Plaid to let your customers link bank accounts, please refer External Accounts for more details.
curl --location 'https://api.bridge.xyz/v0/customers/<customer-id>/external_accounts' \
--header 'Idempotency-Key: ea-7' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Api-Key: <api-key>' \
--data '{
"currency": "usd",
"account_type": "us",
"bank_name": "Lead Bank",
"account_name": "Ada Checking Account",
"first_name": "Ada",
"last_name": "Lovelace",
"account_owner_type": "individual", // specifies an individual account
"account_owner_name": "Ada Lovelace",
"account": {
"routing_number": "101019644",
"account_number": "215268129123",
"checking_or_savings": "checking"
},
"address": {
"street_line_1": "923 Folsom Street",
"country": "USA",
"state": "CA",
"city": "San Francisco",
"postal_code": "941070000"
}
}'
curl --location 'https://api.bridge.xyz/v0/customers/23c2d462-4c69-4c5a-b31a-88d035d7e8ae/external_accounts' \
--header 'Idempotency-Key: ea-5' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Api-Key: <api-key>' \
--data '{
"currency": "eur",
"account_type": "iban",
"bank_name": "Modulr Finance, Ireland Branch",
"account_owner_name": "Ada Lovelace",
"iban": {
"account_number": "IE26MODR99035507970528",
"bic": "MODRIE22XXX",
"country": "IRL"
},
"address": {
"street_line_1": "923 Folsom Street",
"country": "USA",
"state": "CA",
"city": "San Francisco",
"postal_code": "941070000"
},
"account_name": "GGCF Corporate",
"first_name": "Ada",
"last_name": "Lovelace",
"account_owner_type": "individual"
}'
curl --location 'https://api.bridge.xyz/v0/customers/23c2d462-4c69-4c5a-b31a-88d035d7e8ae/external_accounts' \
--header 'Idempotency-Key: ea-6' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Api-Key: <api-key>' \
--data '{
"currency": "mxn",
"account_type": "clabe",
"account_owner_name": "Ada Lovelace",
"clabe": {
"account_number": "626899715090851234"
},
"account_name": "Ada Checking Account",
"bank_name": "BBVA Bancomer",
"first_name": "Ada",
"last_name": "Lovelace",
"account_owner_type": "individual",
"address": {
"street_line_1": "Av. Reforma",
"city": "Mexico City",
"state": "CDMX",
"postal_code": "06600",
"country": "MEX"
}
}'
The response object will contain a unique identifier for your customer's external bank account. You can query or update the external account details later with the External Accounts endpoint.
{
"id": "039c270f-a038-40be-be7b-43f550ce0678", // external account id
"customer_id": "23c2d462-4c69-4c5a-b31a-88d035d7e8ae",
"created_at": "2025-07-05T19:03:50.819Z",
"updated_at": "2025-07-05T19:03:51.251Z",
"bank_name": "Lead Bank",
"account_name": "Ada Checking Account",
"account_owner_name": "Ada Lovelace",
"active": true,
"currency": "usd",
"account_owner_type": "individual",
"account_type": "us",
"first_name": "Ada",
"last_name": "Lovelace",
"business_name": null,
"account": {
"last_4": "9123",
"routing_number": "101019644",
"checking_or_savings": "checking"
},
"beneficiary_address_valid": true,
"last_4": "9123"
}
{
"id": "c8948ce6-26ac-4d37-a336-742f961a76f3",
"customer_id": "23c2d400-4c69-4c5a-b31a-88d035d7e8ae",
"created_at": "2025-07-05T18:45:50.728Z",
"updated_at": "2025-07-05T18:45:51.373Z",
"bank_name": "Modulr Finance, Ireland Branch",
"account_name": "GGCF Corporate",
"account_owner_name": "Ada Lovelace",
"active": true,
"currency": "eur",
"account_owner_type": "individual",
"account_type": "iban",
"first_name": "Ada",
"last_name": "Lovelace",
"business_name": null,
"iban": {
"last_4": "0528",
"bic": "MODRIE22XXX",
"country": "IRL"
}
}
{
"id": "2bb5b814-0128-49a8-977a-77b1bc1cdee2",
"customer_id": "23c2d462-4c69-4c5a-b31a-88d035d7e8ae",
"created_at": "2025-07-05T18:59:42.163Z",
"updated_at": "2025-07-05T18:59:42.713Z",
"bank_name": "BBVA Bancomer",
"account_name": "Ada Checking Account",
"account_owner_name": "Ada Lovelace",
"active": true,
"currency": "mxn",
"account_owner_type": "individual",
"account_type": "clabe",
"first_name": "Ada",
"last_name": "Lovelace",
"business_name": null,
"clabe": {
"last_4": "1234"
}
}
Step 2: Create a liquidation address pointing to the external bank account
With the liquidation address, you can configure
- the chain and currency you want to receive funds on
- the destination chain, currency, and details you want to send funds to
- ❗the
return_address
so we know where to send funds to if your customer's transaction fails or is returned by the destination.
curl --location 'https://api.bridge.xyz/v0/customers/<customer_id>/liquidation_addresses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Idempotency-Key: 10' \
--header 'Api-Key: <api-key>' \
--data '{
"currency": "usdc",
"chain": "ethereum",
"external_account_id": "ad77b283-b000-4025-8197-023ea7e7d00",
"destination_wire_message": "Wire payment for Ada Lovelace",
"destination_payment_rail": "wire",
"destination_currency": "usd"
"return_address": "0x12343vrever323023fbverb94t24t23t" // very important to configure
}'
You'll get a response containing the blockchain address we've created.
{
"id": "5ef43832-cb43-4c64-8678-e87c518b364f", // unique Bridge identifier for the liquidation address
"chain": "ethereum",
"address": "0x27013f44e72fea1788a00602c8abaf7ef57725f1", // this is the liquidation address
"currency": "usdc",
"external_account_id": "ad77b283-b0de-4025-8197-023ea7e7d978",
"customer_id": "23c2d462-4c69-4c5a-b31a-88d03",
"destination_wire_message": "Wire payment for Ada Lovelace",
"destination_payment_rail": "wire",
"destination_currency": "usd",
"created_at": "2025-07-05T00:10:05.670Z",
"updated_at": "2025-07-05T00:10:05.670Z",
"state": "active"
}
Routing crypto deposits to a crypto destination
Create a liquidation address with a crypto destination (crypto to crypto)
curl --location 'https://api.bridge.xyz/v0/customers/23c2d462-4c69-4c5a-b31a-88d035d7e8ae/liquidation_addresses' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Idempotency-Key: 11' \
--header 'Api-Key: sk-live-5a0f22402efbc824139e5a7e719da2d5' \
--data '{
"currency": "usdt",
"chain": "ethereum",
"destination_payment_rail": "ethereum",
"destination_currency": "usdc",
"destination_address": "0x27013f44e72fea1788a00602",
"return_address": "0x2700w1240xrw1200cva0394",
}'
The response will contain the crypto address ready to start taking payments.
{
"id": "24dc5860-c208-4ded-82ad-451cd88c6acd",
"chain": "ethereum",
"address": "0x50fba60922caa21375038824b4212f234v",
"currency": "usdt",
"customer_id": "23c2d462-4c69-4c5a-b31a-88d03",
"destination_payment_rail": "ethereum",
"destination_currency": "usdc",
"destination_address": "0x27013f44e72fea1788a00602",
"return_address": "0x2700w1240xrw1200cva0394",
"created_at": "2025-07-05T00:17:04.779Z",
"updated_at": "2025-07-05T00:17:04.779Z",
"state": "active"
}
Updated about 4 hours ago