curl --request GET \
--url https://api.sandbox.services.payward.com/v1/ramp/checkout \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.sandbox.services.payward.com/v1/ramp/checkout"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.sandbox.services.payward.com/v1/ramp/checkout', 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.services.payward.com/v1/ramp/checkout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <api-key>"
],
]);
$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://api.sandbox.services.payward.com/v1/ramp/checkout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.services.payward.com/v1/ramp/checkout")
.header("API-Key", "<api-key>")
.header("API-Sign", "<api-key>")
.header("API-Nonce", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.services.payward.com/v1/ramp/checkout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"checkout_url": "https://checkout.ramp.network/?session=checkout-123",
"request_data": {
"from": {
"symbol": "USD",
"type": "fiat",
"method": "credit_card",
"amount": "100.00"
},
"to": {
"symbol": "BTC",
"type": "crypto",
"method": "Bitcoin",
"network": "Bitcoin",
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"memo": "123456"
},
"affiliate_fee_bps": "250",
"country": "US",
"subdivision": "CA",
"redirect_url": "https://example.com/checkout/success",
"failure_url": "https://example.com/checkout/failure",
"external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
"external_transaction_id": "INV-2026-04-0042",
"external_metadata": "{\"order_id\":\"order_12345\"}"
}
}
}{
"error": {
"type": "validation_error",
"status": 400,
"instance": "req_123",
"code": "bad_request"
}
}{
"error": {
"type": "authentication_error",
"status": 401,
"instance": "req_123",
"code": "unauthenticated"
}
}{
"error": {
"type": "authorization_error",
"status": 403,
"instance": "req_123",
"code": "forbidden"
}
}{
"error": {
"type": "rate_limit_error",
"status": 429,
"instance": "req_123",
"code": "resource_exhausted"
}
}{
"error": {
"type": "internal_error",
"status": 500,
"instance": "req_123",
"code": "internal"
}
}{
"error": {
"type": "api_error",
"status": 501,
"instance": "req_123",
"code": "unimplemented"
}
}{
"error": {
"type": "service_error",
"status": 503,
"instance": "req_123",
"code": "unavailable"
}
}{
"error": {
"type": "service_error",
"status": 504,
"instance": "req_123",
"code": "deadline_exceeded"
}
}Get Ramp checkout URL
Generate a hosted Ramp checkout URL for the provided transaction configuration. The response echoes the request parameters so the Ramp partner can confirm what was submitted.
curl --request GET \
--url https://api.sandbox.services.payward.com/v1/ramp/checkout \
--header 'API-Key: <api-key>' \
--header 'API-Nonce: <api-key>' \
--header 'API-Sign: <api-key>'import requests
url = "https://api.sandbox.services.payward.com/v1/ramp/checkout"
headers = {
"API-Key": "<api-key>",
"API-Sign": "<api-key>",
"API-Nonce": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'API-Key': '<api-key>', 'API-Sign': '<api-key>', 'API-Nonce': '<api-key>'}
};
fetch('https://api.sandbox.services.payward.com/v1/ramp/checkout', 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.services.payward.com/v1/ramp/checkout",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>",
"API-Nonce: <api-key>",
"API-Sign: <api-key>"
],
]);
$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://api.sandbox.services.payward.com/v1/ramp/checkout"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
req.Header.Add("API-Sign", "<api-key>")
req.Header.Add("API-Nonce", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.sandbox.services.payward.com/v1/ramp/checkout")
.header("API-Key", "<api-key>")
.header("API-Sign", "<api-key>")
.header("API-Nonce", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.services.payward.com/v1/ramp/checkout")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
request["API-Sign"] = '<api-key>'
request["API-Nonce"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": {
"checkout_url": "https://checkout.ramp.network/?session=checkout-123",
"request_data": {
"from": {
"symbol": "USD",
"type": "fiat",
"method": "credit_card",
"amount": "100.00"
},
"to": {
"symbol": "BTC",
"type": "crypto",
"method": "Bitcoin",
"network": "Bitcoin",
"address": "bc1qxy2kgdygjrsqtzq2n0yrf2493p83kkfjhx0wlh",
"memo": "123456"
},
"affiliate_fee_bps": "250",
"country": "US",
"subdivision": "CA",
"redirect_url": "https://example.com/checkout/success",
"failure_url": "https://example.com/checkout/failure",
"external_user_id": "user_01J0M7C0Z9F8YX3GQH8E",
"external_transaction_id": "INV-2026-04-0042",
"external_metadata": "{\"order_id\":\"order_12345\"}"
}
}
}{
"error": {
"type": "validation_error",
"status": 400,
"instance": "req_123",
"code": "bad_request"
}
}{
"error": {
"type": "authentication_error",
"status": 401,
"instance": "req_123",
"code": "unauthenticated"
}
}{
"error": {
"type": "authorization_error",
"status": 403,
"instance": "req_123",
"code": "forbidden"
}
}{
"error": {
"type": "rate_limit_error",
"status": 429,
"instance": "req_123",
"code": "resource_exhausted"
}
}{
"error": {
"type": "internal_error",
"status": 500,
"instance": "req_123",
"code": "internal"
}
}{
"error": {
"type": "api_error",
"status": 501,
"instance": "req_123",
"code": "unimplemented"
}
}{
"error": {
"type": "service_error",
"status": 503,
"instance": "req_123",
"code": "unavailable"
}
}{
"error": {
"type": "service_error",
"status": 504,
"instance": "req_123",
"code": "deadline_exceeded"
}
}Authorizations
Your public API key. Identifies the partner making the request.
HMAC signature over the request, computed with your private key.
Monotonically increasing nonce included in the request signature.
Query Parameters
Source asset ticker symbol (e.g., "USD"). Use GET /v1/ramp/fiat-currencies to discover supported source currencies.
Symbol identifying an asset within its asset category.
1 - 16Classification of the source asset. Pair with from_symbol to disambiguate when the same ticker exists across asset classes (e.g., USDC as stablecoin vs crypto). Only fiat sources are currently supported (on-ramp).
Source asset classification accepted by Ramp on-ramp flows.
fiat Funding method used for the source side. Use GET /v1/ramp/payment-methods to discover supported payment methods.
1 - 128Amount to spend, denominated in the source asset, as a decimal string.
1 - 64^[0-9]+(\.[0-9]+)?$Destination asset ticker symbol (e.g., "BTC"). Use GET /v1/ramp/buy/crypto to discover supported destination assets.
Symbol identifying an asset within its asset category.
1 - 16Classification of the destination asset. Pair with to_symbol to disambiguate when the same ticker exists across asset classes (e.g., USDC as stablecoin vs crypto). Only crypto and stablecoin destinations are currently supported (on-ramp).
Destination asset classification accepted by Ramp on-ramp flows.
crypto, stablecoin Withdrawal method for the destination asset. Use GET /v1/ramp/buy/crypto to discover available withdrawal methods for each asset.
1 - 128Optional withdrawal network identifier. Use GET /v1/ramp/buy/crypto to discover available networks for each destination asset.
1 - 128Optional destination wallet address for the crypto withdrawal.
1 - 512Optional memo/tag/note for the crypto withdrawal (used for certain assets).
1 - 256Affiliate fee in basis points to attribute to the partner (0-10000 where 100 = 1%). This fee is additive to the platform fee, increasing the total fee charged to the user. The affiliate_fee in webhook payloads reflects the partner's portion of the total fee for transactions originating from this checkout.
1 - 5^(10000|[0-9]{1,4})$ISO 3166-1 alpha-2 country code. Use GET /v1/ramp/countries to discover supported values.
2^[A-Za-z]{2}$ISO 3166-2 subdivision code suffix (e.g., CA for California when country is US). Use GET /v1/ramp/countries to discover supported values.
1 - 64^[A-Za-z0-9-]+$URL to redirect the user after completing checkout successfully.
1 - 255URL to redirect the user after a failed checkout.
1 - 255Optional partner-supplied user identifier.
1 - 64Optional partner-supplied partner identifier.
1 - 64Optional partner transaction identifier.
1 - 64Optional metadata to store alongside the checkout.
1 - 1000Response
Successful response
Checkout details for the requested Ramp route.
Show child attributes
Show child attributes