curl --request POST \
--url https://api-sb.meld.io/crypto/order/headless/offramp \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "WQ4Cp7mWmkQpjQjxxxxxx",
"destinationCurrencyCode": "USD",
"fiatPayoutMethod": {
"type": "ACH",
"owner": "Jane Doe",
"details": {
"bankName": "Example Bank",
"accountType": "CHECKING",
"routingNumber": "110000000",
"accountNumber": "000123456789",
"beneficiaryAddress": {
"streetLineOne": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"bankAddress": {
"streetLineOne": "1 Bank Plaza",
"city": "New York",
"state": "NY",
"postalCode": "10005",
"country": "US"
}
}
},
"serviceProvider": "NOAH",
"sourceAmount": 100,
"sourceCurrencyCode": "USDC",
"sourceWalletAddress": "0x000000000000000000000000000000000000dEaD"
}
'import requests
url = "https://api-sb.meld.io/crypto/order/headless/offramp"
payload = {
"customerId": "WQ4Cp7mWmkQpjQjxxxxxx",
"destinationCurrencyCode": "USD",
"fiatPayoutMethod": {
"type": "ACH",
"owner": "Jane Doe",
"details": {
"bankName": "Example Bank",
"accountType": "CHECKING",
"routingNumber": "110000000",
"accountNumber": "000123456789",
"beneficiaryAddress": {
"streetLineOne": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"bankAddress": {
"streetLineOne": "1 Bank Plaza",
"city": "New York",
"state": "NY",
"postalCode": "10005",
"country": "US"
}
}
},
"serviceProvider": "NOAH",
"sourceAmount": 100,
"sourceCurrencyCode": "USDC",
"sourceWalletAddress": "0x000000000000000000000000000000000000dEaD"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'WQ4Cp7mWmkQpjQjxxxxxx',
destinationCurrencyCode: 'USD',
fiatPayoutMethod: {
type: 'ACH',
owner: 'Jane Doe',
details: {
bankName: 'Example Bank',
accountType: 'CHECKING',
routingNumber: '110000000',
accountNumber: '000123456789',
beneficiaryAddress: {
streetLineOne: '123 Main St',
city: 'New York',
state: 'NY',
postalCode: '10001',
country: 'US'
},
bankAddress: {
streetLineOne: '1 Bank Plaza',
city: 'New York',
state: 'NY',
postalCode: '10005',
country: 'US'
}
}
},
serviceProvider: 'NOAH',
sourceAmount: 100,
sourceCurrencyCode: 'USDC',
sourceWalletAddress: '0x000000000000000000000000000000000000dEaD'
})
};
fetch('https://api-sb.meld.io/crypto/order/headless/offramp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sb.meld.io/crypto/order/headless/offramp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'WQ4Cp7mWmkQpjQjxxxxxx',
'destinationCurrencyCode' => 'USD',
'fiatPayoutMethod' => [
'type' => 'ACH',
'owner' => 'Jane Doe',
'details' => [
'bankName' => 'Example Bank',
'accountType' => 'CHECKING',
'routingNumber' => '110000000',
'accountNumber' => '000123456789',
'beneficiaryAddress' => [
'streetLineOne' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10001',
'country' => 'US'
],
'bankAddress' => [
'streetLineOne' => '1 Bank Plaza',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10005',
'country' => 'US'
]
]
],
'serviceProvider' => 'NOAH',
'sourceAmount' => 100,
'sourceCurrencyCode' => 'USDC',
'sourceWalletAddress' => '0x000000000000000000000000000000000000dEaD'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sb.meld.io/crypto/order/headless/offramp"
payload := strings.NewReader("{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sb.meld.io/crypto/order/headless/offramp")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/crypto/order/headless/offramp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"paymentMethodType": "ACH",
"walletAddress": "0x000000000000000000000000000000000000dEaD"
}""Create a headless offramp order
Creates a headless offramp order. Caller passes customer + provider + source crypto + fiat payout method and receives a provider-issued wallet address to send cryptocurrency to.
curl --request POST \
--url https://api-sb.meld.io/crypto/order/headless/offramp \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"customerId": "WQ4Cp7mWmkQpjQjxxxxxx",
"destinationCurrencyCode": "USD",
"fiatPayoutMethod": {
"type": "ACH",
"owner": "Jane Doe",
"details": {
"bankName": "Example Bank",
"accountType": "CHECKING",
"routingNumber": "110000000",
"accountNumber": "000123456789",
"beneficiaryAddress": {
"streetLineOne": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"bankAddress": {
"streetLineOne": "1 Bank Plaza",
"city": "New York",
"state": "NY",
"postalCode": "10005",
"country": "US"
}
}
},
"serviceProvider": "NOAH",
"sourceAmount": 100,
"sourceCurrencyCode": "USDC",
"sourceWalletAddress": "0x000000000000000000000000000000000000dEaD"
}
'import requests
url = "https://api-sb.meld.io/crypto/order/headless/offramp"
payload = {
"customerId": "WQ4Cp7mWmkQpjQjxxxxxx",
"destinationCurrencyCode": "USD",
"fiatPayoutMethod": {
"type": "ACH",
"owner": "Jane Doe",
"details": {
"bankName": "Example Bank",
"accountType": "CHECKING",
"routingNumber": "110000000",
"accountNumber": "000123456789",
"beneficiaryAddress": {
"streetLineOne": "123 Main St",
"city": "New York",
"state": "NY",
"postalCode": "10001",
"country": "US"
},
"bankAddress": {
"streetLineOne": "1 Bank Plaza",
"city": "New York",
"state": "NY",
"postalCode": "10005",
"country": "US"
}
}
},
"serviceProvider": "NOAH",
"sourceAmount": 100,
"sourceCurrencyCode": "USDC",
"sourceWalletAddress": "0x000000000000000000000000000000000000dEaD"
}
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customerId: 'WQ4Cp7mWmkQpjQjxxxxxx',
destinationCurrencyCode: 'USD',
fiatPayoutMethod: {
type: 'ACH',
owner: 'Jane Doe',
details: {
bankName: 'Example Bank',
accountType: 'CHECKING',
routingNumber: '110000000',
accountNumber: '000123456789',
beneficiaryAddress: {
streetLineOne: '123 Main St',
city: 'New York',
state: 'NY',
postalCode: '10001',
country: 'US'
},
bankAddress: {
streetLineOne: '1 Bank Plaza',
city: 'New York',
state: 'NY',
postalCode: '10005',
country: 'US'
}
}
},
serviceProvider: 'NOAH',
sourceAmount: 100,
sourceCurrencyCode: 'USDC',
sourceWalletAddress: '0x000000000000000000000000000000000000dEaD'
})
};
fetch('https://api-sb.meld.io/crypto/order/headless/offramp', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sb.meld.io/crypto/order/headless/offramp",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'customerId' => 'WQ4Cp7mWmkQpjQjxxxxxx',
'destinationCurrencyCode' => 'USD',
'fiatPayoutMethod' => [
'type' => 'ACH',
'owner' => 'Jane Doe',
'details' => [
'bankName' => 'Example Bank',
'accountType' => 'CHECKING',
'routingNumber' => '110000000',
'accountNumber' => '000123456789',
'beneficiaryAddress' => [
'streetLineOne' => '123 Main St',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10001',
'country' => 'US'
],
'bankAddress' => [
'streetLineOne' => '1 Bank Plaza',
'city' => 'New York',
'state' => 'NY',
'postalCode' => '10005',
'country' => 'US'
]
]
],
'serviceProvider' => 'NOAH',
'sourceAmount' => 100,
'sourceCurrencyCode' => 'USDC',
'sourceWalletAddress' => '0x000000000000000000000000000000000000dEaD'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sb.meld.io/crypto/order/headless/offramp"
payload := strings.NewReader("{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sb.meld.io/crypto/order/headless/offramp")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sb.meld.io/crypto/order/headless/offramp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customerId\": \"WQ4Cp7mWmkQpjQjxxxxxx\",\n \"destinationCurrencyCode\": \"USD\",\n \"fiatPayoutMethod\": {\n \"type\": \"ACH\",\n \"owner\": \"Jane Doe\",\n \"details\": {\n \"bankName\": \"Example Bank\",\n \"accountType\": \"CHECKING\",\n \"routingNumber\": \"110000000\",\n \"accountNumber\": \"000123456789\",\n \"beneficiaryAddress\": {\n \"streetLineOne\": \"123 Main St\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10001\",\n \"country\": \"US\"\n },\n \"bankAddress\": {\n \"streetLineOne\": \"1 Bank Plaza\",\n \"city\": \"New York\",\n \"state\": \"NY\",\n \"postalCode\": \"10005\",\n \"country\": \"US\"\n }\n }\n },\n \"serviceProvider\": \"NOAH\",\n \"sourceAmount\": 100,\n \"sourceCurrencyCode\": \"USDC\",\n \"sourceWalletAddress\": \"0x000000000000000000000000000000000000dEaD\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"paymentMethodType": "ACH",
"walletAddress": "0x000000000000000000000000000000000000dEaD"
}""Authorizations
Headers
Dated API version to use for this request, e.g. 2026-02-03.
"2026-02-03"
Body
Request to create a headless offramp order
Customer id
1Destination fiat currency code
1"USD"
Payout method details for how and where the fiat currency will be received
Show child attributes
Show child attributes
Service provider to use for this offramp order
NOAH, DUENETWORK, BRALE, YELLOWCARD "NOAH"
Source amount in cryptocurrency
x >= 020000
Source cryptocurrency code
1"USDC"
Source wallet address to send cryptocurrency from
1"0x000000000000000000000000000000000000dEaD"
Optional external identifier for the sub-account customer this transaction belongs to. Used for tracking when multiple businesses operate under one Meld account. A sub-account customer must be created first before it can be referenced.
Optional Meld customer id used to track the business sub-account this transaction belongs to when multiple businesses operate under one Meld account.
Response
Headless offramp order created
Response containing headless offramp order details
Unique order ID for tracking the offramp order
1Payout method for receiving the converted fiat currency
1"ACH"
Wallet address to send the crypto funds to
"0x000000000000000000000000000000000000dEaD"