curl --request GET \
--url https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate \
--header 'Authorization: Bearer <token>'import requests
url = "https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate', 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://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"input": {
"amount": "2525.00",
"currency": "USD"
},
"fees": {
"total": "27.78",
"currency": "USD",
"breakdown": {
"platform": "57.07",
"exchange": "2.53",
"network": "0.00"
},
"estimated": [
"network"
],
"networkFeeSamples": 40,
"maximum": "27.78"
},
"output": {
"amount": "2497.22",
"token": "USDT",
"network": "ethereum",
"address": "0x742d35Cc...",
"minimum": "2497.22"
},
"rate": {
"value": "1.0009",
"source": "provider",
"asOf": "2023-11-07T05:31:56Z"
}
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 401,
"type": "urn:problem-type:auth:unauthorized",
"detail": "Bearer token required",
"instance": "<string>",
"realm": "API",
"scope": "read:users"
}{
"title": "<string>",
"status": 404,
"resourceType": "user",
"resourceId": "<string>",
"type": "about:blank",
"detail": "<string>",
"instance": "<string>"
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}Estimate the cost of a deposit
Returns what depositing amount into this account is expected to cost, before
any money moves.
An estimate, not a quote. No rate is locked. rate.asOf says when the rate
was read; the figures may differ by the time funds arrive.
The fee is this account’s. It is a percentage held against the individual account, so two accounts can legitimately return different fees for the same amount. Do not cache an estimate against one account and reuse it for another.
fees.estimated says which parts can move. A component listed there is an
approximation; one not listed is exact as at rate.asOf. Network fees are
never knowable before settlement — the chain charges what it charges at the
moment of broadcast — so network is always listed, including where it rounds
to 0.00 on networks that do not meaningfully charge it. fees.maximum and
output.minimum bound the estimated components against recently settled
deposits, and are what to show a user as “at most” and “at least”.
The bound can be missing. It is drawn from deposits we have actually settled
on that network, so until enough have, fees.maximum and output.minimum are
both omitted — and a breakdown.network of 0.00 alongside them means
unmeasured, not free. fees.networkFeeSamples says how many settlements are
behind the figures; at 0 we have never seen this network settle. Do not
promise a user a ceiling on the cost, or a floor on what they receive, when
those fields are absent.
Fees are in the account’s own currency, which is EUR on SEPA accounts.
When an estimate cannot be produced, branch on code, not on the status
alone — the codes match GET /v1/on-ramps/exchange-rates:
rate_unavailable(503) — the pair is quotable but has no rate right now. Transient; retry.unsupported_currency_pair(400) — the pair is not quoted at all. Permanent.exchange_rate_provider_error(502) — the rate provider failed otherwise.
curl --request GET \
--url https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate \
--header 'Authorization: Bearer <token>'import requests
url = "https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate', 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://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/auto-ramp-accounts/{id}/estimate")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"input": {
"amount": "2525.00",
"currency": "USD"
},
"fees": {
"total": "27.78",
"currency": "USD",
"breakdown": {
"platform": "57.07",
"exchange": "2.53",
"network": "0.00"
},
"estimated": [
"network"
],
"networkFeeSamples": 40,
"maximum": "27.78"
},
"output": {
"amount": "2497.22",
"token": "USDT",
"network": "ethereum",
"address": "0x742d35Cc...",
"minimum": "2497.22"
},
"rate": {
"value": "1.0009",
"source": "provider",
"asOf": "2023-11-07T05:31:56Z"
}
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 401,
"type": "urn:problem-type:auth:unauthorized",
"detail": "Bearer token required",
"instance": "<string>",
"realm": "API",
"scope": "read:users"
}{
"title": "<string>",
"status": 404,
"resourceType": "user",
"resourceId": "<string>",
"type": "about:blank",
"detail": "<string>",
"instance": "<string>"
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}{
"title": "Unauthorized",
"status": 400,
"type": "urn:problem-type:auth:unauthorized",
"detail": "<string>",
"instance": "/errors/1234567890",
"code": "transaction_limit",
"field": "amountUsd",
"retryable": true,
"retryAfter": 5,
"suggestedAction": "auto_ramp",
"clearsAt": "2023-11-07T05:31:56Z",
"availableAt": "2023-11-07T05:31:56Z",
"permanent": true
}Authorizations
User bearer credential: either a Cognito JWT or an ak_ user API key. Backend integrators using HMAC must include the user API key alongside the three HMAC headers on user-scoped endpoints.
Path Parameters
The auto-ramp account ID
1Query Parameters
Fiat amount to be deposited, in the account's currency. Decimal string.
^\d+(\.\d{1,2})?$"2525.00"
Response
What a deposit into this account is expected to cost. An estimate, not a quote: no rate is locked, and the figures may differ by the time funds arrive.
What a deposit into this account is expected to cost. An estimate, not a quote: no rate is locked, and the figures may differ by the time funds arrive.