Create Quote
curl --request POST \
--url https://sandbox.api.fin.com/v2/transactions/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "CRYPTO_WITHDRAWAL",
"beneficiary_id": "6af8d598-36a5-477d-9320-d7c5ba309107",
"amount": 5,
"source": {
"crypto_wallet_id": "c92dfe1d-220e-4446-a5e4-cd7d46031ba5"
}
}
'const url = 'https://sandbox.api.fin.com/v2/transactions/quote';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'CRYPTO_WITHDRAWAL',
beneficiary_id: '6af8d598-36a5-477d-9320-d7c5ba309107',
amount: 5,
source: {crypto_wallet_id: 'c92dfe1d-220e-4446-a5e4-cd7d46031ba5'}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://sandbox.api.fin.com/v2/transactions/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"CRYPTO_WITHDRAWAL\",\n \"beneficiary_id\": \"6af8d598-36a5-477d-9320-d7c5ba309107\",\n \"amount\": 5,\n \"source\": {\n \"crypto_wallet_id\": \"c92dfe1d-220e-4446-a5e4-cd7d46031ba5\"\n }\n}")
.asString();import requests
url = "https://sandbox.api.fin.com/v2/transactions/quote"
payload = {
"type": "CRYPTO_WITHDRAWAL",
"beneficiary_id": "6af8d598-36a5-477d-9320-d7c5ba309107",
"amount": 5,
"source": { "crypto_wallet_id": "c92dfe1d-220e-4446-a5e4-cd7d46031ba5" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.fin.com/v2/transactions/quote"
payload := strings.NewReader("{\n \"type\": \"CRYPTO_WITHDRAWAL\",\n \"beneficiary_id\": \"6af8d598-36a5-477d-9320-d7c5ba309107\",\n \"amount\": 5,\n \"source\": {\n \"crypto_wallet_id\": \"c92dfe1d-220e-4446-a5e4-cd7d46031ba5\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}{
"data": {
"quote_id": "9ba7d6db-ac78-4a41-acae-f787ee6b1f24",
"expire_at": "2026-04-29T10:09:33.524075766Z",
"amount": 5,
"destination_details": {
"address": "0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E",
"currency": "USDC",
"rail": "POLYGON"
},
"quote_estimation": {
"developer_fee_fixed": 0.01,
"developer_fee_percentage": 0.0005,
"network_fee": 0.004149,
"total_fee": 0.014649,
"receivable_amount": 4.98535,
"ata_fee_applied": false
}
}
}{
"message": "Authentication failed"
}{
"message": "<string>",
"errors": [
{}
]
}Crypto Transfer
Create Quote
Returns fee and receivable amount estimations for a crypto withdrawal from a Fin.com internal wallet to a customer’s external crypto wallet.
POST
/
v2
/
transactions
/
quote
Create Quote
curl --request POST \
--url https://sandbox.api.fin.com/v2/transactions/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"type": "CRYPTO_WITHDRAWAL",
"beneficiary_id": "6af8d598-36a5-477d-9320-d7c5ba309107",
"amount": 5,
"source": {
"crypto_wallet_id": "c92dfe1d-220e-4446-a5e4-cd7d46031ba5"
}
}
'const url = 'https://sandbox.api.fin.com/v2/transactions/quote';
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
type: 'CRYPTO_WITHDRAWAL',
beneficiary_id: '6af8d598-36a5-477d-9320-d7c5ba309107',
amount: 5,
source: {crypto_wallet_id: 'c92dfe1d-220e-4446-a5e4-cd7d46031ba5'}
})
};
fetch(url, options)
.then(res => res.json())
.then(json => console.log(json))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.post("https://sandbox.api.fin.com/v2/transactions/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"type\": \"CRYPTO_WITHDRAWAL\",\n \"beneficiary_id\": \"6af8d598-36a5-477d-9320-d7c5ba309107\",\n \"amount\": 5,\n \"source\": {\n \"crypto_wallet_id\": \"c92dfe1d-220e-4446-a5e4-cd7d46031ba5\"\n }\n}")
.asString();import requests
url = "https://sandbox.api.fin.com/v2/transactions/quote"
payload = {
"type": "CRYPTO_WITHDRAWAL",
"beneficiary_id": "6af8d598-36a5-477d-9320-d7c5ba309107",
"amount": 5,
"source": { "crypto_wallet_id": "c92dfe1d-220e-4446-a5e4-cd7d46031ba5" }
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sandbox.api.fin.com/v2/transactions/quote"
payload := strings.NewReader("{\n \"type\": \"CRYPTO_WITHDRAWAL\",\n \"beneficiary_id\": \"6af8d598-36a5-477d-9320-d7c5ba309107\",\n \"amount\": 5,\n \"source\": {\n \"crypto_wallet_id\": \"c92dfe1d-220e-4446-a5e4-cd7d46031ba5\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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))
}{
"data": {
"quote_id": "9ba7d6db-ac78-4a41-acae-f787ee6b1f24",
"expire_at": "2026-04-29T10:09:33.524075766Z",
"amount": 5,
"destination_details": {
"address": "0xD2Ba7d0DaBd36498df5906fC7B054Fa9EfA9843E",
"currency": "USDC",
"rail": "POLYGON"
},
"quote_estimation": {
"developer_fee_fixed": 0.01,
"developer_fee_percentage": 0.0005,
"network_fee": 0.004149,
"total_fee": 0.014649,
"receivable_amount": 4.98535,
"ata_fee_applied": false
}
}
}{
"message": "Authentication failed"
}{
"message": "<string>",
"errors": [
{}
]
}The source wallet and destination wallet must share the same blockchain rail and currency. For example, if the source wallet is on POLYGON with USDC, the beneficiary’s destination wallet must also be on POLYGON with USDC.
Authorizations
Bearer token authentication. Obtain token from Issue a Token endpoint
Body
application/json
Transaction type for the quote.
Available options:
CRYPTO_WITHDRAWAL Example:
"CRYPTO_WITHDRAWAL"
ID of the destination beneficiary.
Example:
"6af8d598-36a5-477d-9320-d7c5ba309107"
Amount to send in the source currency.
Example:
5
Show child attributes
Show child attributes
Response
Quote generated successfully
Show child attributes
Show child attributes
⌘I
