curl --request POST \
--url https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channelId": "<string>",
"cryptoCurrency": "<string>",
"fiatAmount": "<string>",
"cryptoAmount": "<string>",
"quoted": false,
"fiatCurrency": "<string>",
"form": {},
"formSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"paymentMethodId": "<string>",
"businessFee": {
"FeeBase": "<string>",
"FeePct": "<string>",
"FiatCurrency": "<string>"
}
}
'import requests
url = "https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote"
payload = {
"channelId": "<string>",
"cryptoCurrency": "<string>",
"fiatAmount": "<string>",
"cryptoAmount": "<string>",
"quoted": False,
"fiatCurrency": "<string>",
"form": {},
"formSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"paymentMethodId": "<string>",
"businessFee": {
"FeeBase": "<string>",
"FeePct": "<string>",
"FiatCurrency": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channelId: '<string>',
cryptoCurrency: '<string>',
fiatAmount: '<string>',
cryptoAmount: '<string>',
quoted: false,
fiatCurrency: '<string>',
form: {},
formSessionId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
paymentMethodId: '<string>',
businessFee: {FeeBase: '<string>', FeePct: '<string>', FiatCurrency: '<string>'}
})
};
fetch('https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote', 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.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote",
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([
'channelId' => '<string>',
'cryptoCurrency' => '<string>',
'fiatAmount' => '<string>',
'cryptoAmount' => '<string>',
'quoted' => false,
'fiatCurrency' => '<string>',
'form' => [
],
'formSessionId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'paymentMethodId' => '<string>',
'businessFee' => [
'FeeBase' => '<string>',
'FeePct' => '<string>',
'FiatCurrency' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote"
payload := strings.NewReader("{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"payoutId": "<string>",
"formSessionId": "<string>",
"cryptoAmountEstimate": "<string>",
"cryptoAuthorizedAmount": "<string>",
"totalFee": "<string>",
"cryptoCurrency": "<string>",
"fiatCurrency": "<string>",
"fiatAmount": "<string>",
"rate": "<string>",
"breakdown": [
{
"amount": "<string>"
}
],
"quote": {
"signedQuote": "<string>",
"expiry": "2023-11-07T05:31:56Z"
},
"nextStep": {}
}
}{
"error": "<string>"
}{
"error": "<string>"
}Quote payout
Validates payout form input and returns quote details plus a payout intent ID.
curl --request POST \
--url https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"channelId": "<string>",
"cryptoCurrency": "<string>",
"fiatAmount": "<string>",
"cryptoAmount": "<string>",
"quoted": false,
"fiatCurrency": "<string>",
"form": {},
"formSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"paymentMethodId": "<string>",
"businessFee": {
"FeeBase": "<string>",
"FeePct": "<string>",
"FiatCurrency": "<string>"
}
}
'import requests
url = "https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote"
payload = {
"channelId": "<string>",
"cryptoCurrency": "<string>",
"fiatAmount": "<string>",
"cryptoAmount": "<string>",
"quoted": False,
"fiatCurrency": "<string>",
"form": {},
"formSessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"paymentMethodId": "<string>",
"businessFee": {
"FeeBase": "<string>",
"FeePct": "<string>",
"FiatCurrency": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
channelId: '<string>',
cryptoCurrency: '<string>',
fiatAmount: '<string>',
cryptoAmount: '<string>',
quoted: false,
fiatCurrency: '<string>',
form: {},
formSessionId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
paymentMethodId: '<string>',
businessFee: {FeeBase: '<string>', FeePct: '<string>', FiatCurrency: '<string>'}
})
};
fetch('https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote', 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.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote",
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([
'channelId' => '<string>',
'cryptoCurrency' => '<string>',
'fiatAmount' => '<string>',
'cryptoAmount' => '<string>',
'quoted' => false,
'fiatCurrency' => '<string>',
'form' => [
],
'formSessionId' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'paymentMethodId' => '<string>',
'businessFee' => [
'FeeBase' => '<string>',
'FeePct' => '<string>',
'FiatCurrency' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote"
payload := strings.NewReader("{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\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))
}HttpResponse<String> response = Unirest.post("https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.portalhq.io/api/v3/clients/me/integrations/noah/payouts/quote")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"channelId\": \"<string>\",\n \"cryptoCurrency\": \"<string>\",\n \"fiatAmount\": \"<string>\",\n \"cryptoAmount\": \"<string>\",\n \"quoted\": false,\n \"fiatCurrency\": \"<string>\",\n \"form\": {},\n \"formSessionId\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"paymentMethodId\": \"<string>\",\n \"businessFee\": {\n \"FeeBase\": \"<string>\",\n \"FeePct\": \"<string>\",\n \"FiatCurrency\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"payoutId": "<string>",
"formSessionId": "<string>",
"cryptoAmountEstimate": "<string>",
"cryptoAuthorizedAmount": "<string>",
"totalFee": "<string>",
"cryptoCurrency": "<string>",
"fiatCurrency": "<string>",
"fiatAmount": "<string>",
"rate": "<string>",
"breakdown": [
{
"amount": "<string>"
}
],
"quote": {
"signedQuote": "<string>",
"expiry": "2023-11-07T05:31:56Z"
},
"nextStep": {}
}
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Client API Key or Client Session Token (CST). Pass as a Bearer token in the Authorization header.
Body
- Option 1
- Option 2
Exactly one of fiatAmount or cryptoAmount must be provided. They are
mutually exclusive — passing both (or neither) returns 400.
Crypto currency symbol. In Noah sandbox, tickers must be suffixed with _TEST (e.g. USDC_TEST); use the unsuffixed ticker in production. See Noah's sandbox naming convention.
Fiat amount to receive. Mutually exclusive with cryptoAmount.
Exact crypto amount the depositor will send. Mutually exclusive with fiatAmount.
When true and all form steps are complete, the response includes a
quote whose signedQuote locks the conversion rate and recipient
payout for the resulting payout transaction.
Optional form session ID continuing a multi-step form.
Per-transaction business fee configuration. When supplied, this fee is applied to the customer's transaction on behalf of the business.
Show child attributes
Show child attributes
Response
Payout quote created successfully
Show child attributes
Show child attributes
Was this page helpful?