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.
| Campo | Tipo | Descrição |
|---|---|---|
| id (obrigatório) | Integer | ID do cliente que será alterado. Este deve ser o ID cadastrado no Mercos, e não o ID do seu Sistema. |
| razao_social | String: 100 | Razão social para pessoa jurídica. Nome do cliente para pessoa física. Não pode ser enviado vazio. |
| nome_fantasia | String: 100 | Nome fantasia (pessoa jurídica) / Apelido (pessoa física). |
| tipo | String: 1 | J para pessoa jurídica, F para pessoa física. |
| cnpj | String: 18 | CNPJ 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_estadual | String: 30 | Identificação da inscrição estadual do cliente. |
| suframa | String: 20 | Código Suframa para clientes da Zona Franca de Manaus. Caso seja informado, todos os pedidos deste cliente terão IPI zerado (isento). |
| rua | String: 100 | Rua do endereço do cliente. |
| numero | String: 100 | Número do endereço do cliente. |
| complemento | String: 50 | Informações adicionais do endereço do cliente. |
| cep | String: 9 | Pode ser informado com ou sem hífen. |
| bairro | String: 30 | Bairro do cliente. |
| cidade | String: 50 | Cidade do cliente. |
| estado | String: 2 | Sigla do Estado. |
| observacao | String | Utilize para guardar quaisquer informações que não tenham campos específicos. |
| emails | List | Lista de e-mails do cliente. Cada item é um objeto com o campo email (String: 75). |
| telefones | List | Lista de telefones do cliente. Cada item é um objeto com o campo numero (String: 30). |
| contatos | List | Lista de contatos do cliente. Cada item aceita id (Integer), nome (String: 50), cargo (String: 30), excluido (Boolean), emails (List) e telefones (List). |
| nome_excecao_fiscal | String: 20 | Exceçã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_id | Integer | Identificador do segmento do cliente para diferenciação em relatórios e políticas comerciais. Ex: 123. |
| rede_id | Integer | Identificador da rede do cliente para diferenciação em relatórios. Ex: 456. |
| bloqueado_b2b | Boolean | Indica se o cliente possui bloqueio de acesso ao E-commerce B2B. |
| bloqueado | Boolean | Indica se o cliente está bloqueado. (Ao desbloquear um cliente, motivo_bloqueio_id será alterado para null) |
| motivo_bloqueio_id | Integer | Identificador único do motivo de bloqueio do cliente. (Obrigatório bloqueado=true ao passar um ID neste campo) |
| enderecos_adicionais | List | Lista 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_disponivel | Float | Valor 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_total | Float | Valor do limite de crédito total do cliente. É obrigatório o envio de ambos os campos de limite de crédito. |
| extras | List | Lista 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.
| Campo | Tipo | Descrição |
|---|---|---|
| id (obrigatório) | Integer | ID 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) | Boolean | Informe true para excluir o cliente. |
Atenção as regras:
- Nos itens com
excluidoigual atrue, os demais campos enviados são ignorados.- Não é possível alterar um cliente que já está excluído, nem restaurá-lo enviando
excluidoigual afalse.
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:
| Campo | Tipo | Descrição |
|---|---|---|
| id | Integer | Identificador único. |
| razao_social | String: 100 | Razão social para pessoa jurídica. Nome para pessoa física. |
| nome_fantasia | String: 100 | Nome fantasia (pessoa jurídica) / Apelido (pessoa física). |
| tipo | String: 1 | J para pessoa jurídica, F para pessoa física. |
| cnpj | String: 18 | CNPJ para pessoa jurídica, CPF para pessoa física. |
| inscricao_estadual | String: 30 | Identificação da inscrição estadual do cliente. |
| suframa | String: 20 | Código Suframa do cliente. |
| rua | String: 100 | Rua do endereço do cliente. |
| numero | String: 100 | Número do endereço do cliente. |
| complemento | String: 50 | Informações adicionais do endereço do cliente. |
| cep | String: 9 | CEP do cliente. |
| bairro | String: 30 | Bairro do cliente. |
| cidade | String: 50 | Cidade do cliente. |
| estado | String: 2 | Sigla do Estado. |
| observacao | String | Observação do cliente. |
| bloqueado_b2b | Boolean | Indica se o cliente possui bloqueio de acesso ao E-commerce B2B. |
| bloqueado | Boolean | Indica se o cliente está bloqueado. |
| segmento_id | Integer | Identificador do segmento do cliente. |
| rede_id | Integer | Identificador da rede do cliente. |
| excecao_fiscal_id | Integer | Identificador da exceção fiscal vinculada ao cliente. |
| motivo_bloqueio_id | Integer | Identificador único do motivo de bloqueio do cliente. |
| excluido | Boolean | Indica se o cliente está excluído. |
| ultima_alteracao | DateTime | Data 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:
| Campo | Mensagem |
|---|---|
| clientes | Tamanho máximo permitido: 300. Tamanho recebido: 301. |
| id | Atributo obrigatório não informado / O cliente não existe. / O id 1234 está duplicado no lote. |
| excluido | Não é permitido alterar um cliente excluído. |
| cnpj | Este CNPJ está duplicado no lote. / Este CNPJ já está cadastrado no sistema. (para pessoa física as mensagens usam CPF no lugar de CNPJ) |
| tipo | O documento atual do cliente não é válido para o tipo informado. |
| segmento_id | O segmento não existe. |
| rede_id | A rede não existe. |
| motivo_bloqueio_id | O motivo de bloqueio não existe. / É necessário "bloqueado" ser true ao vincular um "motivo_bloqueio_id" |
| bloqueado | O recurso de bloqueio de clientes não está disponível em seu plano |
| limite_credito_disponivel | Para 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_adicionais | O 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
excluidoigual atrue. - A resposta traz apenas os dados cadastrais do cliente, além de
excluidoeultima_alteracao. Os camposemails,telefones,contatos,enderecos_adicionais,limite_credito,tagsecriador_idnão são retornados.
