Criar subconta
curl --request POST \
--url https://api.uvvipay.com.br/v1/submerchants \
--header 'client-id: <api-key>' \
--header 'client-secret: <api-key>'import requests
url = "https://api.uvvipay.com.br/v1/submerchants"
headers = {
"client-secret": "<api-key>",
"client-id": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'client-secret': '<api-key>', 'client-id': '<api-key>'}
};
fetch('https://api.uvvipay.com.br/v1/submerchants', 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/v1/submerchants",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"client-id: <api-key>",
"client-secret: <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.uvvipay.com.br/v1/submerchants"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("client-secret", "<api-key>")
req.Header.Add("client-id", "<api-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/v1/submerchants")
.header("client-secret", "<api-key>")
.header("client-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uvvipay.com.br/v1/submerchants")
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>'
response = http.request(request)
puts response.read_body{
"message": "Este endpoint não cria mais subcontas. Utilize POST /v2/submerchants/onboarding/pf para Pessoa Física ou POST /v2/submerchants/onboarding/pj para Pessoa Jurídica."
}Cadastro e onboarding
Criar subconta
deprecated
Este endpoint está depreciado. A chamada autenticada retorna 200 e não cria subconta. Para Pessoa Física, use POST /v2/submerchants/onboarding/pf. Para Pessoa Jurídica, use POST /v2/submerchants/onboarding/pj.
POST
/
v1
/
submerchants
Criar subconta
curl --request POST \
--url https://api.uvvipay.com.br/v1/submerchants \
--header 'client-id: <api-key>' \
--header 'client-secret: <api-key>'import requests
url = "https://api.uvvipay.com.br/v1/submerchants"
headers = {
"client-secret": "<api-key>",
"client-id": "<api-key>"
}
response = requests.post(url, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'client-secret': '<api-key>', 'client-id': '<api-key>'}
};
fetch('https://api.uvvipay.com.br/v1/submerchants', 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/v1/submerchants",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"client-id: <api-key>",
"client-secret: <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.uvvipay.com.br/v1/submerchants"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("client-secret", "<api-key>")
req.Header.Add("client-id", "<api-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/v1/submerchants")
.header("client-secret", "<api-key>")
.header("client-id", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.uvvipay.com.br/v1/submerchants")
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>'
response = http.request(request)
puts response.read_body{
"message": "Este endpoint não cria mais subcontas. Utilize POST /v2/submerchants/onboarding/pf para Pessoa Física ou POST /v2/submerchants/onboarding/pj para Pessoa Jurídica."
}POST /v1/submerchants está depreciado. O endpoint retorna 200 e não cria
subconta. Para criar subconta, use Onboarding
PF ou Onboarding
PJ.{
"message": "Este endpoint não cria mais subcontas. Utilize POST /v2/submerchants/onboarding/pf para Pessoa Física ou POST /v2/submerchants/onboarding/pj para Pessoa Jurídica."
}
Formato do envio
A requisição deve sermultipart/form-data: os campos de texto vão como form
fields e cada documento vai como file part (arquivo binário, PDF ou
imagem).
No contrato antigo, string base64 no campo de arquivo retornava erro 400.
Documentos obrigatórios
Os arquivos exigidos dependem dodocumentType da subconta:
| Campo | CNPJ | CPF |
|---|---|---|
cartaoCnpj | Obrigatório | Não se aplica |
contratoSocial | Obrigatório | Não se aplica |
selfieComDocumento | Obrigatório | Obrigatório |
documentoFrente | Obrigatório¹ | Obrigatório¹ |
documentoVerso | Obrigatório¹ | Obrigatório¹ |
cnhCompleta | Opcional; substitui frente/verso | Opcional; substitui frente/verso |
cnhCompleta (frente e verso em um único arquivo) é
enviada. Para documentType: cnpj, os documentos de identidade são do
representante legal.
NOTA: O endpoint não valida esses campos. A chamada autenticada retorna 200.
Exemplo
curl -X POST https://api.uvvipay.com.br/v1/submerchants \
-H "CLIENT-ID: seu-client-id" \
-H "CLIENT-SECRET: seu-client-secret" \
-H "x-idempotency-key: 4f7b2c1e-0000-0000-0000-000000000000" \
-F "documentType=cnpj" \
-F "documentNumber=12345678000190" \
-F "email=parceiro@exemplo.com.br" \
-F "phone=11999999999" \
-F "addressStreetNumber=100" \
-F 'bankAccount={"bankingDataType":"bank_account","bankName":"Nubank","bankCode":"260","bankAgency":"0001","bankAccount":"1234567","bankAccountDv":"8","bankAccountType":"conta_corrente"}' \
-F "cartaoCnpj=@cartao-cnpj.pdf" \
-F "contratoSocial=@contrato-social.pdf" \
-F "selfieComDocumento=@selfie.jpg" \
-F "cnhCompleta=@cnh.jpg" # dispensa documentoFrente e documentoVerso
FormData com Blob/stream do arquivo; nunca
JSON.stringify com o conteúdo em base64.Headers
Secret da credencial do merchant
ID público da credencial do merchant
Response
Endpoint depreciado. O endpoint não cria subconta.
Example:
"Este endpoint não cria mais subcontas. Utilize POST /v2/submerchants/onboarding/pf para Pessoa Física ou POST /v2/submerchants/onboarding/pj para Pessoa Jurídica."

