Skip to content

Criar Sub-conta

Cria uma nova sub-conta vinculada à conta principal.

POST /api/customer

Endpoint

POST https://api.divipay.com.br/api/customer

Headers

HeaderValorObrigatório
AuthorizationBearerSim
Content-Typeapplication/jsonSim

Body Parameters

CampoTipoDescriçãoObrigatório
namestringNome ou razão socialSim
documentstringCPF ou CNPJ (somente números)Sim
emailstringEmail (usado para login)Sim
phonestringTelefone com DDDSim
initDatestringData de nascimento ou abertura (AAAA-MM-DD)Sim
webhookUrlstringURL para webhooksNão
addressobjectEndereço completoSim
responsableobjectResponsável (obrigatório para CNPJ)Condicional
accountPixobjectConta Pix para split automáticoNão

Objeto Address

CampoTipoDescriçãoObrigatório
streetstringLogradouroSim
streetNumberstringNúmeroSim
complementstringComplementoSim
neighborhoodstringBairroSim
cepstringCEP (somente números)Sim

Objeto Responsable (CNPJ)

CampoTipoDescriçãoObrigatório
namestringNome do responsávelSim
documentstringCPF do responsávelSim
phonestringTelefoneSim
birthDatestringData de nascimentoSim
emailstringEmailSim
addressobjectEndereço do responsávelSim

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(', '));
  }
}

Próximos Passos

Documentação da API DiviPay