Ramps
Get a Ramp Quote
Request priced quotes for an on-ramp or off-ramp by describing the source, destination, assets, and exactly one amount.
Request example
{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}
# Sample only. Generate a new signed token for each request
# (see Authentication). Tokens expire after 120 seconds.
curl --request POST \
--url "https://api.primevault.com/api/external/transactions/v2/quote/" \
--header "Authorization: Bearer <signed JWT>" \
--header "Api-Key: <API key>" \
--header "Content-Type: application/json" \
--data '{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}'
const quoteResponse = await apiClient.getQuote({
intent: {
input: { asset: "USDC", amount: "10000.00" },
output: { asset: "USD", vaultId: "vault_usd_settlement" },
source: { type: "VAULT", id: "vault_usdc_treasury", chain: "ETHEREUM" },
destination: { type: "BANK_ACCOUNT", id: "bank_account_usd_payroll", paymentRail: "ACH" },
},
});
console.log(quoteResponse.quotes);
{
"quotes": [
{
"quoteId": "quote_ramp_payroll_1042",
"rate": "1",
"fees": { "amount": "25.00", "asset": "USDC" },
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "amount": "9975.00", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" },
"expiresAt": "2026-09-30T10:00:30+00:00"
}
]
}
POST
/api/external/transactions/v2/quote/
Example: an off-ramp quote to sell 10,000 USDC from an Ethereum treasury vault and receive USD in a payroll bank account over ACH.
Request body
TransactionIntentRequest
required
Quote criteria for the requested ramp. See TransactionIntentRequest.
Show Properties
Show Properties
IntentAsset
required
What you spend. See IntentAsset.
IntentAsset
required
What you receive. See IntentAsset.
TransferPartyData
required
Source endpoint. Set
chain for a crypto leg or paymentRail for a fiat leg. See TransferPartyData.TransferPartyData
required
Destination endpoint. Set
chain for a crypto leg or paymentRail for a fiat leg. See TransferPartyData.Supply both assets and exactly one non-null amount, as a decimal string. Omit the other amount.
Response
QuoteResponseItem[]
Available quotes for the intent. See QuoteResponseItem.
Show Properties
Show Properties
string
Quote identifier. Pass it to Execute Quote.
string | null
Quoted conversion rate.
IntentAsset
Quoted input asset and amount. See IntentAsset.
IntentAsset
Quoted output asset and amount. See IntentAsset.
TransferPartyData
Source endpoint for the ramp. See TransferPartyData.
TransferPartyData
Destination endpoint for the ramp. See TransferPartyData.
string
ISO 8601 time when the quote expires. Execute the quote before this time.
Request example
{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}
# Sample only. Generate a new signed token for each request
# (see Authentication). Tokens expire after 120 seconds.
curl --request POST \
--url "https://api.primevault.com/api/external/transactions/v2/quote/" \
--header "Authorization: Bearer <signed JWT>" \
--header "Api-Key: <API key>" \
--header "Content-Type: application/json" \
--data '{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}'
const quoteResponse = await apiClient.getQuote({
intent: {
input: { asset: "USDC", amount: "10000.00" },
output: { asset: "USD", vaultId: "vault_usd_settlement" },
source: { type: "VAULT", id: "vault_usdc_treasury", chain: "ETHEREUM" },
destination: { type: "BANK_ACCOUNT", id: "bank_account_usd_payroll", paymentRail: "ACH" },
},
});
console.log(quoteResponse.quotes);
{
"quotes": [
{
"quoteId": "quote_ramp_payroll_1042",
"rate": "1",
"fees": { "amount": "25.00", "asset": "USDC" },
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "amount": "9975.00", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" },
"expiresAt": "2026-09-30T10:00:30+00:00"
}
]
}
⌘I
Request example
{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}
# Sample only. Generate a new signed token for each request
# (see Authentication). Tokens expire after 120 seconds.
curl --request POST \
--url "https://api.primevault.com/api/external/transactions/v2/quote/" \
--header "Authorization: Bearer <signed JWT>" \
--header "Api-Key: <API key>" \
--header "Content-Type: application/json" \
--data '{
"intent": {
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" }
}
}'
const quoteResponse = await apiClient.getQuote({
intent: {
input: { asset: "USDC", amount: "10000.00" },
output: { asset: "USD", vaultId: "vault_usd_settlement" },
source: { type: "VAULT", id: "vault_usdc_treasury", chain: "ETHEREUM" },
destination: { type: "BANK_ACCOUNT", id: "bank_account_usd_payroll", paymentRail: "ACH" },
},
});
console.log(quoteResponse.quotes);
{
"quotes": [
{
"quoteId": "quote_ramp_payroll_1042",
"rate": "1",
"fees": { "amount": "25.00", "asset": "USDC" },
"input": { "asset": "USDC", "amount": "10000.00" },
"output": { "asset": "USD", "amount": "9975.00", "vaultId": "vault_usd_settlement" },
"source": { "type": "VAULT", "id": "vault_usdc_treasury", "chain": "ETHEREUM" },
"destination": { "type": "BANK_ACCOUNT", "id": "bank_account_usd_payroll", "paymentRail": "ACH" },
"expiresAt": "2026-09-30T10:00:30+00:00"
}
]
}