curl --request POST \
--url https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"senderAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
"feePayer": "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"
}
'import requests
url = "https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction"
payload = {
"senderAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
"feePayer": "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"
}
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({
senderAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18',
feePayer: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d'
})
};
fetch('https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction', 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/off-ramp-quotes/{quoteId}/transaction",
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([
'senderAddress' => '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18',
'feePayer' => '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d'
]),
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/off-ramp-quotes/{quoteId}/transaction"
payload := strings.NewReader("{\n \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\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/off-ramp-quotes/{quoteId}/transaction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction")
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 \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\n}"
response = http.request(request)
puts response.read_body{
"type": "evm",
"chain": "ethereum",
"inputToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"outputToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"requiredTokenInput": "100000000",
"contractAddress": "0xbF7Abc15f00a8C2d6b13A952c58d12b7c194A8D0",
"calldata": "0xd71d9632...",
"method": "payWithToken",
"value": "0"
}{
"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
}Get transaction params for a quote
Returns transaction parameters for a sign_transaction quote. Use these to construct, sign, and submit the on-chain transaction.
Returns either EVM calldata or a serialized Solana transaction depending on the quote’s chain.
curl --request POST \
--url https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"senderAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
"feePayer": "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"
}
'import requests
url = "https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction"
payload = {
"senderAddress": "0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18",
"feePayer": "5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d"
}
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({
senderAddress: '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18',
feePayer: '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d'
})
};
fetch('https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction', 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/off-ramp-quotes/{quoteId}/transaction",
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([
'senderAddress' => '0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18',
'feePayer' => '5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d'
]),
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/off-ramp-quotes/{quoteId}/transaction"
payload := strings.NewReader("{\n \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\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/off-ramp-quotes/{quoteId}/transaction")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.spritz.finance/v1/off-ramp-quotes/{quoteId}/transaction")
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 \"senderAddress\": \"0x742d35Cc6634C0532925a3b844Bc9e7595f2bD18\",\n \"feePayer\": \"5eykt4UsFv8P8NJdTREpY1vzqKqZKvdpKuc147dw2N9d\"\n}"
response = http.request(request)
puts response.read_body{
"type": "evm",
"chain": "ethereum",
"inputToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"outputToken": "0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48",
"requiredTokenInput": "100000000",
"contractAddress": "0xbF7Abc15f00a8C2d6b13A952c58d12b7c194A8D0",
"calldata": "0xd71d9632...",
"method": "payWithToken",
"value": "0"
}{
"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
}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 quote ID
"6a99b7bacc18094dfe644ba6"
Body
Response
Response for status 200
- Option 1
- Option 2
EVM transaction parameters
evm Blockchain network
"ethereum"
Token address the user sends (contract address on EVM, mint address on Solana)
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
Token address received by the payment contract. Same as inputToken for direct payments, different for swap paths.
"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48"
Exact amount of inputToken to send, in smallest unit (e.g. 6 decimals for USDC)
"100000000"
Smart contract address — use as the to field when constructing the transaction
"0xbF7Abc15f00a8C2d6b13A952c58d12b7c194A8D0"
ABI-encoded calldata for the contract call
"0xd71d9632..."
Contract method being called
"payWithToken"
Native token value in wei to send with the transaction (null for ERC-20 payments)
"0"