curl --request POST \
--url https://app.crown-brlv.com/api/v0/quotes \
--header 'Content-Type: application/json' \
--data '
{
"source-asset": "fiat/brl",
"target-asset": "eth-base/usdc",
"source-amount": "100.50",
"target-amount": "500.25",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}
'import requests
url = "https://app.crown-brlv.com/api/v0/quotes"
payload = {
"source-asset": "fiat/brl",
"target-asset": "eth-base/usdc",
"source-amount": "100.50",
"target-amount": "500.25",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
'source-asset': 'fiat/brl',
'target-asset': 'eth-base/usdc',
'source-amount': '100.50',
'target-amount': '500.25',
'trade-reason': 'transfer-between-same-entity-accounts',
'rate-lock': '10m',
'payment-term': '10m'
})
};
fetch('https://app.crown-brlv.com/api/v0/quotes', 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://app.crown-brlv.com/api/v0/quotes",
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([
'source-asset' => 'fiat/brl',
'target-asset' => 'eth-base/usdc',
'source-amount' => '100.50',
'target-amount' => '500.25',
'trade-reason' => 'transfer-between-same-entity-accounts',
'rate-lock' => '10m',
'payment-term' => '10m'
]),
CURLOPT_HTTPHEADER => [
"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://app.crown-brlv.com/api/v0/quotes"
payload := strings.NewReader("{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://app.crown-brlv.com/api/v0/quotes")
.header("Content-Type", "application/json")
.body("{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crown-brlv.com/api/v0/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}"
response = http.request(request)
puts response.read_body{
"expires-at": "2024-01-15T10:30:00Z",
"target-asset": "eth-base/usdc",
"id": "550e8400-e29b-41d4-a716-446655440000",
"source-asset": "fiat/brl",
"source-amount": "1000.00",
"created-at": "2024-01-15T10:30:00Z",
"pricing": {
"base-rate": {
"amount": "5.1307200000",
"base": "USDC",
"quote": "BRL"
},
"spread": {
"amount": "7.95",
"asset": "fiat/brl",
"bps": 90
},
"fee": {
"amount": "2.00",
"asset": "fiat/brl",
"kind": "fixed"
},
"iof": {
"amount": "0.00",
"asset": "fiat/brl",
"applicable": false,
"basis-ref": "psav-res-521-2025"
}
},
"target-amount": "194.914826",
"off-market-pricing": false,
"vet": {
"amount": "5.1307200000",
"base": "USDC",
"quote": "BRL"
},
"trade-reason-code": "67995",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}Create Quote
Creates a quote for converting between different assets (fiat currencies and tokens). Either source-amount OR target-amount must be provided, but not both.
curl --request POST \
--url https://app.crown-brlv.com/api/v0/quotes \
--header 'Content-Type: application/json' \
--data '
{
"source-asset": "fiat/brl",
"target-asset": "eth-base/usdc",
"source-amount": "100.50",
"target-amount": "500.25",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}
'import requests
url = "https://app.crown-brlv.com/api/v0/quotes"
payload = {
"source-asset": "fiat/brl",
"target-asset": "eth-base/usdc",
"source-amount": "100.50",
"target-amount": "500.25",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
'source-asset': 'fiat/brl',
'target-asset': 'eth-base/usdc',
'source-amount': '100.50',
'target-amount': '500.25',
'trade-reason': 'transfer-between-same-entity-accounts',
'rate-lock': '10m',
'payment-term': '10m'
})
};
fetch('https://app.crown-brlv.com/api/v0/quotes', 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://app.crown-brlv.com/api/v0/quotes",
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([
'source-asset' => 'fiat/brl',
'target-asset' => 'eth-base/usdc',
'source-amount' => '100.50',
'target-amount' => '500.25',
'trade-reason' => 'transfer-between-same-entity-accounts',
'rate-lock' => '10m',
'payment-term' => '10m'
]),
CURLOPT_HTTPHEADER => [
"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://app.crown-brlv.com/api/v0/quotes"
payload := strings.NewReader("{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}")
req, _ := http.NewRequest("POST", url, payload)
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://app.crown-brlv.com/api/v0/quotes")
.header("Content-Type", "application/json")
.body("{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.crown-brlv.com/api/v0/quotes")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"source-asset\": \"fiat/brl\",\n \"target-asset\": \"eth-base/usdc\",\n \"source-amount\": \"100.50\",\n \"target-amount\": \"500.25\",\n \"trade-reason\": \"transfer-between-same-entity-accounts\",\n \"rate-lock\": \"10m\",\n \"payment-term\": \"10m\"\n}"
response = http.request(request)
puts response.read_body{
"expires-at": "2024-01-15T10:30:00Z",
"target-asset": "eth-base/usdc",
"id": "550e8400-e29b-41d4-a716-446655440000",
"source-asset": "fiat/brl",
"source-amount": "1000.00",
"created-at": "2024-01-15T10:30:00Z",
"pricing": {
"base-rate": {
"amount": "5.1307200000",
"base": "USDC",
"quote": "BRL"
},
"spread": {
"amount": "7.95",
"asset": "fiat/brl",
"bps": 90
},
"fee": {
"amount": "2.00",
"asset": "fiat/brl",
"kind": "fixed"
},
"iof": {
"amount": "0.00",
"asset": "fiat/brl",
"applicable": false,
"basis-ref": "psav-res-521-2025"
}
},
"target-amount": "194.914826",
"off-market-pricing": false,
"vet": {
"amount": "5.1307200000",
"base": "USDC",
"quote": "BRL"
},
"trade-reason-code": "67995",
"trade-reason": "transfer-between-same-entity-accounts",
"rate-lock": "10m",
"payment-term": "10m"
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}{
"error": {
"type": "<string>",
"message": "<string>",
"code": "<string>"
}
}You’re viewing v0, which is deprecated. Endpoints may change or be removed.
Switch to v1 (Latest) →Body
The asset to convert from (e.g., 'fiat/brl', 'eth-base/brlv', 'eth-base/usdc')
tempo/brlv, eth-base/brlv, eth-mainnet/brlv, fiat/brl, eth-base/usdt, fiat/usd, eth-mainnet/usdt, eth-mainnet/usdc, eth-base/wbrly, eth-base/usdc, eth-base/brly "fiat/brl"
The asset to convert to (e.g., 'fiat/brl', 'eth-base/brlv', 'eth-base/usdc')
tempo/brlv, eth-base/brlv, eth-mainnet/brlv, fiat/brl, eth-base/usdt, fiat/usd, eth-mainnet/usdt, eth-mainnet/usdc, eth-base/wbrly, eth-base/usdc, eth-base/brly "eth-base/usdc"
SISBACEN classification for the FX trade. Required when converting between BRL and a non-BRL-pegged asset (e.g., BRL <-> USDC). Ignored for same-currency conversions such as BRL <-> BRLV. Every reason but transfer-between-same-entity-accounts must be enabled for the account first.
transfer-between-same-entity-accounts, international-travels, international-card-or-electronic-payment-with-virtual-assets "transfer-between-same-entity-accounts"
How long after accepting the quote the BR code may be paid: '10m' (ten minutes after acceptance), 'd0' (until the end of today's trading day, the default) or 'd1' (until the end of the next business day). The exact deadline comes back on the order as 'expiration'. Only for BRL to stablecoin conversions paid through a BR code. Payment terms must be enabled individually on your account; a term that is not enabled is refused.
10m, d0, d1 "10m"
Response
Quote created successfully