Clientes em Lote

A entidade Clientes em Lote permite alterar e excluir múltiplos Clientes 🔗 de uma só vez no Mercos.

Este endpoint é uma forma de otimizar o tempo de resposta da API e as operações de sincronização da ferramenta integrada, pois permite que uma única requisição atualize ou exclua vários clientes. Alterações e exclusões podem ser misturadas no mesmo lote.


⚠️

Importante:

  • A quantidade máxima de registros enviados por requisição é 300.
  • Este endpoint não cria clientes. Para cadastrar um novo cliente utilize o endpoint Incluir um cliente 🔗.
  • O campo id é obrigatório em todos os itens do lote, e o mesmo cliente não pode aparecer em dois itens da mesma requisição.
  • Caso aconteça algum erro, todos os envios serão cancelados e nenhum cliente será alterado ou excluído.

Parâmetros de Envio - Alterar (POST)

Esse endpoint requer um JSON com Lista de objetos no Body, em que cada objeto representa um cliente. Somente os campos enviados são alterados: os campos ausentes permanecem com o valor atual do cliente.

CampoTipoDescrição
id (obrigatório)IntegerID do cliente que será alterado. Este deve ser o ID cadastrado no Mercos, e não o ID do seu Sistema.
razao_socialString: 100Razão social para pessoa jurídica. Nome do cliente para pessoa física. Não pode ser enviado vazio.
nome_fantasiaString: 100Nome fantasia (pessoa jurídica) / Apelido (pessoa física).
tipoString: 1J para pessoa jurídica, F para pessoa física.
cnpjString: 18CNPJ para pessoa jurídica, CPF para pessoa física. Aceita CNPJ no formato numérico (14 dígitos) ou alfanumérico (14 caracteres com letras A-Z permitidas nos 12 primeiros). Apenas números, sem pontuação. Enviar vazio remove o documento do cliente.
inscricao_estadualString: 30Identificação da inscrição estadual do cliente.
suframaString: 20Código Suframa para clientes da Zona Franca de Manaus. Caso seja informado, todos os pedidos deste cliente terão IPI zerado (isento).
ruaString: 100Rua do endereço do cliente.
numeroString: 100Número do endereço do cliente.
complementoString: 50Informações adicionais do endereço do cliente.
cepString: 9Pode ser informado com ou sem hífen.
bairroString: 30Bairro do cliente.
cidadeString: 50Cidade do cliente.
estadoString: 2Sigla do Estado.
observacaoStringUtilize para guardar quaisquer informações que não tenham campos específicos.
emailsListLista de e-mails do cliente. Cada item é um objeto com o campo email (String: 75).
telefonesListLista de telefones do cliente. Cada item é um objeto com o campo numero (String: 30).
contatosListLista de contatos do cliente. Cada item aceita id (Integer), nome (String: 50), cargo (String: 30), excluido (Boolean), emails (List) e telefones (List).
nome_excecao_fiscalString: 20Exceção fiscal que identifica o(s) cliente(s) sujeito(s) a esta configuração de ICMS-ST. Ex: “SIMPLES”. A exceção é criada automaticamente quando o nome informado ainda não existe, e o vínculo é removido quando o campo é enviado vazio.
segmento_idIntegerIdentificador do segmento do cliente para diferenciação em relatórios e políticas comerciais. Ex: 123.
rede_idIntegerIdentificador da rede do cliente para diferenciação em relatórios. Ex: 456.
bloqueado_b2bBooleanIndica se o cliente possui bloqueio de acesso ao E-commerce B2B.
bloqueadoBooleanIndica se o cliente está bloqueado. (Ao desbloquear um cliente, motivo_bloqueio_id será alterado para null)
motivo_bloqueio_idIntegerIdentificador único do motivo de bloqueio do cliente. (Obrigatório bloqueado=true ao passar um ID neste campo)
enderecos_adicionaisListLista de endereços adicionais do cliente. Cada item aceita id (Integer), cep (String: 9, com ou sem hífen), endereco (String: 200), numero (String: 100), complemento (String: 200), bairro (String: 200), cidade (String: 200) e estado (String: 2).
limite_credito_disponivelFloatValor do limite de crédito disponível para o cliente. É obrigatório o envio de ambos os campos de limite de crédito.
limite_credito_totalFloatValor do limite de crédito total do cliente. É obrigatório o envio de ambos os campos de limite de crédito.
extrasListLista de campos extras do cliente. Cada item aceita campo_id (Integer) e valor, cujo tipo depende do tipo do campo extra.

O comportamento das listas (emails, telefones, contatos e enderecos_adicionais) e dos campos extras é o mesmo do endpoint individual, descrito na entidade Clientes 🔗.


Parâmetros de Envio - Excluir (POST)

Para excluir um cliente, envie o id com o campo excluido igual a true.

CampoTipoDescrição
id (obrigatório)IntegerID do cliente que será excluído. Este deve ser o ID cadastrado no Mercos, e não o ID do seu Sistema.
excluido (obrigatório)BooleanInforme true para excluir o cliente.
⚠️

Atenção as regras:

  • Nos itens com excluido igual a true, os demais campos enviados são ignorados.
  • Não é possível alterar um cliente que já está excluído, nem restaurá-lo enviando excluido igual a false.

Exemplo de envio misturando alteração e exclusão:

[
  {
    "id": 1234,
    "razao_social": "Mercearia Boa Vista LTDA",
    "emails": [
      {
        "email": "[email protected]"
      }
    ]
  },
  {
    "id": 1235,
    "bloqueado": true,
    "motivo_bloqueio_id": 42
  },
  {
    "id": 1236,
    "excluido": true
  }
]

Estrutura da Resposta (POST)

Sucesso

Caso a requisição seja um sucesso, a resposta terá status 200 e retornará no body a lista dos clientes processados, na mesma ordem em que foram enviados, com os seguintes campos:

CampoTipoDescrição
idIntegerIdentificador único.
razao_socialString: 100Razão social para pessoa jurídica. Nome para pessoa física.
nome_fantasiaString: 100Nome fantasia (pessoa jurídica) / Apelido (pessoa física).
tipoString: 1J para pessoa jurídica, F para pessoa física.
cnpjString: 18CNPJ para pessoa jurídica, CPF para pessoa física.
inscricao_estadualString: 30Identificação da inscrição estadual do cliente.
suframaString: 20Código Suframa do cliente.
ruaString: 100Rua do endereço do cliente.
numeroString: 100Número do endereço do cliente.
complementoString: 50Informações adicionais do endereço do cliente.
cepString: 9CEP do cliente.
bairroString: 30Bairro do cliente.
cidadeString: 50Cidade do cliente.
estadoString: 2Sigla do Estado.
observacaoStringObservação do cliente.
bloqueado_b2bBooleanIndica se o cliente possui bloqueio de acesso ao E-commerce B2B.
bloqueadoBooleanIndica se o cliente está bloqueado.
segmento_idIntegerIdentificador do segmento do cliente.
rede_idIntegerIdentificador da rede do cliente.
excecao_fiscal_idIntegerIdentificador da exceção fiscal vinculada ao cliente.
motivo_bloqueio_idIntegerIdentificador único do motivo de bloqueio do cliente.
excluidoBooleanIndica se o cliente está excluído.
ultima_alteracaoDateTimeData e hora da última modificação deste cliente no Mercos.
Erro

Caso a requisição encontre um ou mais erros, a resposta terá status 422 e informará o índice do item no lote, o campo e o tipo de erro:

{
  "mensagem": "Ocorreram erros de validação",
  "erros": [
    ["clientes[0].id", "O cliente não existe."],
    ["clientes[1].limite_credito_disponivel", "O limite disponível precisa ser menor ou igual ao limite total."]
  ]
}

Principais validações do lote:

CampoMensagem
clientesTamanho máximo permitido: 300. Tamanho recebido: 301.
idAtributo obrigatório não informado / O cliente não existe. / O id 1234 está duplicado no lote.
excluidoNão é permitido alterar um cliente excluído.
cnpjEste CNPJ está duplicado no lote. / Este CNPJ já está cadastrado no sistema. (para pessoa física as mensagens usam CPF no lugar de CNPJ)
tipoO documento atual do cliente não é válido para o tipo informado.
segmento_idO segmento não existe.
rede_idA rede não existe.
motivo_bloqueio_idO motivo de bloqueio não existe. / É necessário "bloqueado" ser true ao vincular um "motivo_bloqueio_id"
bloqueadoO recurso de bloqueio de clientes não está disponível em seu plano
limite_credito_disponivelPara configurar o limite de crédito, é necessário informar os campos limite_credito_disponivel e limite_credito_total. / O limite disponível precisa ser menor ou igual ao limite total.
enderecos_adicionaisO limite de endereços adicionais por cliente é 20. (o valor do limite é definido na configuração da conta) / Existem endereços que não estão relacionados a este cliente.

Quando a conta possui campos obrigatórios adicionais no cadastro do cliente, enviá-los vazios também retorna erro: Este campo é obrigatório. para campos simples e No mínimo 1 telefone é requerido / No mínimo 1 e-mail é requerido para as listas.


Diferenças em relação ao endpoint de Clientes

  • Este endpoint não cria clientes: para incluir um novo cadastro utilize POST /v1/clientes.
  • O campo id é obrigatório em todos os itens, e o mesmo cliente não pode aparecer duas vezes na mesma requisição.
  • A exclusão é feita pelo próprio item do lote, com excluido igual a true.
  • A resposta traz apenas os dados cadastrais do cliente, além de excluido e ultima_alteracao. Os campos emails, telefones, contatos, enderecos_adicionais, limite_credito, tags e criador_id não são retornados.