curl --request GET \
--url https://api.vitawallet.io/api/businesses/prices \
--header 'Authorization: <api-key>' \
--header 'x-date: <api-key>' \
--header 'x-login: <api-key>' \
--header 'x-trans-key: <api-key>'import requests
url = "https://api.vitawallet.io/api/businesses/prices"
headers = {
"x-login": "<api-key>",
"x-trans-key": "<api-key>",
"x-date": "<api-key>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-login': '<api-key>',
'x-trans-key': '<api-key>',
'x-date': '<api-key>',
Authorization: '<api-key>'
}
};
fetch('https://api.vitawallet.io/api/businesses/prices', 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.vitawallet.io/api/businesses/prices",
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: <api-key>",
"x-date: <api-key>",
"x-login: <api-key>",
"x-trans-key: <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.vitawallet.io/api/businesses/prices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-login", "<api-key>")
req.Header.Add("x-trans-key", "<api-key>")
req.Header.Add("x-date", "<api-key>")
req.Header.Add("Authorization", "<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.vitawallet.io/api/businesses/prices")
.header("x-login", "<api-key>")
.header("x-trans-key", "<api-key>")
.header("x-date", "<api-key>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vitawallet.io/api/businesses/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-login"] = '<api-key>'
request["x-trans-key"] = '<api-key>'
request["x-date"] = '<api-key>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clp": {
"vita_sent": {
"prices": {
"attributes": {
"valid_until": "2026-04-28T07:31:30.000Z",
"clp_sell": {
"co": 3.72,
"cl": 1,
"mx": 0.055
},
"fixed_cost": {
"co": 1500,
"cl": 300,
"mx": 15
}
}
}
},
"withdrawal": {
"prices": {
"attributes": {
"valid_until": "2026-04-28T07:31:30.000Z",
"time_to_arrival_transfer": "Up to 24 business hours",
"clp_sell": {
"co": 3.72,
"mx": 0.055
},
"fixed_cost": {
"co": 2500,
"mx": 25
},
"fixed_cost_usd": {
"co": 0.65,
"mx": 1.4
},
"min_amount": {
"co": 10000,
"mx": 500
}
}
}
}
}
}List prices
Returns Vita’s current exchange rates, fixed costs, and operational parameters needed to calculate the final amount of any fiat transaction. The response is organized by source currency (every currency active in your wallet, e.g. clp, usd, cop). Each currency object contains two independent price structures:
vita_sent— internal transfers between Vita Wallet users (used bytransactions_type: "vita_sent").withdrawal— bank payouts to external accounts (used bytransactions_type: "withdrawal").
Call this endpoint before creating a Vita Sent or a bank payout to ensure your calculations use fresh rates.
Price Validity
Each prices response includes a valid_until timestamp indicating when the rates expire.
30-second look-back window. If you call this endpoint within the last 30 seconds before expiration, Vita returns freshly refreshed prices with a new valid_until (never the about-to-expire ones). This guarantees ≥ ~2 minutes of validity ahead.
Note: If
valid_untilhas already expired, request prices again before submitting the transaction to avoid theLos precios caducaronerror.
Vita Sent Prices
The vita_sent section contains the pricing data needed to calculate internal transfers to another Vita Wallet user.
| Field | Description |
|---|---|
valid_until | Timestamp indicating when these prices expire. |
_sell | Sell rate for Vita-to-Vita transfers, indexed by destination country code (e.g., clp_sell.co for Vita Sent from CLP to a Vita user in Colombia). |
fixed_cost | Fixed cost in the destination country’s local currency, indexed by country code. |
Example — Vita Sent from CLP to Colombia
const finalAmount =
(amount * vita_sent.prices.attributes["clp_sell"]["co"]) -
vita_sent.prices.attributes["fixed_cost"]["co"];
Payouts Prices
The withdrawal section contains the pricing data needed to calculate bank payouts to any supported destination country.
| Field | Description |
|---|---|
valid_until | Timestamp indicating when these prices expire. |
time_to_arrival_transfer | Time window Vita Wallet needs to deliver the payment to the destination bank account. |
_sell | Sell rate for the source currency, indexed by destination country code (e.g., clp_sell.co for selling CLP to Colombia). |
fixed_cost | Fixed cost charged in the destination country’s local currency, indexed by country code. |
fixed_cost_usd | Fixed cost expressed in USD, indexed by country code. |
min_amount | Minimum amount allowed for the withdrawal, indexed by destination country. |
Note: The
_sellfield reflects the active balances of your account. If you have an active ARS balance, the response will includears_sell. The same applies to every currency active in your wallet (CLP, USD, COP, MXN, etc.).
Example — Bank payout from CLP to Colombia
const finalAmount =
(amount * withdrawal.prices.attributes["clp_sell"]["co"]) -
withdrawal.prices.attributes["fixed_cost"]["co"];
Example — Bank payout from USD to Colombia
const finalAmount =
(amount * usd.withdrawal.prices.attributes["usd_sell"]["co"]) -
usd.withdrawal.prices.attributes["fixed_cost"]["co"];
Calculating the Final Amount — General Formula
For both vita_sent and withdrawal, use the same formula; just pick the correct section:
final_amount = (amount_sent × <source>_sell[<destination_country>]) − fixed_cost[<destination_country>]
Warning: Always subtract the fixed cost from the converted amount. Skipping this step gives an incorrect final amount.
Quick Reference
| Step | Action |
|---|---|
| 1 | Call GET /api/businesses/prices to retrieve current rates. |
| 2 | Verify the valid_until timestamp before using a price. |
| 3 | Select the source currency object (clp, usd, cop, etc.). |
| 4 | Choose vita_sent (for Vita-to-Vita transfers) or withdrawal (for bank payouts). |
| 5 | Confirm the amount meets the min_amount requirement for the destination country (payouts only). |
| 6 | Apply the formula: (amount × _sell[country]) − fixed_cost[country]. |
| 7 | Submit the transaction to POST /api/businesses/transactions with the calculated values. |
curl --request GET \
--url https://api.vitawallet.io/api/businesses/prices \
--header 'Authorization: <api-key>' \
--header 'x-date: <api-key>' \
--header 'x-login: <api-key>' \
--header 'x-trans-key: <api-key>'import requests
url = "https://api.vitawallet.io/api/businesses/prices"
headers = {
"x-login": "<api-key>",
"x-trans-key": "<api-key>",
"x-date": "<api-key>",
"Authorization": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-login': '<api-key>',
'x-trans-key': '<api-key>',
'x-date': '<api-key>',
Authorization: '<api-key>'
}
};
fetch('https://api.vitawallet.io/api/businesses/prices', 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.vitawallet.io/api/businesses/prices",
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: <api-key>",
"x-date: <api-key>",
"x-login: <api-key>",
"x-trans-key: <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.vitawallet.io/api/businesses/prices"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-login", "<api-key>")
req.Header.Add("x-trans-key", "<api-key>")
req.Header.Add("x-date", "<api-key>")
req.Header.Add("Authorization", "<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.vitawallet.io/api/businesses/prices")
.header("x-login", "<api-key>")
.header("x-trans-key", "<api-key>")
.header("x-date", "<api-key>")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vitawallet.io/api/businesses/prices")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-login"] = '<api-key>'
request["x-trans-key"] = '<api-key>'
request["x-date"] = '<api-key>'
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"clp": {
"vita_sent": {
"prices": {
"attributes": {
"valid_until": "2026-04-28T07:31:30.000Z",
"clp_sell": {
"co": 3.72,
"cl": 1,
"mx": 0.055
},
"fixed_cost": {
"co": 1500,
"cl": 300,
"mx": 15
}
}
}
},
"withdrawal": {
"prices": {
"attributes": {
"valid_until": "2026-04-28T07:31:30.000Z",
"time_to_arrival_transfer": "Up to 24 business hours",
"clp_sell": {
"co": 3.72,
"mx": 0.055
},
"fixed_cost": {
"co": 2500,
"mx": 25
},
"fixed_cost_usd": {
"co": 0.65,
"mx": 1.4
},
"min_amount": {
"co": 10000,
"mx": 500
}
}
}
}
}
}Authorizations
Business xLogin
Business xTransKey
ISO8601 datetime
V2-HMAC-SHA256 signature. Example: V2-HMAC-SHA256, Signature: <hash>
Response
Current prices for every active currency, split into vita_sent and withdrawal structures.