curl --request GET \
--url https://api.vitawallet.io/api/businesses/withdrawal_rules \
--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/withdrawal_rules"
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/withdrawal_rules', 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/withdrawal_rules",
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/withdrawal_rules"
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/withdrawal_rules")
.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/withdrawal_rules")
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_bodyList payout rules
This endpoint returns the dynamic form schema required to create a fiat payout to a specific destination country. Since each country has its own banking regulations, account formats, and compliance requirements, the necessary fields vary from one destination to another.
By calling this endpoint before creating a withdrawal, you get the exact list of fields you need to collect from your user (or pre-fill from your system), along with their validation rules. This guarantees that your withdrawal request will comply with the destination country’s requirements and pass validation on submission.
Common Use Cases
-
Render dynamic forms: Build a withdrawal form that automatically shows the correct fields based on the destination country selected by the user.
-
Validate input client-side: Use the validation rules returned (required fields, allowed formats, max lengths, etc.) to validate user input before submitting the transaction.
-
Pre-fill known data: When a recurring payout is being created, use the schema to match existing user data with the expected fields.
-
Onboard new countries quickly: As Vita Business adds new destination countries or updates field requirements, your integration adapts without code changes.
Final Customer Fields (fc_ Prefix)
Important: If your account has the “Final Customers” service activated, you must also provide information about the person or business actually carrying out the transaction (not just the recipient). In this case, the endpoint will return additional fields prefixed with
fc_.
The Final Customers service is used when your business processes payouts on behalf of your end users — for example, a marketplace paying out to its sellers, a remittance platform sending funds for its customers, or a payroll provider paying employees on behalf of multiple companies.
Examples of fc_ Fields
Common Final Customer fields include (the exact list depends on the destination country and your account configuration):
| Field | Description |
|---|---|
fc_first_name | First name of the final customer initiating the transaction. |
fc_last_name | Last name of the final customer. |
fc_document_type | Type of identification document (e.g., ID card, passport, tax ID). |
fc_document_number | Identification document number. |
fc_email | Email address of the final customer. |
fc_country | Country of residence of the final customer. |
fc_address | Physical address of the final customer. |
fc_birth_date | Date of birth of the final customer. |
Note: The endpoint returns only the
fc_fields that apply to the destination country and your account configuration. If the Final Customers service is not enabled on your account, nofc_fields will be returned.
Response Structure
The response returns a list of fields required by the destination country, each one including its key, label, data type, validation rules, and (when applicable) a list of allowed values.
Typical fields per rule include:
| Field | Description |
|---|---|
key | The field name to send in the withdrawal request (e.g., bank, account_number, document_type). |
label | Human-readable name to display in your UI. |
type | Data type (e.g., string, number, select). |
required | Whether the field is mandatory. |
options | For select fields, the list of allowed values (e.g., banks, document types, account types). |
validation | Validation rules (regex pattern, min/max length, etc.). |
curl --request GET \
--url https://api.vitawallet.io/api/businesses/withdrawal_rules \
--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/withdrawal_rules"
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/withdrawal_rules', 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/withdrawal_rules",
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/withdrawal_rules"
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/withdrawal_rules")
.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/withdrawal_rules")
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_bodyAuthorizations
Business xLogin
Business xTransKey
ISO8601 datetime
V2-HMAC-SHA256 signature. Example: V2-HMAC-SHA256, Signature: <hash>
Response
Successful response.