curl --request POST \
--url https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "2525.00",
"gasFee": "4.20",
"exchangeFee": "2.53",
"settle": true,
"depositId": "<string>"
}
'import requests
url = "https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit"
payload = {
"amount": "2525.00",
"gasFee": "4.20",
"exchangeFee": "2.53",
"settle": True,
"depositId": "<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({
amount: '2525.00',
gasFee: '4.20',
exchangeFee: '2.53',
settle: true,
depositId: '<string>'
})
};
fetch('https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit', 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/sandbox/auto-ramp-accounts/{id}/deposit",
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([
'amount' => '2525.00',
'gasFee' => '4.20',
'exchangeFee' => '2.53',
'settle' => true,
'depositId' => '<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://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit"
payload := strings.NewReader("{\n \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\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://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit")
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 \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"onRampId": "507f1f77bcf86cd799439011",
"depositId": "3f1a9c02-6c1c-4f0e-9a6a-2f9c8f6f4b21",
"status": "awaiting_payment",
"input": {
"amount": "2525.00",
"currency": "EUR"
},
"fees": {
"total": "27.78",
"currency": "EUR",
"breakdown": {
"platform": "57.07",
"exchange": "2.53",
"network": "0.00"
}
},
"output": {
"amount": "2497.22",
"token": "USDC"
}
}{
"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": "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": "<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
}Simulate a deposit into an auto-ramp account (sandbox only)
Simulates a fiat deposit arriving in this auto-ramp account and settling to crypto. Only available in sandbox environments — returns 403 in production.
There is no other way to make an auto-ramp settle in sandbox: the provider’s own sandbox cannot credit a virtual account. This drives the same ingestion path a real deposit takes, so the on-ramp it produces is an ordinary on-ramp — it appears in GET /v1/on-ramps, fires the same onramp.* webhooks, and carries the same fee breakdown.
The fee is the account’s own percentage and the conversion is priced off the live rate, so the figures should agree with GET /v1/auto-ramp-accounts/{id}/estimate for the same amount, up to the network fee — which no estimate can know in advance and which you set here yourself.
Poll onRampId at GET /v1/on-ramps/{id}.
curl --request POST \
--url https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"amount": "2525.00",
"gasFee": "4.20",
"exchangeFee": "2.53",
"settle": true,
"depositId": "<string>"
}
'import requests
url = "https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit"
payload = {
"amount": "2525.00",
"gasFee": "4.20",
"exchangeFee": "2.53",
"settle": True,
"depositId": "<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({
amount: '2525.00',
gasFee: '4.20',
exchangeFee: '2.53',
settle: true,
depositId: '<string>'
})
};
fetch('https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit', 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/sandbox/auto-ramp-accounts/{id}/deposit",
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([
'amount' => '2525.00',
'gasFee' => '4.20',
'exchangeFee' => '2.53',
'settle' => true,
'depositId' => '<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://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit"
payload := strings.NewReader("{\n \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\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://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/sandbox/auto-ramp-accounts/{id}/deposit")
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 \"amount\": \"2525.00\",\n \"gasFee\": \"4.20\",\n \"exchangeFee\": \"2.53\",\n \"settle\": true,\n \"depositId\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"onRampId": "507f1f77bcf86cd799439011",
"depositId": "3f1a9c02-6c1c-4f0e-9a6a-2f9c8f6f4b21",
"status": "awaiting_payment",
"input": {
"amount": "2525.00",
"currency": "EUR"
},
"fees": {
"total": "27.78",
"currency": "EUR",
"breakdown": {
"platform": "57.07",
"exchange": "2.53",
"network": "0.00"
}
},
"output": {
"amount": "2497.22",
"token": "USDC"
}
}{
"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": "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": "<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
}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 to deposit into
1Body
Fiat amount to deposit, in the account's currency. Decimal string, same format as the estimate endpoint's amount. Up to 12 digits before the decimal point.
^\d{1,12}(\.\d{1,2})?$"2525.00"
On-chain settlement cost the provider should report. Defaults to 0.00, which is what a Solana deposit really costs. Set it to give an Ethereum deposit a realistic network fee — this is also the only way to give the estimate endpoint's network figure a settled sample to read.
^\d{1,12}(\.\d{1,2})?$"4.20"
Conversion cost the provider should itemise. Derived from the provider's live bid/ask spread when omitted.
^\d{1,12}(\.\d{1,2})?$"2.53"
Set false to leave the deposit at processing instead of delivering the crypto, for testing an on-ramp that has not settled yet. Defaults to true.
true
Reuse the depositId of an earlier simulated deposit to advance that on-ramp instead of creating a new one. Fresh and unique when omitted.
1 - 128Response
The result of a simulated deposit. Everything here also reaches the ordinary on-ramp endpoints.
The result of a simulated deposit. Everything here also reaches the ordinary on-ramp endpoints.
The on-ramp the deposit produced. Poll it at GET /v1/on-ramps/{id} — it is an ordinary on-ramp in every respect.
"507f1f77bcf86cd799439011"
The provider-side deposit identifier. Pass it back to advance this same on-ramp.
"3f1a9c02-6c1c-4f0e-9a6a-2f9c8f6f4b21"
awaiting_payment, processing, partially_delivered, completed, cancelled, failed, reversed, refunded, in_review Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes