curl --request POST \
--url https://api.vitawallet.io/api/businesses/business_users \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'x-date: <api-key>' \
--header 'x-login: <api-key>' \
--header 'x-trans-key: <api-key>' \
--data '""'import requests
url = "https://api.vitawallet.io/api/businesses/business_users"
headers = {
"x-login": "<api-key>",
"x-trans-key": "<api-key>",
"x-date": "<api-key>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-login': '<api-key>',
'x-trans-key': '<api-key>',
'x-date': '<api-key>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
}
};
fetch('https://api.vitawallet.io/api/businesses/business_users', 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/business_users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "\"\"",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vitawallet.io/api/businesses/business_users"
payload := strings.NewReader("\"\"")
req, _ := http.NewRequest("POST", url, payload)
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>")
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://api.vitawallet.io/api/businesses/business_users")
.header("x-login", "<api-key>")
.header("x-trans-key", "<api-key>")
.header("x-date", "<api-key>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("\"\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vitawallet.io/api/businesses/business_users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-login"] = '<api-key>'
request["x-trans-key"] = '<api-key>'
request["x-date"] = '<api-key>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "\"\""
response = http.request(request)
puts response.read_body{
"email": "gonzalo+v1@vitawallet.io",
"first_name": "Juan",
"category": "business",
"document_type": "dni",
"document_number": 999990000,
"address": "Calle Falsa 123",
"zipcode": "",
"accept_pep": true,
"profile_verification": "initial",
"accept_real_info": false,
"accept_funds": false,
"business_external_id": "ext-v1",
"is_business_api": true,
"x_login": "46684a1c21ecb2ef08e8af4e1267cd674653947a",
"url_notify_kyc": "https://webhook.site/b0cad134-9494-46bb-b0c9-c37bc31e54ef",
"disable_email_notifications": true,
"x_trans_key": "KTtQM9AC8rCtpw7FRd3E61o5GoI=",
"secret": "8e3874d1868c597d331478bed5abb4faa0c95b243cea7c0bb8c05c7b5cd1970260411219561ca7dd4475f291618ff673b4a45df027365ad7608c859424df97ea559e4f54359633fbab1afe5d1548279e7a7fb3976dbb6a631ef21169730815eb4c7d568c4c5ef7bbf6092bb9cdece1138c59d1c10e095bd3216044594ce109d97b622f7a31414f3f52c5e5241e6d71ec7de59b8d3aa017c12d0ef5e8cc1456b4fc0aa22c0a4a8650a7624f58804a4280d61559e2e316dd05f938c7c8aa0bedc7b33a33f294ee76fa23b619d6d1d5a7db724117caca03250e5fd18c76456d502c5bdb33bb65a18fdd0c842e2f5bf5602c19f63ebf503d9d3b6796cf8adb0cf8017e2ac51bc4806eac3bf378223f81c69cca1c6a8df86a4f40c17e25a6c01f81754c222bb0b969cb34a75a0d62",
"country": "Argentina",
"state": "Mendoza",
"city": null,
"facial_image": {
"filename": "facial_image.jpeg",
"content_type": "image/jpeg"
},
"document_back": {
"filename": "back_document_image.jpeg",
"content_type": "image/jpeg"
},
"document_front": {
"filename": "document_image.jpeg",
"content_type": "image/jpeg"
},
"business": {
"operation_countries": "AR,CL",
"website_url": "https://empresa-ejemplo.com",
"uuid": "95956f81-56a4-43bd-8330-2665062dc5cc",
"trade_name": "Empresa Ejemplo SRL",
"is_financial_company": true,
"has_license": false,
"same_to_legal_location": false,
"physical_country": "Argentina",
"physical_state": "Mendoza",
"physical_city": "Las Heras",
"physical_zipcode": "",
"physical_address": "Calle Comercial 456",
"lr_first_name": "Carlos",
"lr_last_name": "Lopez",
"lr_phone_number": 541198765432,
"lr_document_number": 23456789,
"lr_document_issuing_country": "Argentina",
"lr_document_expedition_date": null,
"lr_secondary_document_number": 98765432,
"lr_civil_status": "single",
"lr_occupation": "",
"lr_gender": "male",
"expected_monthly_payments_usd": "usd_40000_to_500000",
"lr_document_type": "dni",
"lr_birthdate": "1975-08-20T00:00:00.000Z",
"business_interests": {
"use_interests": [
"Compra y venta cripto",
"Soluciones API"
],
"other_usability": "Otro interés"
},
"company_statute": {
"filename": "company_statute.pdf",
"content_type": "application/pdf"
},
"tax_identity_document": {
"filename": "tax_identity_document.jpeg",
"content_type": "image/jpeg"
},
"statement_of_funds_document": {
"filename": "statement_of_funds_document.pdf",
"content_type": "application/pdf"
},
"extra_document": {
"filename": "extra_document.jpeg",
"content_type": "image/jpeg"
},
"legal_representative_proof_document": {
"filename": "legal_representative_proof_document.pdf",
"content_type": "application/pdf"
}
},
"business_owners": [
{
"ubo_first_name": "Ana",
"ubo_last_name": "Gomez",
"ubo_residence_country": "Argentina",
"ubo_residence_state": "Mendoza",
"ubo_residence_city": "Las Heras",
"ubo_address": "Av. Siempre Viva 789",
"ubo_is_direct": true,
"ubo_ownership_percentage": 60,
"ubo_document_type": "dni",
"ubo_document_number": 34567890,
"ubo_country": "Argentina",
"ubo_start_date": "2020-01-01T00:00:00.000Z",
"ubo_document_expedition_date": "2015-01-01T00:00:00.000Z",
"ubo_has_control": false,
"ubo_is_signer": false,
"ubo_title_position": "CEO",
"ubo_birthdate": "1980-02-10T00:00:00.000Z",
"ubo_phone": 54111223344,
"ubo_email": "ana.gomez@example.com",
"ubo_zipcode": 1000,
"ubo_document_image": {
"filename": "ubo_document_image.jpeg",
"content_type": "image/jpeg"
},
"ubo_back_document_image": {
"filename": "ubo_back_document_image.jpeg",
"content_type": "image/jpeg"
}
}
],
"politically_exposed_person": {
"first_name": null,
"last_name": null,
"document_number": null,
"job_title": null
}
}Create User
This endpoint allows creating a user in Vita Wallet. Depending on the information provided:
-
If all required information is included, the user is created and profile verification (profile_verification) is automatically initiated.
-
If some information is missing, the user is created in the initial or started state and verification can be completed later by sending the missing data.
The endpoint supports both natural and business users, and returns all the information of the created user along with their relationships (for example, business, business_owners, politically_exposed_person).
Minimum creation (required fields only)
In some cases, a user can be created with only the mandatory information, the required fields are: email, category, country_iso_code, document_number, first_name
The user will be created successfully but will not be verified.
The initial status will be profile_verification: “initial” until the additional data is provided to complete the verification.
Example of minimum request body:
{
"email": "email@example.com",
"category": "natural",
"country_iso_code": "AR",
"document_number": "123456789",
"first_name": "John"
}
Full creation (all fields provided)
When the request body includes all the required and optional fields, the user is created with a complete profile and the verification process starts automatically. In this case, the user’s profile will have the status profile_verification: “started”, since all information necessary to begin the verification has been provided.
Example full request body (Natural User)
{
"email": "email@example.com",
"first_name": "John",
"last_name": "Doe",
"category": "natural",
"birthdate": "1985-06-15",
"document_type": "dni",
"document_number": "123456789",
"country_iso_code": "AR",
"birth_country_iso_code": "AR",
"address": "123 Fake Street",
"state_iso_code": "AR-M",
"city_name": "Las Heras",
"zipcode": "1000",
"accept_pep": true,
"accept_real_info": true,
"accept_funds": true,
"civil_status": "single",
"phone": "+54261454748",
"gender": "male",
"ocupation": "Engineer",
"document_expedition_date": "2015-05-01",
"document_issuing_country_iso_code": "AR",
"secondary_document_number": "987654321",
"business_external_id": "ext-v3",
"url_notify_kyc": "https://webhook.site/example-webhook",
"disable_email_notifications": false,
"natural_interests": {
"use_interests": [
"Customer fund transfers",
"Payroll payments"
],
"other_usability": "Specify another interest"
},
"document_image": "Front document file in Base64 (image/jpeg)",
"back_document_image": "Back document file in Base64 (image/jpeg)",
"facial_image": "Facial image in Base64 (image/jpeg)",
"politically_exposed_person": {
"first_name": "Peter",
"last_name": "Alvarez",
"document_number": "45678901",
"job_title": "Public Official"
}
}
Files must be sent encoded in Base64 using the correct MIME type format (e.g., image/jpeg, application/pdf).
Example full request body (Business User)
{
"email": "email@example.com",
"first_name": "John",
"category": "business",
"document_type": "dni",
"document_number": "123456789",
"country_iso_code": "AR",
"address": "123 Fake Street",
"state_iso_code": "AR-M",
"city_name": "Las Heras",
"zipcode": "1000",
"accept_pep": true,
"accept_real_info": true,
"accept_funds": true,
"business_external_id": "ext-v3",
"url_notify_kyc": "https://webhook.site/example-webhook",
"disable_email_notifications": false,
"document_image": "Front document image in Base64 (JPG/PNG)",
"back_document_image": "Back document image in Base64 (JPG/PNG)",
"facial_image": "Selfie or facial capture in Base64 (JPG/PNG)",
"business": {
"operation_countries": "AR,CL",
"website_url": "https://example-company.com",
"trade_name": "Example Company LLC",
"is_financial_company": false,
"has_license": false,
"same_to_legal_location": true,
"physical_country_iso_code": "AR",
"physical_state_iso_code": "AR-M",
"physical_city_name": "Las Heras",
"physical_zipcode": "1000",
"physical_address": "456 Commercial Street",
"lr_first_name": "Charles",
"lr_last_name": "Lopez",
"lr_phone_number": "+541198765432",
"lr_document_number": "23456789",
"lr_document_issuing_country_iso_code": "AR",
"lr_document_expedition_date": "2010-03-15",
"lr_secondary_document_number": "98765432",
"lr_civil_status": "single",
"lr_occupation": "Director",
"lr_gender": "male",
"lr_birthdate": "1975-08-20",
"lr_document_type": "dni",
"expected_monthly_payments_usd": "usd_40000_to_500000",
"company_statute": "Company statute in Base64 (PDF)",
"extra_document": "Additional document in Base64 (JPG/PNG)",
"tax_identity_document": "Tax identity document in Base64 (JPG/PNG)",
"statement_of_funds_document": "Statement of funds document in Base64 (PDF)",
"legal_representative_proof_document": "Legal representative proof document in Base64 (PDF)",
"business_interests": {
"use_interests": [
"Crypto trading",
"API solutions"
],
"other_usability": "Other interest"
}
},
"business_owners": [
{
"ubo_first_name": "Anna",
"ubo_last_name": "Gomez",
"ubo_residence_country_iso_code": "AR",
"ubo_residence_state_iso_code": "AR-M",
"ubo_residence_city_name": "Las Heras",
"ubo_address": "789 Evergreen Ave",
"ubo_is_direct": true,
"ubo_ownership_percentage": 60,
"ubo_document_type": "dni",
"ubo_document_number": "34567890",
"ubo_country_iso_code": "AR",
"ubo_start_date": "2020-01-01",
"ubo_document_expedition_date": "2015-01-01",
"ubo_has_control": true,
"ubo_is_signer": true,
"ubo_title_position": "CEO",
"ubo_birthdate": "1980-02-10",
"ubo_phone": "+54111223344",
"ubo_email": "email@example.com",
"ubo_zipcode": "1000",
"ubo_document_image": "Front document image of ultimate beneficial owner in Base64 (JPG/PNG)",
"ubo_back_document_image": "Back document image of ultimate beneficial owner in Base64 (JPG/PNG)"
}
],
"politically_exposed_person": {
"first_name": "Peter",
"last_name": "Alvarez",
"document_number": "45678901",
"job_title": "Public Official"
}
}
Files must be sent encoded in Base64 using the correct MIME type format (e.g., image/jpeg, application/pdf).
Politically Exposed Person (PEP)
The accept_pep field indicates whether the user declares to be a Politically Exposed Person (PEP).
-
If accept_pep = false, the politically_exposed_person object is not required.
-
If accept_pep = true, the politically_exposed_person object must be included with the corresponding information:
"politically_exposed_person": {
"first_name": "Pedro",
"last_name": "Alvarez",
"document_number": "45678901",
"job_title": "Public Official"
}
curl --request POST \
--url https://api.vitawallet.io/api/businesses/business_users \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--header 'x-date: <api-key>' \
--header 'x-login: <api-key>' \
--header 'x-trans-key: <api-key>' \
--data '""'import requests
url = "https://api.vitawallet.io/api/businesses/business_users"
headers = {
"x-login": "<api-key>",
"x-trans-key": "<api-key>",
"x-date": "<api-key>",
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'x-login': '<api-key>',
'x-trans-key': '<api-key>',
'x-date': '<api-key>',
Authorization: '<api-key>',
'Content-Type': 'application/json'
}
};
fetch('https://api.vitawallet.io/api/businesses/business_users', 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/business_users",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "\"\"",
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.vitawallet.io/api/businesses/business_users"
payload := strings.NewReader("\"\"")
req, _ := http.NewRequest("POST", url, payload)
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>")
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://api.vitawallet.io/api/businesses/business_users")
.header("x-login", "<api-key>")
.header("x-trans-key", "<api-key>")
.header("x-date", "<api-key>")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("\"\"")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.vitawallet.io/api/businesses/business_users")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-login"] = '<api-key>'
request["x-trans-key"] = '<api-key>'
request["x-date"] = '<api-key>'
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "\"\""
response = http.request(request)
puts response.read_body{
"email": "gonzalo+v1@vitawallet.io",
"first_name": "Juan",
"category": "business",
"document_type": "dni",
"document_number": 999990000,
"address": "Calle Falsa 123",
"zipcode": "",
"accept_pep": true,
"profile_verification": "initial",
"accept_real_info": false,
"accept_funds": false,
"business_external_id": "ext-v1",
"is_business_api": true,
"x_login": "46684a1c21ecb2ef08e8af4e1267cd674653947a",
"url_notify_kyc": "https://webhook.site/b0cad134-9494-46bb-b0c9-c37bc31e54ef",
"disable_email_notifications": true,
"x_trans_key": "KTtQM9AC8rCtpw7FRd3E61o5GoI=",
"secret": "8e3874d1868c597d331478bed5abb4faa0c95b243cea7c0bb8c05c7b5cd1970260411219561ca7dd4475f291618ff673b4a45df027365ad7608c859424df97ea559e4f54359633fbab1afe5d1548279e7a7fb3976dbb6a631ef21169730815eb4c7d568c4c5ef7bbf6092bb9cdece1138c59d1c10e095bd3216044594ce109d97b622f7a31414f3f52c5e5241e6d71ec7de59b8d3aa017c12d0ef5e8cc1456b4fc0aa22c0a4a8650a7624f58804a4280d61559e2e316dd05f938c7c8aa0bedc7b33a33f294ee76fa23b619d6d1d5a7db724117caca03250e5fd18c76456d502c5bdb33bb65a18fdd0c842e2f5bf5602c19f63ebf503d9d3b6796cf8adb0cf8017e2ac51bc4806eac3bf378223f81c69cca1c6a8df86a4f40c17e25a6c01f81754c222bb0b969cb34a75a0d62",
"country": "Argentina",
"state": "Mendoza",
"city": null,
"facial_image": {
"filename": "facial_image.jpeg",
"content_type": "image/jpeg"
},
"document_back": {
"filename": "back_document_image.jpeg",
"content_type": "image/jpeg"
},
"document_front": {
"filename": "document_image.jpeg",
"content_type": "image/jpeg"
},
"business": {
"operation_countries": "AR,CL",
"website_url": "https://empresa-ejemplo.com",
"uuid": "95956f81-56a4-43bd-8330-2665062dc5cc",
"trade_name": "Empresa Ejemplo SRL",
"is_financial_company": true,
"has_license": false,
"same_to_legal_location": false,
"physical_country": "Argentina",
"physical_state": "Mendoza",
"physical_city": "Las Heras",
"physical_zipcode": "",
"physical_address": "Calle Comercial 456",
"lr_first_name": "Carlos",
"lr_last_name": "Lopez",
"lr_phone_number": 541198765432,
"lr_document_number": 23456789,
"lr_document_issuing_country": "Argentina",
"lr_document_expedition_date": null,
"lr_secondary_document_number": 98765432,
"lr_civil_status": "single",
"lr_occupation": "",
"lr_gender": "male",
"expected_monthly_payments_usd": "usd_40000_to_500000",
"lr_document_type": "dni",
"lr_birthdate": "1975-08-20T00:00:00.000Z",
"business_interests": {
"use_interests": [
"Compra y venta cripto",
"Soluciones API"
],
"other_usability": "Otro interés"
},
"company_statute": {
"filename": "company_statute.pdf",
"content_type": "application/pdf"
},
"tax_identity_document": {
"filename": "tax_identity_document.jpeg",
"content_type": "image/jpeg"
},
"statement_of_funds_document": {
"filename": "statement_of_funds_document.pdf",
"content_type": "application/pdf"
},
"extra_document": {
"filename": "extra_document.jpeg",
"content_type": "image/jpeg"
},
"legal_representative_proof_document": {
"filename": "legal_representative_proof_document.pdf",
"content_type": "application/pdf"
}
},
"business_owners": [
{
"ubo_first_name": "Ana",
"ubo_last_name": "Gomez",
"ubo_residence_country": "Argentina",
"ubo_residence_state": "Mendoza",
"ubo_residence_city": "Las Heras",
"ubo_address": "Av. Siempre Viva 789",
"ubo_is_direct": true,
"ubo_ownership_percentage": 60,
"ubo_document_type": "dni",
"ubo_document_number": 34567890,
"ubo_country": "Argentina",
"ubo_start_date": "2020-01-01T00:00:00.000Z",
"ubo_document_expedition_date": "2015-01-01T00:00:00.000Z",
"ubo_has_control": false,
"ubo_is_signer": false,
"ubo_title_position": "CEO",
"ubo_birthdate": "1980-02-10T00:00:00.000Z",
"ubo_phone": 54111223344,
"ubo_email": "ana.gomez@example.com",
"ubo_zipcode": 1000,
"ubo_document_image": {
"filename": "ubo_document_image.jpeg",
"content_type": "image/jpeg"
},
"ubo_back_document_image": {
"filename": "ubo_back_document_image.jpeg",
"content_type": "image/jpeg"
}
}
],
"politically_exposed_person": {
"first_name": null,
"last_name": null,
"document_number": null,
"job_title": null
}
}Authorizations
Business xLogin
Business xTransKey
ISO8601 datetime
V2-HMAC-SHA256 signature. Example: V2-HMAC-SHA256, Signature: <hash>
Body
The body is of type object.
Response
Successful response.