curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/fees/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fee_code": "card.acquiring",
"amount": 100,
"currency": "USD"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/fees/quote"
payload = {
"fee_code": "card.acquiring",
"amount": 100,
"currency": "USD"
}
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({fee_code: 'card.acquiring', amount: 100, currency: 'USD'})
};
fetch('https://api-sandbox.finogates.com/v1/platform/fees/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-sandbox.finogates.com/v1/platform/fees/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([
'fee_code' => 'card.acquiring',
'amount' => 100,
'currency' => 'USD'
]),
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-sandbox.finogates.com/v1/platform/fees/quote"
payload := strings.NewReader("{\n \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\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-sandbox.finogates.com/v1/platform/fees/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/fees/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 \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 200,
"data": {
"processing_fee_amount": 3.2,
"processing_fee_amount_minor": 320,
"delivery_fee_amount": 0,
"delivery_fee_amount_minor": 0,
"payer_fee_amount": 3.2,
"payer_fee_amount_minor": 320,
"payee_fee_amount": 0,
"payee_fee_amount_minor": 0,
"payer_total_amount": 103.2,
"payer_total_amount_minor": 10320,
"payee_net_amount": 100,
"payee_net_amount_minor": 10000,
"fee_amount": 3.2,
"fee_amount_minor": 320,
"currency": "USD",
"policy_id": "7a1c9e2b-4d6f-4a8b-9c1e-2d5f3a6b7c8d",
"rule_id": "8b2d0f3c-5e7a-4b9c-8d2f-3e6a4b7c8d9e",
"breakdown": {
"structure": "component",
"percent_fee": 2.9,
"flat_fee": 0.3
},
"fee_code": "card.acquiring",
"scope_level": "global"
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Quote a Fee for an Amount
Calculate the actual fee for a payment of a given amount on one fee line — the same number that will be charged at payment time.
Supply the fee_code (from List Your Fee Schedule) and the payment
amount; the quote runs the live fee engine, so it honours:
- your active override when one is set, otherwise the global default
(
scope_leveltells you which); - the line’s configured structure —
flat,percent,flat_plus_percent,per_unit,tiered, orcomponent(card acquiring’s processing + delivery legs); - the payer/payee bearer split and any min/max caps.
The response gives the full breakdown:
fee_amount— total fee.processing_fee_amount/delivery_fee_amount— the two legs (delivery is0for non-component lines).payer_fee_amount/payee_fee_amount— who bears it.payer_total_amount— what the payer pays (amount + payer-borne fee).payee_net_amount— what the payee receives (amount − payee-borne fee).
Every amount is returned in both major units and _minor (cents). Returns
404 for an unknown fee_code.
curl --request POST \
--url https://api-sandbox.finogates.com/v1/platform/fees/quote \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"fee_code": "card.acquiring",
"amount": 100,
"currency": "USD"
}
'import requests
url = "https://api-sandbox.finogates.com/v1/platform/fees/quote"
payload = {
"fee_code": "card.acquiring",
"amount": 100,
"currency": "USD"
}
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({fee_code: 'card.acquiring', amount: 100, currency: 'USD'})
};
fetch('https://api-sandbox.finogates.com/v1/platform/fees/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-sandbox.finogates.com/v1/platform/fees/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([
'fee_code' => 'card.acquiring',
'amount' => 100,
'currency' => 'USD'
]),
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-sandbox.finogates.com/v1/platform/fees/quote"
payload := strings.NewReader("{\n \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\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-sandbox.finogates.com/v1/platform/fees/quote")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.finogates.com/v1/platform/fees/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 \"fee_code\": \"card.acquiring\",\n \"amount\": 100,\n \"currency\": \"USD\"\n}"
response = http.request(request)
puts response.read_body{
"status_code": 200,
"data": {
"processing_fee_amount": 3.2,
"processing_fee_amount_minor": 320,
"delivery_fee_amount": 0,
"delivery_fee_amount_minor": 0,
"payer_fee_amount": 3.2,
"payer_fee_amount_minor": 320,
"payee_fee_amount": 0,
"payee_fee_amount_minor": 0,
"payer_total_amount": 103.2,
"payer_total_amount_minor": 10320,
"payee_net_amount": 100,
"payee_net_amount_minor": 10000,
"fee_amount": 3.2,
"fee_amount_minor": 320,
"currency": "USD",
"policy_id": "7a1c9e2b-4d6f-4a8b-9c1e-2d5f3a6b7c8d",
"rule_id": "8b2d0f3c-5e7a-4b9c-8d2f-3e6a4b7c8d9e",
"breakdown": {
"structure": "component",
"percent_fee": 2.9,
"flat_fee": 0.3
},
"fee_code": "card.acquiring",
"scope_level": "global"
},
"query_generated_time": 1712847600000
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Quote one fee line for an amount on the public platform API.
The platform is taken from your credentials — you supply only the line and the amount. The quote runs the same engine real charges use, so it reflects your active override when one is set, otherwise the global default.
The fee line to price, e.g. ach.push or card.acquiring.
1 - 80"card.acquiring"
The payment amount (major units) to price the fee against.
100
ISO 4217 currency code.
3"USD"
Response
The resolved fee for the amount, with the payer / payee breakdown.
Standard response wrapper for single-object responses and errors.
Generic over the payload type. A route that declares
CommonResponse[SomeModel] gets the real data schema rendered in
OpenAPI/Swagger; a bare CommonResponse leaves data untyped.

