Criar Sub-conta
Cria uma nova sub-conta vinculada à conta principal.
POST /api/customer
Endpoint
POST https://api.divipay.com.br/api/customerHeaders
| Header | Valor | Obrigatório |
|---|---|---|
| Authorization | Bearer | Sim |
| Content-Type | application/json | Sim |
Body Parameters
| Campo | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| name | string | Nome ou razão social | Sim |
| document | string | CPF ou CNPJ (somente números) | Sim |
| string | Email (usado para login) | Sim | |
| phone | string | Telefone com DDD | Sim |
| initDate | string | Data de nascimento ou abertura (AAAA-MM-DD) | Sim |
| webhookUrl | string | URL para webhooks | Não |
| address | object | Endereço completo | Sim |
| responsable | object | Responsável (obrigatório para CNPJ) | Condicional |
| accountPix | object | Conta Pix para split automático | Não |
Objeto Address
| Campo | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| street | string | Logradouro | Sim |
| streetNumber | string | Número | Sim |
| complement | string | Complemento | Sim |
| neighborhood | string | Bairro | Sim |
| cep | string | CEP (somente números) | Sim |
Objeto Responsable (CNPJ)
| Campo | Tipo | Descrição | Obrigatório |
|---|---|---|---|
| name | string | Nome do responsável | Sim |
| document | string | CPF do responsável | Sim |
| phone | string | Telefone | Sim |
| birthDate | string | Data de nascimento | Sim |
| string | Sim | ||
| address | object | Endereço do responsável | Sim |
Exemplo - Pessoa Física
bash
curl -X POST https://api.divipay.com.br/api/customer \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "João Silva",
"document": "12345678901",
"email": "joao@email.com",
"phone": "11999999999",
"initDate": "1990-01-15",
"webhookUrl": "https://vendedor.com/webhook",
"address": {
"street": "Rua das Flores",
"streetNumber": "123",
"complement": "Apto 45",
"neighborhood": "Centro",
"cep": "01234567"
}
}'javascript
const response = await fetch('https://api.divipay.com.br/api/customer', {
method: 'POST',
headers: {
'Authorization': 'Bearer SEU_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
name: 'João Silva',
document: '12345678901',
email: 'joao@email.com',
phone: '11999999999',
initDate: '1990-01-15',
webhookUrl: 'https://vendedor.com/webhook',
address: {
street: 'Rua das Flores',
streetNumber: '123',
complement: 'Apto 45',
neighborhood: 'Centro',
cep: '01234567'
}
})
});
const customer = await response.json();Exemplo - Pessoa Jurídica
javascript
{
"name": "Empresa LTDA",
"document": "12345678000190",
"email": "contato@empresa.com",
"phone": "11999999999",
"initDate": "2020-01-15",
"webhookUrl": "https://empresa.com/webhook",
"address": {
"street": "Av. Paulista",
"streetNumber": "1000",
"complement": "Sala 10",
"neighborhood": "Bela Vista",
"cep": "01310100"
},
"responsable": {
"name": "Maria Santos",
"document": "98765432100",
"phone": "11988888888",
"birthDate": "1985-05-20",
"email": "maria@empresa.com",
"address": {
"street": "Rua das Acácias",
"streetNumber": "456",
"complement": "Casa",
"neighborhood": "Jardim",
"cep": "04567890"
}
}
}Resposta de Sucesso
Status: 201 Created
json
{
"id": "sub_abc123xyz789",
"success": true
}Exemplo Completo
javascript
async function createSubAccount(data) {
try {
const response = await fetch(
'https://api.divipay.com.br/api/customer',
{
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify(data)
}
);
if (!response.ok) {
const error = await response.json();
throw new Error(error.message);
}
const customer = await response.json();
console.log('✅ Sub-conta criada:', customer.id);
return customer;
} catch (error) {
console.error('❌ Erro ao criar sub-conta:', error);
throw error;
}
}
// Uso
const customer = await createSubAccount({
name: 'João Silva',
document: '12345678901',
email: 'joao@email.com',
phone: '11999999999',
initDate: '1990-01-15',
address: {
street: 'Rua das Flores',
streetNumber: '123',
complement: 'Apto 45',
neighborhood: 'Centro',
cep: '01234567'
}
});Validação de Dados
javascript
function validateCustomerData(data) {
const errors = [];
// Validar CPF/CNPJ
if (!isValidDocument(data.document)) {
errors.push('CPF/CNPJ inválido');
}
// Validar email
if (!isValidEmail(data.email)) {
errors.push('Email inválido');
}
// Validar telefone
if (!/^\d{10,11}$/.test(data.phone)) {
errors.push('Telefone inválido');
}
// Validar CEP
if (!/^\d{8}$/.test(data.address.cep)) {
errors.push('CEP inválido');
}
// Validar data
if (!isValidDate(data.initDate)) {
errors.push('Data inválida');
}
// Se CNPJ, validar responsável
if (data.document.length === 14 && !data.responsable) {
errors.push('Responsável obrigatório para CNPJ');
}
if (errors.length > 0) {
throw new Error(errors.join(', '));
}
}