Account Opening Request
curl --request POST \
--url https://api.sandbox.wepayout.com.br/v2/register/companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"legal_name": "<string>",
"trade_name": "<string>",
"tax_id": "<string>",
"contacts": {
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"tax_id": "<string>"
},
"address": {
"city": "<string>",
"state": "<string>",
"country": "<string>",
"zip_code": "<string>",
"street": "<string>",
"number": "<string>",
"complement": "<string>"
}
}
'import requests
url = "https://api.sandbox.wepayout.com.br/v2/register/companies"
payload = {
"legal_name": "<string>",
"trade_name": "<string>",
"tax_id": "<string>",
"contacts": {
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"tax_id": "<string>"
},
"address": {
"city": "<string>",
"state": "<string>",
"country": "<string>",
"zip_code": "<string>",
"street": "<string>",
"number": "<string>",
"complement": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
legal_name: '<string>',
trade_name: '<string>',
tax_id: '<string>',
contacts: {
name: '<string>',
email: '<string>',
phone: '<string>',
role: '<string>',
tax_id: '<string>'
},
address: {
city: '<string>',
state: '<string>',
country: '<string>',
zip_code: '<string>',
street: '<string>',
number: '<string>',
complement: '<string>'
}
})
};
fetch('https://api.sandbox.wepayout.com.br/v2/register/companies', 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.wepayout.com.br/v2/register/companies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'legal_name' => '<string>',
'trade_name' => '<string>',
'tax_id' => '<string>',
'contacts' => [
'name' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'role' => '<string>',
'tax_id' => '<string>'
],
'address' => [
'city' => '<string>',
'state' => '<string>',
'country' => '<string>',
'zip_code' => '<string>',
'street' => '<string>',
'number' => '<string>',
'complement' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sandbox.wepayout.com.br/v2/register/companies"
payload := strings.NewReader("{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.wepayout.com.br/v2/register/companies")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.wepayout.com.br/v2/register/companies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "339074a8-1834-49c5-af94-4a044248d88d",
"status": "pending"
}
{
"error": "Validation error"
}
Onboarding
Account Opening Request
API for creating onboarding requests for corporate account (legal entities). To successfully create a corporate account, you must provide at least one administrator and one legal representative.
POST
/
v2
/
register
/
companies
Account Opening Request
curl --request POST \
--url https://api.sandbox.wepayout.com.br/v2/register/companies \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"legal_name": "<string>",
"trade_name": "<string>",
"tax_id": "<string>",
"contacts": {
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"tax_id": "<string>"
},
"address": {
"city": "<string>",
"state": "<string>",
"country": "<string>",
"zip_code": "<string>",
"street": "<string>",
"number": "<string>",
"complement": "<string>"
}
}
'import requests
url = "https://api.sandbox.wepayout.com.br/v2/register/companies"
payload = {
"legal_name": "<string>",
"trade_name": "<string>",
"tax_id": "<string>",
"contacts": {
"name": "<string>",
"email": "<string>",
"phone": "<string>",
"role": "<string>",
"tax_id": "<string>"
},
"address": {
"city": "<string>",
"state": "<string>",
"country": "<string>",
"zip_code": "<string>",
"street": "<string>",
"number": "<string>",
"complement": "<string>"
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
legal_name: '<string>',
trade_name: '<string>',
tax_id: '<string>',
contacts: {
name: '<string>',
email: '<string>',
phone: '<string>',
role: '<string>',
tax_id: '<string>'
},
address: {
city: '<string>',
state: '<string>',
country: '<string>',
zip_code: '<string>',
street: '<string>',
number: '<string>',
complement: '<string>'
}
})
};
fetch('https://api.sandbox.wepayout.com.br/v2/register/companies', 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.wepayout.com.br/v2/register/companies",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'legal_name' => '<string>',
'trade_name' => '<string>',
'tax_id' => '<string>',
'contacts' => [
'name' => '<string>',
'email' => '<string>',
'phone' => '<string>',
'role' => '<string>',
'tax_id' => '<string>'
],
'address' => [
'city' => '<string>',
'state' => '<string>',
'country' => '<string>',
'zip_code' => '<string>',
'street' => '<string>',
'number' => '<string>',
'complement' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.sandbox.wepayout.com.br/v2/register/companies"
payload := strings.NewReader("{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.sandbox.wepayout.com.br/v2/register/companies")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sandbox.wepayout.com.br/v2/register/companies")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"legal_name\": \"<string>\",\n \"trade_name\": \"<string>\",\n \"tax_id\": \"<string>\",\n \"contacts\": {\n \"name\": \"<string>\",\n \"email\": \"<string>\",\n \"phone\": \"<string>\",\n \"role\": \"<string>\",\n \"tax_id\": \"<string>\"\n },\n \"address\": {\n \"city\": \"<string>\",\n \"state\": \"<string>\",\n \"country\": \"<string>\",\n \"zip_code\": \"<string>\",\n \"street\": \"<string>\",\n \"number\": \"<string>\",\n \"complement\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"id": "339074a8-1834-49c5-af94-4a044248d88d",
"status": "pending"
}
{
"error": "Validation error"
}
Allowed Roles
| Role | Required |
|---|---|
| administrator | ✓ |
| legal_representative | ✓ |
| financial | ✗ |
| commercial | ✗ |
Request Body
Official registered name of the company as it appears in legal documents.
- Min: 1 character
- Max: 100 characters
- Example:
Company X LTDA
Common or commercial name used by the company in business operations.
- Min: 1 character
- Max: 100 characters
- Example:
Company X
Company’s tax identification number (CNPJ for Brazilian companies), without formatting.
- If country = BR: max 14 characters (valid CNPJ)
- If country ≠ BR: max 50 characters
- Example:
12345678000199
List of individuals associated with the company, such as administrators, legal representatives, or other relevant roles.
Show Contact Object
Show Contact Object
Full name of the contact person.
- Min: 1 character
- Max: 120 characters
- Example:
João Silva
Contact’s professional email address.
- Max: 100 characters
- Example:
joao.silva@companyx.com
Contact’s phone number, including country and area code.
- Max: 15 characters
- Example:
5511999999999
Role of the contact person within the company. Must be one of the allowed roles.
- Allowed values:
administrator,legal_representative,financial,commercial - Example:
administrator
Personal tax identification number of the contact (CPF for Brazil), without formatting.
- If country = BR: max 11 characters (valid CPF)
- If country ≠ BR: max 30 characters
- Example:
12345678909
Company’s main business address.
Show Address Object
Show Address Object
City where the company is located.
- Max: 40 characters
- Example:
São Paulo
State or province where the company is located (ISO code preferred).
- Max: 4 characters
- Example:
SP
Country code where the company is registered (ISO 3166-1 alpha-2 format).
- Max: 4 characters
- Example:
BR
Postal code of the company address, without formatting.
- Max: 12 characters
- Example:
01001000
Street name of the company address.
- Max: 80 characters
- Example:
Av. Paulista
Street number of the company address.
- Max: 10 characters
- Example:
1000
Additional address details, such as suite, floor, or unit.
- Max: 80 characters
- Example:
Conjunto 12
Response
Unique identifier of the corporate subaccount opening request.
- Format: UUID
- Example:
339074a8-1834-49c5-af94-4a044248d88d
Current status of the onboarding request.
- Default:
pending
{
"id": "339074a8-1834-49c5-af94-4a044248d88d",
"status": "pending"
}
{
"error": "Validation error"
}
Related Resources
Setup Webhook
Configure webhook notifications for onboarding events
Update Webhook
Update existing webhook configuration
Was this page helpful?
⌘I

