Pedidos

A entidade Pedidos V2 contempla tanto os pedidos gerados quanto os orçamentos pendentes realizados no sistema Mercos. A principal distinção entre eles está no campo status, conforme descrito abaixo.

Diferença entre Orçamento e Pedido

  • status = 1: Orçamento
  • status = 2: Pedido gerados
  • status = 0: Cancelado

Exemplo de requisição para listar apenas pedidos gerados:

GET https://app.mercos.com/api/v2/pedidos/?status=2&alterado_apos=2024-04-01T00:00:00

Filtros disponíveis

Você pode aplicar os seguintes filtros na consulta GET:

  • status_faturamento:

    • 0 = Não faturado
    • 1 = Parcialmente faturado
    • 2 = Faturado

    Exemplo: ?status=2&status_faturamento=1

  • status_custom:

    • Permite filtrar por status de pedido customizados.
    • Para consultar pedidos sem status customizado, utilize o valor 0.
    • É possível enviar múltiplos valores: ?status=2&status_custom=0&status_custom=4&status_custom=10
  • registros_por_pagina:

    • Define a quantidade de registros por página.
    • Sugestão: Utilize no máximo 20 por requisição.

    Exemplo: ?status=2&registros_por_pagina=15


Estrutura da Resposta do Pedido (GET)

CampoTipoDescrição
idIntegerIdentificador único do pedido
numeroIntegerNúmero sequencial (auto-incremental).
statusString: 1Status do pedido: 0 = Cancelado, 1 = Orçamento, 2 = Pedido
status_faturamentoInteger0 = Não faturado, 1 = Parcial, 2 = Faturado
status_custom_idIntegerID do status customizado.
status_b2bIntegernull = Não utiliza B2B, 1 = Em aberto, 2 = Concluído
criador_idIntegerID do vendedor responsável.
valor_freteDoubleValor do frete.
totalDoubleValor total do pedido.
rastreamentoString: 200Código ou link para rastreamento.
observacoesString: 500Observações do pedido.
data_emissaoDateData de emissão do pedido. Pode ser null.
data_criacaoDateTimeData em que o pedido foi criado. Preenchida apenas se fornecida. Pode diferir de data_emissao (ex.: pedido criado ontem e emitido hoje)
prazo_entregaString: 100Previsão de entrega
modalidade_entrega_nomeString: 255Modalidade de entrega (ex: Sedex)
possui_informacao_pagamentoBooleanIndica se há link de pagamento
cliente_idIntegerID do cliente no Mercos
cliente_razao_socialString: 100Razão social do cliente
cliente_nome_fantasiaString: 100Nome fantasia do cliente
cliente_cnpjString: 14CNPJ do cliente
cliente_inscricao_estadualString: 30Inscrição estadual do cliente
cliente_ruaString: 100Rua do cliente
cliente_numeroString: 100Número do endereço.
cliente_complementoString: 50Complemento do endereço.
cliente_cepString: 8CEP
cliente_bairroString: 30Bairro
cliente_cidadeString: 50Cidade
cliente_estadoString: 2Estado (UF)
cliente_suframaString: 20SUFRAMA (se aplicável)
cliente_telefoneListLista de telefones
cliente_emailListLista de emails
nome_contatoString: 50Nome do contato principal.
representada_idIntegerID da Representada
representada_nome_fantasiaString: 50Nome fantasia da Representada
representada_razao_socialString: 50Razão Social da Representada
transportadora_idIntegerID da transportadora. Será null se houver integração com a Frenet, só existindo o campo transportadora_nomee valor_frete.
transportadora_nomeString: 50Nome da transportadora.
condicao_pagamentoString: 100Condição de pagamento em formato texto livre.
condicao_pagamento_idIntegerID da condição de pagamento (se integrado)
forma_pagamento_idIntegerID da forma de pagamento (se integrado)
tipo_pedido_idIntegerSe integrado, é retornado o ID do tipo de pedido. Caso contrário, assume o tipo “venda” (padrão), retornado como null. Outros tipos cadastrados retornam seus respectivos IDs, mas não geram métricas de faturamento.
cupom_de_descontoString: 50Cupom de desconto aplicado no pedido.
percentual_total_comissao_pedidoDoublePercentual total de comissão do pedido.
comissoes_vendedoresListLista de comissões por vendedor {"vendedor_id": Integer, "percentual": Double}.
extrasListLista com os campos extras do pedido.
endereco_entregaListLista com os endereços de entrega do pedido.

Estrutura da Resposta do Item do pedido (GET)

CampoTipoDescrição
idIntegerIdentificador único do item do pedido.
produto_idIntegerID do produto na Mercos.
produto_codigoString: 50Código do Produto.
produto_nomeString: 100Nome do Produto na.
tabela_preco_idIntegerID da tabela de preço utilizada. Será null se o preço aplicado for o padrão do produto.
preco_tabelaDoublePreço padrão do produto no momento da venda. Corresponde ao valor padrão (preco_tabela do produto) ou ao da tabela de preço, caso uma tenha sido aplicada.
preco_liquidoDoublePreço de venda do produto.
quantidadeDoubleQuantidade vendida.
cotacao_moedaDoubleCotação da moeda (caso estrangeira)
tipo_ipiCharIndica se o IPI é percentual P ou valor fixo V
ipiDoubleValor do IPI do produto
stDoublePercentual aplicado de ICMS-ST (Substituição Tributária) sobre o item.
quantidade_grades(depreciado)ListLista com as grades de cores e tamanhos usadas, e suas respectivas quantidades. Caso o produto possua somente Cor, o Tamanho será null, e vice-versa. A soma das quantidades nesta lista será igual ao campo quantidade do item.cor String: 15tamanho String: 15quantidade Double
descontos_do_vendedorListLista de descontos ou acréscimos (os acréscimos são negativos) do vendedor, aplicadas ao item.
descontos_de_promocoesListLista de descontos de promoções aplicadas ao item: {"regra_id": Integer, "desconto": Double}
descontos_de_politicasListLista de descontos ou acréscimos (os acréscimos são negativos) de políticas comerciais aplicadas ao item: {"slug": String(36), regra_id": Integer, "desconto": Double}
desconto_de_cupomDoubleDesconto de cupom aplicado ao item.
observacoesString: 500Observações do item
subtotalDoubleSubtotal do item
grupo_gradesUUIDIdentificador do grupo de produtos com variações (grades) dentro de um mesmo pedido.
produto_agregador_idIntegerID do produto agregador no Mercos, quando item é do tipo grade
excluidoBooleanIndica se o item foi excluído.

Campos extras do pedido (campo extras)

CampoTipoDescrição
campo_extra_idIntegerIdentificador único do campo extra.
nomeString: 50Nome do campo extra.
tipoString("0") Texto livre, ("1") data, ("2") numérico, ("3") hora, ("4") Lista e ("5") Somente leitura.
valor_textoString: 50Texto ou valor se tipo = 0 ou 5
valor_dataStringData se tipo = 1
valor_decimalDoubleNúmero se tipo = 2
valor_horaStringHora se tipo = 3
valor_listaListLista de valores se tipo = 4. Exemplo: [[1, "sp"], [2, "sc"]]
valorO tipo deste atributo depende do tipo do campo extra como descrito na tabela abaixo.

Tipo do campos extras

Tipo do campo extraTipoFormato
Texto simples("0")String: 50
Data("1")String"yyyy-dd-mm", ex: "2018-21-02".
Numérico("2")DoubleValor máximo: 99999999.99999.
Hora("3")String"HH:mm", ex: "21:56".
Lista("4")ListRetorna uma lista de IDs e valores dos itens da lista, ex: [[1, "sp"], [2, "sc"]].
Somente leitura("5")String: 50

Endereço de entrega (campo endereco_entrega)

CampoTipoDescrição
idIntegerIdentificador único do endereço (mesmo do endereço adicional do cliente).
cepString: 8CEP do endereço
enderecoString: 200Nome da rua ou logradouro.
numeroString: 100Número do endereço.
complementoString: 200Complemento do endereço (ex: bloco, apartamento).
bairroString: 200Bairro do endereço.
cidadeString: 200Cidade do endereço.
estadoString: 2Sigla do estado (UF).

Parâmetros de Envio de Pedidos (POST / PUT)

Requisição PUT: envie apenas os campos que deseja alterar. Requisição POST: campos obrigatórios devem ser informados.

CampoTipoDescrição
cliente_id (POST: obrigatório)IntegerIdentificador único do cliente.
data_emissao (POST: obrigatório)DateData de emissão do pedido.
contato_idIntegerID do contato criado no Mercos.
transportadora_idIntegerID da transportadora.
condicao_pagamento_id (POST: obrigatório)IntegerID da condição de pagamento. Deve ser informado somente se houver integração com a entidade Condições de Pagamento. Não deve ser utilizado junto com o campo condicao_pagamento
condicao_pagamento (POST: obrigatório)String: 100Descrição da condição de pagamento em texto livre. Deve ser informado somente se não houver integração com a entidade Condições de Pagamento. Não deve ser utilizado junto com o campo condicao_pagamento_id.
tipo_pedido_idIntegerID do tipo de pedido. Deve ser informado somente se houver integração com a entidade Tipo de Pedido.
forma_pagamento_idIntegerID da forma de pagamento. Deve ser informado somente se houver integração com a entidade Formas de Pagamento.
endereco_entrega_idIntegerID do endereço de entrega.
observacoesString: 500Informações adicionais registradas no pedido.
extrasListLista de campos extras associados ao pedido. A estrutura esperada pode ser consultada na seção Estrutura de Retorno de Campos Extras do Pedido.
itensListLista de itens do pedido, conforme estrutura JSON definida na seção Parâmetros do JSON de envio do Item do Pedido. Se informado, deve conter pelo menos um item
data_criacaoDateTimeData de criação do pedido. Pode ser diferente da data_emissao, já que um pedido pode ter sido criado em uma data e emitido em outra. Este campo somente será preenchido se for enviado no POST, pois representa a data em que o pedido foi criado (não confundir com a data de inserção no banco de dados).
rastreamentoString: 200Código ou link de rastreamento do envio do pedido.
valor_freteDoubleValor do frete aplicado ao pedido.
criador_idIntegerID do vendedor que responsável pelo pedido.

Parâmetros de Envio do Item do pedido (POST / PUT)

Requisição PUT: envie apenas os campos que deseja alterar. Requisição POST: campos obrigatórios devem ser informados.

💡

Apenas produtos simples ou itens de grade devem ser enviados como item no pedido.

⚠️

Observações sobre a Grade v3: Ao realizar um POST com produtos do tipo grade, é obrigatório enviar o campo grupo_grades. Para isso, gere um UUID único para cada conjunto de grades do mesmo produto incluído no pedido. Todos os itens de grade desse conjunto devem compartilhar o mesmo grupo_grades. Por exemplo, se um produto possui variações de tamanho ou cor, todas essas variações devem ter o mesmo UUID.

CampoTipoDescrição
idIntegerID do item do pedido. Deve ser informado somente em requisições PUT, para fins de atualização do item existente.
produto_id (POST: obrigatório)IntegerID do produto na Mercos. Campo obrigatório na criação de um novo item do pedido.
preco_tabela (POST: obrigatório)DoublePreço padrão do produto no momento da venda. Corresponde ao campo preco_tabela da entidade Produto ou, se houver uma tabela de preço aplicada (tabela_preco_id diferente de null), representa o valor definido por essa tabela.
quantidade (POST: obrigatório)DoubleQuantidade vendida do item. Se este campo for informado, o campo quantidade_grades não deve ser utilizado no mesmo item.
quantidade_grades(depreciado)ListLista com as grades de cores e tamanhos usadas, e suas respectivas quantidades. Caso o produto possua somente Cor, o Tamanho será null, e vice-versa. A soma das quantidades nesta lista será igual ao campo quantidade do item.cor String: 15 tamanho String: 15 quantidade Double
tabela_preco_idIntegerID da tabela de preço utilizada no item. Caso o preço aplicado seja o padrão do produto (preco_tabela da entidade Produto), este campo será null.
preco_liquidoDoublePreço de venda final do produto. Este campo não pode ser informado caso sejam utilizados os campos descontos_do_vendedor, descontos_de_promocoes ou descontos_de_politicas, pois o preço líquido será calculado automaticamente com base nos descontos aplicados e no preco_tabela.
moedaStringTipo de moeda utilizada. Utilize os seguintes valores:
Real = '0' (preenchimento automático, não precisa ser enviado)
Dólar = '1'
Euro = '2'
Outro = '3’
cotacao_moedaDoubleCotação da moeda estrangeira. Deve ser informado apenas quando a moeda for diferente de Real.
descontos_do_vendedorListLista de descontos aplicados pelo vendedor ao item.
descontos_de_promocoesListLista de descontos promocionais aplicados ao item. Cada item deve seguir o formato:{"regra_id": Integer, "desconto": Double}
descontos_de_politicasListLista de acréscimos ou descontos decorrentes de políticas comerciais. Cada item deve seguir o formato: { "regra_id": Integer, "desconto": Double } Acréscimos são representados por valores negativos de desconto.
observacoesString: 500Informações adicionais registradas sobre o item.
tipo_ipiCharIndica o tipo de IPI aplicado. Utilize: 'P' para percentual e 'V' para valor fixo Deve ser preenchido somente se o campo ipi for informado.
ipiDoubleValor ou percentual do IPI, conforme indicado no campo tipo_ipi.
stDoublePercentual da alíquota de ICMS-ST (Substituição Tributária). Não deve ser preenchido se o campo valor_unitario_st for informado.
valor_unitario_stDoubleValor unitário, em reais, do ICMS-ST. Não deve ser preenchido se o campo st for informado.
excluidoBooleanSe definido como true, o item será excluído durante a alteração.
grupo_grades (obrigatório em produtos do tipo grade)UUIDIdentificador do conjunto de produtos relacionados por grade.
Itens com o mesmo grupo_grades são agrupados e exibidos como um único item no pedido.
Todos os produtos do grupo devem compartilhar o mesmo produto agregador.
Produtos simples não devem preencher este campo.

Parâmetros de Envio do Campos extras do pedido (POST / PUT)

💡

Observação: Campos extras previamente cadastrados que não forem enviados serão salvos como vazios.

CampoTipoDescrição
idIntegerIdentificador único do campo extra.
valorValor do campo extra. O tipo depende do tipo de campo, conforme especificado na tabela abaixo.

Tipos Campos extras do pedido

Tipo do campo extraTipoFormato
Texto simples("0")String: 50
Data("1")String"yyyy-dd-mm", ex: "2018-21-02".
Numérico("2")DoubleValor máximo: 99999999.99999.
Hora("3")String"HH:mm", ex: "21:56".
Lista("4")ListRetorna uma lista de IDs e valores dos itens da lista, ex: [[1, "sp"], [2, "sc"]].
Somente leitura("5")String: 50

Estrutura da resposta (POST / PUT)

Sucesso

Quando a requisição for bem-sucedida, a resposta retornará:

  • O id do pedido criado ou alterado
  • O numero do pedido
  • A lista de ids dos itens do pedido, na mesma ordem em que foram enviados
⚠️

No método PUT, o campo produto_id também será retornado em cada item, junto com seu respectivo id.

Exemplo de resposta (POST ou PUT):

  {
      "id": 10,
      "numero": 20,
      "itens": [
          {
              "id": 5,
              "produto_id": 9 // Retornado somente em PUT
          },
          {
              "id": 6
          }
      ]
  }

Recomendação: Armazene os ids retornados para poder utilizá-los em alterações futuras.


Erro

Em caso de falha, a resposta conterá uma lista dos erros encontrados, informando:

  • O campo com problema
  • O tipo ou descrição do erro

Exemplo de resposta de erro:

  {
    "mensagem": "Ocorreram erros de validação",
    "erros": [
      [
        "cliente_id",
        "Atributo obrigatório não informado"
      ]
    ]
  }