curl --request POST \
--url https://api.uvvipay.com.br/v2/submerchants/onboarding/pf \
--header 'Content-Type: multipart/form-data' \
--header 'client-id: <api-key>' \
--header 'client-secret: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--form document=12345678901 \
--form 'fullName=João da Silva' \
--form birthDate=1990-01-15 \
--form 'phone=+5511999999999' \
--form addressZipCode=01310100 \
--form 'addressStreet=Avenida Paulista' \
--form addressNumber=1000 \
--form 'addressNeighborhood=Bela Vista' \
--form 'addressCity=São Paulo' \
--form addressState=SP \
--form 'bankAccount={
"bankAccountType": "conta_corrente",
"bankName": "Banco do Brasil",
"bankCode": "001",
"bankAgency": "1234",
"bankAccount": "56789",
"bankAccountDv": "0",
"ispb": "00000000"
}' \
--form 'documentoFrente=<string>' \
--form 'documentoVerso=<string>' \
--form 'selfie=<string>' \
--form email=joao@exemplo.com \
--form 'addressComplement=Apto 101' \
--form 'cnhCompleta=<string>' \
--form 0.documentoFrente='@example-file' \
--form 0.documentoVerso='@example-file' \
--form 0.selfie='@example-file' \
--form 0.cnhCompleta='@example-file' \
--form 1.cnhCompleta='@example-file' \
--form 1.selfie='@example-file' \
--form 1.documentoFrente='@example-file' \
--form 1.documentoVerso='@example-file'import requests
url = "https://api.uvvipay.com.br/v2/submerchants/onboarding/pf"
files = {
"0.documentoFrente": ("example-file", open("example-file", "rb")),
"0.documentoVerso": ("example-file", open("example-file", "rb")),
"0.selfie": ("example-file", open("example-file", "rb")),
"0.cnhCompleta": ("example-file", open("example-file", "rb")),
"1.cnhCompleta": ("example-file", open("example-file", "rb")),
"1.selfie": ("example-file", open("example-file", "rb")),
"1.documentoFrente": ("example-file", open("example-file", "rb")),
"1.documentoVerso": ("example-file", open("example-file", "rb"))
}
payload = {
"document": "12345678901",
"fullName": "João da Silva",
"birthDate": "1990-01-15",
"phone": "+5511999999999",
"addressZipCode": "01310100",
"addressStreet": "Avenida Paulista",
"addressNumber": "1000",
"addressNeighborhood": "Bela Vista",
"addressCity": "São Paulo",
"addressState": "SP",
"bankAccount": "{
\"bankAccountType\": \"conta_corrente\",
\"bankName\": \"Banco do Brasil\",
\"bankCode\": \"001\",
\"bankAgency\": \"1234\",
\"bankAccount\": \"56789\",
\"bankAccountDv\": \"0\",
\"ispb\": \"00000000\"
}",
"documentoFrente": "<string>",
"documentoVerso": "<string>",
"selfie": "<string>",
"email": "joao@exemplo.com",
"addressComplement": "Apto 101",
"cnhCompleta": "<string>"
}
headers = {
"client-secret": "<api-key>",
"client-id": "<api-key>",
"x-idempotency-key": "<x-idempotency-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('document', '12345678901');
form.append('fullName', 'João da Silva');
form.append('birthDate', '1990-01-15');
form.append('phone', '+5511999999999');
form.append('addressZipCode', '01310100');
form.append('addressStreet', 'Avenida Paulista');
form.append('addressNumber', '1000');
form.append('addressNeighborhood', 'Bela Vista');
form.append('addressCity', 'São Paulo');
form.append('addressState', 'SP');
form.append('bankAccount', '{
"bankAccountType": "conta_corrente",
"bankName": "Banco do Brasil",
"bankCode": "001",
"bankAgency": "1234",
"bankAccount": "56789",
"bankAccountDv": "0",
"ispb": "00000000"
}');
form.append('documentoFrente', '<string>');
form.append('documentoVerso', '<string>');
form.append('selfie', '<string>');
form.append('email', 'joao@exemplo.com');
form.append('addressComplement', 'Apto 101');
form.append('cnhCompleta', '<string>');
form.append('0.documentoFrente', '{
"fileName": "example-file"
}');
form.append('0.documentoVerso', '{
"fileName": "example-file"
}');
form.append('0.selfie', '{
"fileName": "example-file"
}');
form.append('0.cnhCompleta', '{
"fileName": "example-file"
}');
form.append('1.cnhCompleta', '{
"fileName": "example-file"
}');
form.append('1.selfie', '{
"fileName": "example-file"
}');
form.append('1.documentoFrente', '{
"fileName": "example-file"
}');
form.append('1.documentoVerso', '{
"fileName": "example-file"
}');
const options = {
method: 'POST',
headers: {
'client-secret': '<api-key>',
'client-id': '<api-key>',
'x-idempotency-key': '<x-idempotency-key>'
}
};
options.body = form;
fetch('https://api.uvvipay.com.br/v2/submerchants/onboarding/pf', 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.uvvipay.com.br/v2/submerchants/onboarding/pf",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"client-id: <api-key>",
"client-secret: <api-key>",
"x-idempotency-key: <x-idempotency-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.uvvipay.com.br/v2/submerchants/onboarding/pf"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("client-secret", "<api-key>")
req.Header.Add("client-id", "<api-key>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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.uvvipay.com.br/v2/submerchants/onboarding/pf")
.header("client-secret", "<api-key>")
.header("client-id", "<api-key>")
.header("x-idempotency-key", "<x-idempotency-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uvvipay.com.br/v2/submerchants/onboarding/pf")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["client-secret"] = '<api-key>'
request["client-id"] = '<api-key>'
request["x-idempotency-key"] = '<x-idempotency-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"registration_id": "2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f",
"status": "submitted"
}Onboarding PF
Inicia o onboarding assíncrono de subconta pessoa física via multipart/form-data. Retorna 202 com registration_id e status.
curl --request POST \
--url https://api.uvvipay.com.br/v2/submerchants/onboarding/pf \
--header 'Content-Type: multipart/form-data' \
--header 'client-id: <api-key>' \
--header 'client-secret: <api-key>' \
--header 'x-idempotency-key: <x-idempotency-key>' \
--form document=12345678901 \
--form 'fullName=João da Silva' \
--form birthDate=1990-01-15 \
--form 'phone=+5511999999999' \
--form addressZipCode=01310100 \
--form 'addressStreet=Avenida Paulista' \
--form addressNumber=1000 \
--form 'addressNeighborhood=Bela Vista' \
--form 'addressCity=São Paulo' \
--form addressState=SP \
--form 'bankAccount={
"bankAccountType": "conta_corrente",
"bankName": "Banco do Brasil",
"bankCode": "001",
"bankAgency": "1234",
"bankAccount": "56789",
"bankAccountDv": "0",
"ispb": "00000000"
}' \
--form 'documentoFrente=<string>' \
--form 'documentoVerso=<string>' \
--form 'selfie=<string>' \
--form email=joao@exemplo.com \
--form 'addressComplement=Apto 101' \
--form 'cnhCompleta=<string>' \
--form 0.documentoFrente='@example-file' \
--form 0.documentoVerso='@example-file' \
--form 0.selfie='@example-file' \
--form 0.cnhCompleta='@example-file' \
--form 1.cnhCompleta='@example-file' \
--form 1.selfie='@example-file' \
--form 1.documentoFrente='@example-file' \
--form 1.documentoVerso='@example-file'import requests
url = "https://api.uvvipay.com.br/v2/submerchants/onboarding/pf"
files = {
"0.documentoFrente": ("example-file", open("example-file", "rb")),
"0.documentoVerso": ("example-file", open("example-file", "rb")),
"0.selfie": ("example-file", open("example-file", "rb")),
"0.cnhCompleta": ("example-file", open("example-file", "rb")),
"1.cnhCompleta": ("example-file", open("example-file", "rb")),
"1.selfie": ("example-file", open("example-file", "rb")),
"1.documentoFrente": ("example-file", open("example-file", "rb")),
"1.documentoVerso": ("example-file", open("example-file", "rb"))
}
payload = {
"document": "12345678901",
"fullName": "João da Silva",
"birthDate": "1990-01-15",
"phone": "+5511999999999",
"addressZipCode": "01310100",
"addressStreet": "Avenida Paulista",
"addressNumber": "1000",
"addressNeighborhood": "Bela Vista",
"addressCity": "São Paulo",
"addressState": "SP",
"bankAccount": "{
\"bankAccountType\": \"conta_corrente\",
\"bankName\": \"Banco do Brasil\",
\"bankCode\": \"001\",
\"bankAgency\": \"1234\",
\"bankAccount\": \"56789\",
\"bankAccountDv\": \"0\",
\"ispb\": \"00000000\"
}",
"documentoFrente": "<string>",
"documentoVerso": "<string>",
"selfie": "<string>",
"email": "joao@exemplo.com",
"addressComplement": "Apto 101",
"cnhCompleta": "<string>"
}
headers = {
"client-secret": "<api-key>",
"client-id": "<api-key>",
"x-idempotency-key": "<x-idempotency-key>"
}
response = requests.post(url, data=payload, files=files, headers=headers)
print(response.text)const form = new FormData();
form.append('document', '12345678901');
form.append('fullName', 'João da Silva');
form.append('birthDate', '1990-01-15');
form.append('phone', '+5511999999999');
form.append('addressZipCode', '01310100');
form.append('addressStreet', 'Avenida Paulista');
form.append('addressNumber', '1000');
form.append('addressNeighborhood', 'Bela Vista');
form.append('addressCity', 'São Paulo');
form.append('addressState', 'SP');
form.append('bankAccount', '{
"bankAccountType": "conta_corrente",
"bankName": "Banco do Brasil",
"bankCode": "001",
"bankAgency": "1234",
"bankAccount": "56789",
"bankAccountDv": "0",
"ispb": "00000000"
}');
form.append('documentoFrente', '<string>');
form.append('documentoVerso', '<string>');
form.append('selfie', '<string>');
form.append('email', 'joao@exemplo.com');
form.append('addressComplement', 'Apto 101');
form.append('cnhCompleta', '<string>');
form.append('0.documentoFrente', '{
"fileName": "example-file"
}');
form.append('0.documentoVerso', '{
"fileName": "example-file"
}');
form.append('0.selfie', '{
"fileName": "example-file"
}');
form.append('0.cnhCompleta', '{
"fileName": "example-file"
}');
form.append('1.cnhCompleta', '{
"fileName": "example-file"
}');
form.append('1.selfie', '{
"fileName": "example-file"
}');
form.append('1.documentoFrente', '{
"fileName": "example-file"
}');
form.append('1.documentoVerso', '{
"fileName": "example-file"
}');
const options = {
method: 'POST',
headers: {
'client-secret': '<api-key>',
'client-id': '<api-key>',
'x-idempotency-key': '<x-idempotency-key>'
}
};
options.body = form;
fetch('https://api.uvvipay.com.br/v2/submerchants/onboarding/pf', 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.uvvipay.com.br/v2/submerchants/onboarding/pf",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--",
CURLOPT_HTTPHEADER => [
"Content-Type: multipart/form-data",
"client-id: <api-key>",
"client-secret: <api-key>",
"x-idempotency-key: <x-idempotency-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.uvvipay.com.br/v2/submerchants/onboarding/pf"
payload := strings.NewReader("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("client-secret", "<api-key>")
req.Header.Add("client-id", "<api-key>")
req.Header.Add("x-idempotency-key", "<x-idempotency-key>")
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.uvvipay.com.br/v2/submerchants/onboarding/pf")
.header("client-secret", "<api-key>")
.header("client-id", "<api-key>")
.header("x-idempotency-key", "<x-idempotency-key>")
.body("-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uvvipay.com.br/v2/submerchants/onboarding/pf")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["client-secret"] = '<api-key>'
request["client-id"] = '<api-key>'
request["x-idempotency-key"] = '<x-idempotency-key>'
request.body = "-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"document\"\r\n\r\n12345678901\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"fullName\"\r\n\r\nJoão da Silva\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"birthDate\"\r\n\r\n1990-01-15\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"phone\"\r\n\r\n+5511999999999\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressZipCode\"\r\n\r\n01310100\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressStreet\"\r\n\r\nAvenida Paulista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNumber\"\r\n\r\n1000\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressNeighborhood\"\r\n\r\nBela Vista\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressCity\"\r\n\r\nSão Paulo\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressState\"\r\n\r\nSP\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"bankAccount\"\r\n\r\n{\r\n \"bankAccountType\": \"conta_corrente\",\r\n \"bankName\": \"Banco do Brasil\",\r\n \"bankCode\": \"001\",\r\n \"bankAgency\": \"1234\",\r\n \"bankAccount\": \"56789\",\r\n \"bankAccountDv\": \"0\",\r\n \"ispb\": \"00000000\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoFrente\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"documentoVerso\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"selfie\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"email\"\r\n\r\njoao@exemplo.com\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"addressComplement\"\r\n\r\nApto 101\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"cnhCompleta\"\r\n\r\n<string>\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"0.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.cnhCompleta\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.selfie\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoFrente\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001\r\nContent-Disposition: form-data; name=\"1.documentoVerso\"; filename=\"example-file\"\r\nContent-Type: application/octet-stream\r\n\r\n{\r\n \"fileName\": \"example-file\"\r\n}\r\n-----011000010111000001101001--"
response = http.request(request)
puts response.read_body{
"registration_id": "2f1c8b9a-4d3e-4f6a-9b1c-0a1b2c3d4e5f",
"status": "submitted"
}POST /v2/submerchants/onboarding/pf
Inicia o onboarding de uma subconta PF. A requisição é multipart/form-data
e retorna 202 Accepted com o registration_id e o status inicial.
202 com
registration_id. Exige headers client-id + client-secret e
x-idempotency-key (UUID v4).Arquivos (multipart)
Envie uma das opções de documento de identidade, mais a selfie:| Campo | Obrigatório | Descrição |
|---|---|---|
documentoFrente | Condicional | Frente do RG/CIN |
documentoVerso | Condicional | Verso do RG/CIN |
cnhCompleta | Condicional | CNH completa (alternativa a frente+verso) |
selfie | Sim | Selfie do titular (rosto) |
- Envie
documentoFrenteedocumentoVerso, oucnhCompleta. - O campo da selfie é
selfie(não use maisselfieComDocumento).
documentoFrente e documentoVerso, ou envie cnhCompleta. O campo
da selfie é selfie. Não use selfieComDocumento. Depois do 202, consulte
o status com o registration_id. Veja o guia Subcontas.Headers
Secret da credencial do merchant
ID público da credencial do merchant
UUID v4 gerado pelo cliente. Usado como externalId da subconta.
Body
- Option 1
- Option 2
CPF do titular (11 dígitos)
"12345678901"
Nome completo do titular
255"João da Silva"
Data de nascimento (YYYY-MM-DD)
"1990-01-15"
Telefone no formato E.164
"+5511999999999"
CEP
10"01310100"
Logradouro
255"Avenida Paulista"
Número do endereço
20"1000"
Bairro
100"Bela Vista"
Cidade
100"São Paulo"
UF (2 caracteres)
2"SP"
Dados bancários. Em multipart, envie como JSON string.
Show child attributes
Show child attributes
Frente do RG/CIN. Obrigatório com documentoVerso, se não enviar cnhCompleta.
Verso do RG/CIN. Obrigatório com documentoFrente, se não enviar cnhCompleta.
Selfie do titular (rosto). Não use selfieComDocumento.
Email de contato (opcional)
255"joao@exemplo.com"
Complemento do endereço
255"Apto 101"
CNH completa. Alternativa a documentoFrente + documentoVerso.

