Pular para o conteúdo
Softeum PedidosIntegração com o ERP

Referência da API

Cada rota da API do Softeum Pedidos, do contrato OpenAPI: o método, o caminho, a autenticação, os parâmetros, o corpo e as respostas com os códigos.

docs.softeum.com.br/api/

Seções desta página

Visão geral

Integração do ERP da indústria com o Softeum Pedidos.

Pedidos (Softeum → ERP). Quando um pedido fica pronto, o Softeum avisa o endereço cadastrado no painel (webhook pedido.aprovado).
O ERP responde 2xx e confirma com o número do ERP: no próprio corpo da resposta ou depois, em POST /pedidos/{id}/confirmacao.
Se não conseguir lançar, recusa com o motivo em POST /pedidos/{id}/recusa, e o pedido volta para o time da indústria.
Sem webhook, o ERP busca em GET /pedidos?situacao=pronto (o pedido fica pronto até ser confirmado ou recusado).

Cadastros (ERP → Softeum). O ERP é a fonte da verdade de produtos, compradores, vendedores e tabelas de preço.
Envie em lotes de até 1000 registros. Cada um é criado ou atualizado pelo codigo_erp; para desativar, mande ativo: false.

Autenticação. Authorization: Bearer <chave>, com a chave criada no painel (Integração → Como o ERP recebe → O ERP busca os pedidos).

Endereço
https://api.softeum.com.br/v1 Versão 1 da API.
Contrato
OpenAPI 3.1.0, versão 1.0.0 da API. Baixar o openapi.json: abre no Swagger Editor, no Postman e no Insomnia.
No guia
Cada campo, os erros e os limites, com exemplos: guia, seção 13.

Autenticação

Toda chamada leva o cabeçalho Authorization: Bearer <chave>.

Chave de acesso criada no painel (Integração → Como o ERP recebe → O ERP busca os pedidos).

Os avisos ao ERP não levam a chave: o ERP confere a assinatura de cada aviso com o segredo do painel.

Pedidos

Buscar, confirmar e recusar pedidos.

Listar pedidos

GET/v1/pedidos

Do mais antigo para o mais novo. Use para buscar os pedidos prontos quando não houver webhook.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
situacaoconsultatextonãovalores: pronto, enviado, confirmado, erro
desdeconsultadata e hora (ISO 8601, com fuso)nãoAprovados a partir deste momento (ISO 8601 com fuso).
cursorconsultatextonãoproximo_cursor da página anterior.
limiteconsultainteironãode 1 a 500; padrão 100

Respostas

CódigoO que quer dizerCorpo
200Uma página de pedidos.ListaPedidos (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
422Dados inválidos: erros[] traz cada campo e o motivo.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s "https://api.softeum.com.br/v1/pedidos" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE"

$SOFTEUM_CHAVE: a chave de acesso.

Buscar um pedido

GET/v1/pedidos/{id}

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
idcaminhotexto (uuid)simid do pedido no Softeum.

Respostas

CódigoO que quer dizerCorpo
200O pedido.Pedido (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
404Pedido não encontrado, ou ainda não pronto para o ERP (na leitura ou na revisão), recusado ou cancelado pelo time.Problema (application/problem+json)
409O pedido não pode ir ao ERP (item sem produto do catálogo, produto inativo ou comprador sem cadastro): voltou para a revisão do time e não aparece na lista até ser aprovado de novo.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s "https://api.softeum.com.br/v1/pedidos/$ID" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE"

$SOFTEUM_CHAVE: a chave de acesso. $ID: id do pedido no Softeum.

Confirmar que o ERP lançou o pedido

POST/v1/pedidos/{id}/confirmacao

Informe o número do pedido no ERP. Repetir com o mesmo número não muda nada.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
idcaminhotexto (uuid)simid do pedido no Softeum.
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres
PrefercabeçalhotextonãoOpcional. return=minimal (RFC 7240): a resposta traz só o resumo do pedido (id, situacao, numero_erp), mais rápida, e o cabeçalho Preference-Applied. Sem ele, o pedido inteiro. exemplo return=minimal

Corpo da requisição

application/json, obrigatório. Modelo ConfirmacaoErp.

CampoTipoObrigatórioO que é
numero_erptextosimNúmero do pedido no ERP. de 1 a 60 caracteres; exemplo 584460
lancado_emdata e hora (ISO 8601, com fuso)nãoQuando o ERP lançou o pedido (se não vier, vale a hora da confirmação). exemplo 2026-09-30T16:13:00-03:00

Exemplo do contrato

{
  "numero_erp": "584460"
}

Respostas

CódigoO que quer dizerCorpo
200Pedido confirmado. O pedido inteiro; com Prefer: return=minimal, só o resumo.Pedido ou ResumoPedido (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
404Pedido não encontrado.Problema (application/problem+json)
409O pedido já foi confirmado com outro número, ou não está pronto para o ERP.Problema (application/problem+json)
422Dados inválidos: erros[] traz cada campo e o motivo.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X POST "https://api.softeum.com.br/v1/pedidos/$ID/confirmacao" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"numero_erp":"584460"}'

$SOFTEUM_CHAVE: a chave de acesso. $ID: id do pedido no Softeum.

Recusar o pedido no ERP

POST/v1/pedidos/{id}/recusa

O pedido fica com erro e o motivo aparece para o time da indústria, que corrige e reenvia.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
idcaminhotexto (uuid)simid do pedido no Softeum.
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres
PrefercabeçalhotextonãoOpcional. return=minimal (RFC 7240): a resposta traz só o resumo do pedido (id, situacao, numero_erp), mais rápida, e o cabeçalho Preference-Applied. Sem ele, o pedido inteiro. exemplo return=minimal

Corpo da requisição

application/json, obrigatório. Modelo RecusaErp.

CampoTipoObrigatórioO que é
motivotextosimPor que o ERP não aceitou. Aparece para o time da indústria no painel. de 3 a 500 caracteres; exemplo Condição de pagamento 28/56 não existe no ERP.

Exemplo do contrato

{
  "motivo": "Condição de pagamento 28/56 não existe no ERP."
}

Respostas

CódigoO que quer dizerCorpo
200Pedido marcado com erro. O pedido inteiro; com Prefer: return=minimal, só o resumo.Pedido ou ResumoPedido (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
404Pedido não encontrado.Problema (application/problem+json)
409O pedido já foi confirmado, ou não está pronto para o ERP.Problema (application/problem+json)
422Dados inválidos: erros[] traz cada campo e o motivo.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X POST "https://api.softeum.com.br/v1/pedidos/$ID/recusa" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d '{"motivo":"Condição de pagamento 28/56 não existe no ERP."}'

$SOFTEUM_CHAVE: a chave de acesso. $ID: id do pedido no Softeum.

Baixar o documento original

GET/v1/pedidos/{id}/arquivo

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
idcaminhotexto (uuid)simid do pedido no Softeum.

Respostas

CódigoO que quer dizerCorpo
302Redireciona para um link temporário do arquivo (PDF, planilha, XML ou e-mail).sem corpo
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
404Pedido não encontrado.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -L -o documento "https://api.softeum.com.br/v1/pedidos/$ID/arquivo" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE"

$SOFTEUM_CHAVE: a chave de acesso. $ID: id do pedido no Softeum.

Cadastros

Sincronizar os cadastros do ERP.

Sincronizar produtos

PUT/v1/produtos

Cria ou atualiza produtos do catálogo pelo codigo_erp.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres

Corpo da requisição

application/json, obrigatório. Modelo LoteProdutos.

CampoTipoObrigatórioO que é
produtoslista de ProdutoErpsimde 1 a 1.000 itens
produtos[].codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
produtos[].skutextosimde 1 a 60 caracteres; exemplo VA-LVD-500R
produtos[].descricaotextosimde 1 a 300 caracteres; exemplo Limpa-vidros refil 500 ml
produtos[].eantexto ou nullnãoformato ^(\d{8}|\d{12,14})$
produtos[].embalagemtextosimEmbalagem de venda. de 1 a 10 caracteres; exemplo CX
produtos[].unidades_por_embalageminteirosimmaior que 0; exemplo 12
produtos[].ncmtexto ou nullnãoformato ^\d{8}$
produtos[].ipi_pctnúmeronãode 0 a 100; padrão 0
produtos[].linhatexto ou nullnãoaté 80 caracteres
produtos[].ativotrue ou falsenãopadrão true

Respostas

CódigoO que quer dizerCorpo
200Lote processado.ResultadoSincronizacao (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
422O lote todo é inválido (sem a lista, vazio ou com mais registros que o máximo). Registro inválido sozinho não derruba o lote: volta em erros.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X PUT "https://api.softeum.com.br/v1/produtos" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d @corpo.json

$SOFTEUM_CHAVE: a chave de acesso. corpo.json: o corpo, com os campos da tabela acima.

Sincronizar compradores

PUT/v1/compradores

Cria ou atualiza compradores pelo codigo_erp.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres

Corpo da requisição

application/json, obrigatório. Modelo LoteCompradores.

CampoTipoObrigatórioO que é
compradoreslista de CompradorErpsimde 1 a 1.000 itens
compradores[].codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
compradores[].cnpjtextosimCNPJ só com números (14 dígitos), com dígitos verificadores válidos. formato ^\d{14}$; exemplo 12345678000195
compradores[].razao_socialtextosimde 1 a 200 caracteres
compradores[].nome_fantasiatexto ou nullnãoaté 200 caracteres
compradores[].cidadetexto ou nullnãoaté 120 caracteres
compradores[].uftexto ou nullnãoEstado do comprador, a sigla com 2 letras maiúsculas. Casa com a tabela de preço pelos estados, criada no painel. formato ^[A-Z]{2}$; exemplo SP
compradores[].regiaotexto ou nullnãoRegião de preço (casa com as tabelas de nível região). até 60 caracteres; exemplo Sudeste
compradores[].codigo_vendedortexto ou nullnãocodigo_erp do vendedor responsável. de 1 a 60 caracteres; exemplo C001
compradores[].codigo_tabela_precotexto ou nullnãocodigo_erp da tabela do comprador (nível 2), se houver. de 1 a 60 caracteres; exemplo C001
compradores[].ativotrue ou falsenãofalse = bloqueado: pedidos dele vão para a revisão. padrão true

Respostas

CódigoO que quer dizerCorpo
200Lote processado.ResultadoSincronizacao (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
422O lote todo é inválido (sem a lista, vazio ou com mais registros que o máximo). Registro inválido sozinho não derruba o lote: volta em erros.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X PUT "https://api.softeum.com.br/v1/compradores" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d @corpo.json

$SOFTEUM_CHAVE: a chave de acesso. corpo.json: o corpo, com os campos da tabela acima.

Sincronizar vendedores

PUT/v1/vendedores

Cria ou atualiza vendedores pelo codigo_erp.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres

Corpo da requisição

application/json, obrigatório. Modelo LoteVendedores.

CampoTipoObrigatórioO que é
vendedoreslista de VendedorErpsimde 1 a 1.000 itens
vendedores[].codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
vendedores[].nometextosimde 1 a 120 caracteres
vendedores[].emailtexto (e-mail) ou nullnãoE-mail que encaminha os pedidos. Outros endereços do mesmo vendedor se cadastram no painel. exemplo carlos.menezes@valeazul.com.br
vendedores[].ativotrue ou falsenãopadrão true

Respostas

CódigoO que quer dizerCorpo
200Lote processado.ResultadoSincronizacao (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
422O lote todo é inválido (sem a lista, vazio ou com mais registros que o máximo). Registro inválido sozinho não derruba o lote: volta em erros.Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X PUT "https://api.softeum.com.br/v1/vendedores" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d @corpo.json

$SOFTEUM_CHAVE: a chave de acesso. corpo.json: o corpo, com os campos da tabela acima.

Enviar uma tabela de preço inteira

PUT/v1/tabelas-de-preco/{codigo_erp}

Cria ou substitui a tabela e todos os preços dela. Preço que não vier sai da tabela.

Com a chave de acesso: autenticação.

Parâmetros

NomeOndeTipoObrigatórioO que é
codigo_erpcaminhotextosimCódigo da tabela no ERP.
Idempotency-KeycabeçalhotextonãoOpcional. As operações já são idempotentes: repetir a mesma chamada (com ou sem esta chave) não muda nada duas vezes. até 100 caracteres

Corpo da requisição

application/json, obrigatório. Modelo TabelaPrecoErp.

CampoTipoObrigatórioO que é
nometextosimde 1 a 120 caracteres; exemplo Tabela Sudeste
niveltextosimEm cada item vale o primeiro que tiver preço: especifico (de um comprador), comprador (tabela atribuída ao comprador), regiao, padrao. valores: especifico, comprador, regiao, padrao
codigo_compradortexto ou nullnãoObrigatório no nível especifico. de 1 a 60 caracteres; exemplo C001
regiaotexto ou nullnãoObrigatória no nível regiao. até 60 caracteres
vigencia_iniciodata (aaaa-mm-dd)simexemplo 2026-10-07
vigencia_fimdata (aaaa-mm-dd) ou nullnãoexemplo 2026-10-07
precoslista de objetosimTodos os preços da tabela: o que não vier aqui sai da tabela. até 20.000 itens
precos[].codigo_produtotextosimcodigo_erp do produto. de 1 a 60 caracteres; exemplo C001
precos[].preconúmerosimPreço líquido (sem impostos) por embalagem de venda. a partir de 0; exemplo 76.04

Respostas

CódigoO que quer dizerCorpo
200Tabela gravada (contagem dos preços).ResultadoSincronizacao (application/json)
401Chave de acesso ausente, inválida ou revogada.Problema (application/problem+json)
403O acesso da empresa ao Softeum está suspenso.Problema (application/problem+json)
422Tabela inválida (ex.: vigência que se sobrepõe a outra do mesmo alcance).Problema (application/problem+json)
429Muitas chamadas em pouco tempo (padrão: 120 por minuto por chave; a empresa pode ter um limite maior, combinado com a Softeum). Espere o tempo do cabeçalho Retry-After.Problema (application/problem+json)

Chamada de exemplo

curl -s -X PUT "https://api.softeum.com.br/v1/tabelas-de-preco/$CODIGO_ERP" \
  -H "Authorization: Bearer $SOFTEUM_CHAVE" \
  -H "Content-Type: application/json" \
  -d @corpo.json

$SOFTEUM_CHAVE: a chave de acesso. $CODIGO_ERP: Código da tabela no ERP. corpo.json: o corpo, com os campos da tabela acima.

Avisos ao ERP

O que o Softeum manda ao endereço que a TI cadastra no painel (os webhooks do contrato).

Pedido pronto para o ERP

POSTendereço do ERPSofteum-Evento: pedido.aprovado

Enviado ao endereço cadastrado no painel (Integração → Como o ERP recebe → Aviso no endereço do ERP).
Cabeçalhos: Softeum-Evento (tipo), Softeum-Entrega (id do aviso) e Softeum-Assinatura: t=<segundos>,v1=<hex>.
v1 = HMAC-SHA256(segredo, <t>.<corpo>), com o segredo mostrado no painel.
Recuse avisos com mais de 5 minutos e use o pedido.id para não lançar duas vezes.
Sem resposta 2xx em 10 segundos, reenviamos depois de 1, 5, 30, 120, 360 minutos; depois disso o pedido fica com erro.

Sem a chave de acesso: o ERP confere a assinatura do aviso (guia, seção 5).

Corpo do aviso

application/json, obrigatório. Modelo EventoPedido.

CampoTipoObrigatórioO que é
idtexto (uuid)simIdentificador deste aviso (o mesmo nos reenvios).
tipotextosimvalores: pedido.aprovado
criado_emdata e hora (ISO 8601, com fuso)simexemplo 2026-09-30T16:13:00-03:00
pedidoPedidosim

Exemplo do contrato

{
  "id": "0199a3c4-5f10-7a2b-8c3d-4e5f60718294",
  "tipo": "pedido.aprovado",
  "criado_em": "2026-09-30T16:42:05-03:00",
  "pedido": {
    "id": "0199a3c4-5f10-7a2b-8c3d-4e5f60718293",
    "numero_comprador": "45882",
    "situacao": "pronto",
    "origem": "pdf",
    "recebido_em": "2026-09-30T16:13:00-03:00",
    "aprovado_em": "2026-09-30T16:42:00-03:00",
    "comprador": {
      "cnpj": "12345678000195",
      "razao_social": "Distribuidora Rio Claro Ltda",
      "codigo_erp": "C001"
    },
    "vendedor": {
      "nome": "Carlos Menezes",
      "email": "carlos.menezes@valeazul.com.br",
      "codigo_erp": null
    },
    "condicao_pagamento": "28/42/56 dias",
    "data_pedido": "2026-09-29",
    "data_entrega": "2026-10-07",
    "endereco_entrega": "CD Rio Claro, Av. Brasil, 2150",
    "observacoes": null,
    "itens": [
      {
        "linha": 4,
        "codigo_comprador": "004359",
        "descricao_comprador": "LIMPA VIDROS REFIL 500ML CX12",
        "produto": {
          "sku": "VA-LVD-500R",
          "codigo_erp": "4359",
          "descricao": "Limpa-vidros refil 500 ml",
          "ean": "7896543000415"
        },
        "quantidade": 30,
        "unidade": "CX",
        "quantidade_erp": 360,
        "unidade_erp": "UN",
        "preco_unitario": 76.04,
        "valor_total": 2281.2,
        "data_entrega": null
      }
    ],
    "valor_total": 2281.2,
    "revisao": {
      "revisado_por": "Marina Costa",
      "revisado_em": "2026-09-30T16:40:00-03:00",
      "motivos": [
        "preco"
      ]
    },
    "numero_erp": null,
    "arquivo_original": "https://arquivos.exemplo.com/pedido-45882.pdf"
  }
}

O que o ERP responde

CódigoO que quer dizerCorpo
200Recebido. Se já lançou, devolva o número do ERP para confirmar na hora.RespostaAviso (application/json)

Aviso de teste

POSTendereço do ERPSofteum-Evento: teste

Enviado só quando alguém usa o botão Enviar teste no painel (Integração → Como o ERP recebe → Aviso no endereço do ERP). Não leva pedido.
Mesmos cabeçalhos do aviso de pedido, com Softeum-Evento: teste.
Confira a assinatura e responda 2xx; não lance nada.

Sem a chave de acesso: o ERP confere a assinatura do aviso (guia, seção 5).

Corpo do aviso

application/json, obrigatório. Modelo EventoTeste.

CampoTipoObrigatórioO que é
idtexto (uuid)simIdentificador deste aviso.
tipotextosimsempre teste
criado_emdata e hora (ISO 8601, com fuso)simexemplo 2026-09-30T16:13:00-03:00

Exemplo do contrato

{
  "id": "0199a3c4-5f10-7a2b-8c3d-4e5f60718295",
  "tipo": "teste",
  "criado_em": "2026-09-30T16:45:00-03:00"
}

O que o ERP responde

CódigoO que quer dizerCorpo
200Recebido.sem corpo

Modelos

Os objetos que a API recebe e devolve, campo a campo.

Problema

CampoTipoObrigatórioO que é
typetextosimEndereço que identifica o tipo de erro. exemplo https://softeum.com.br/erros/validacao
titletextosimexemplo Dados inválidos
statusinteirosimde 400 a 599
detailtextonão
erroslista de objetonãoUm item por campo com problema: até 100 (o detail diz quantos são ao todo).
erros[].campotextosimexemplo produtos[3].ean
erros[].mensagemtextosimexemplo EAN com dígito verificador inválido.

DescontoDoItem

CampoTipoObrigatórioO que é
percentualnúmerosimO percentual escrito no documento (10,50% → 10.5): maior que 0 e até 100 (100: o item bonificado). Até 4 casas. maior que 0 e até 100; exemplo 10.5
tipotextosimO tipo escrito junto do desconto. valores: comercial, especial, promocional; exemplo comercial

ItemPedido

CampoTipoObrigatórioO que é
linhainteirosimPosição do item no documento do comprador. maior que 0
codigo_compradortexto ou nullsimCódigo do produto como o comprador escreveu. exemplo 004359
descricao_compradortexto ou nullsimexemplo LIMPA VIDROS REFIL 500ML CX12
produtoobjetosim
produto.skutextosimexemplo VA-LVD-500R
produto.codigo_erptexto ou nullsimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
produto.descricaotextosimexemplo Limpa-vidros refil 500 ml
produto.eantexto ou nullsim
quantidadenúmerosimQuantidade como o comprador pediu. maior que 0; exemplo 30
unidadetexto ou nullsimexemplo CX
quantidade_erpnúmerosimQuantidade já convertida para a unidade do ERP (ex.: 30 CX → 360 UN). maior que 0; exemplo 360
unidade_erptextosimUnidade de quantidade_erp, do cadastro do produto (nunca do texto do comprador): a embalagem do produto vendido por medida (KG, L, M) ou com 1 unidade (CX); UN na embalagem com mais de uma. exemplo UN
preco_unitarionúmerosimPreço que vai para o ERP, por unidade do comprador: o do pedido, o decidido na revisão ou o da tabela de preço, conforme a regra de preço da indústria. Já vem com o desconto do pedido: o desconto do próprio item e o desconto sobre o total, distribuído nos itens em proporção ao valor de cada um (a soma dos itens dá o total do documento). a partir de 0; exemplo 76.04
valor_totalnúmerosimReais, até 2 casas decimais. a partir de 0; exemplo 2281.2
data_entregadata (aaaa-mm-dd) ou nullsimData de entrega deste item, quando o documento do comprador traz uma por item. Nula: vale a data_entrega do pedido. exemplo 2026-10-07
descontoDescontoDoItem ou nullnãoO desconto do próprio item, como está no documento. Só vem quando a indústria lê o desconto de cada item (a equipe Softeum liga); nela, null no item sem desconto. O preco_unitario já vem com esse desconto: não aplique de novo (o preço de tabela do pedido é preco_unitario ÷ (1 − percentual ÷ 100)).

Pedido

CampoTipoObrigatórioO que é
idtexto (uuid)simIdentificador do pedido no Softeum. Use como chave para não lançar o mesmo pedido duas vezes.
testetruenãoSó no pedido de teste, criado no painel (Integração → Como o ERP recebe → O ERP busca os pedidos → Criar pedido de teste) para a TI testar a busca, a confirmação e a recusa. Ele vem com os cadastros da indústria, então o ERP de homologação consegue lançá-lo; no ERP de produção, recuse com o motivo (o pedido sai da fila). Nos outros pedidos a chave nem aparece.
numero_compradortextosimNúmero do pedido no documento do comprador. exemplo 45882
situacaotextosimpronto: aprovado e esperando o ERP; enviado: o aviso chegou ao ERP; confirmado: o ERP lançou e devolveu o número; erro: o ERP recusou ou não respondeu. valores: pronto, enviado, confirmado, erro
origemtextosimDe onde o pedido foi lido: anexo PDF, documento Word (.docx), planilha, XML, imagem (foto ou print do pedido, anexado ou colado no e-mail), texto do e-mail ou arquivo importado no painel. Trate um valor desconhecido como genérico: a lista pode crescer. valores: pdf, word, excel, xml, imagem, corpo, importado
recebido_emdata e hora (ISO 8601, com fuso)simQuando o e-mail chegou. exemplo 2026-09-30T16:13:00-03:00
aprovado_emdata e hora (ISO 8601, com fuso)simQuando o pedido ficou pronto (direto ou depois da revisão). exemplo 2026-09-30T16:13:00-03:00
compradorobjetosim
comprador.cnpjtextosimCNPJ só com números (14 dígitos), com dígitos verificadores válidos: o do comprador do cadastro do Softeum (o lido do documento fica no histórico do pedido). formato ^\d{14}$; exemplo 12345678000195
comprador.razao_socialtextosimexemplo Distribuidora Rio Claro Ltda
comprador.codigo_erptexto ou nullsimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
vendedorobjeto ou nullsimVendedor que encaminhou o e-mail.
vendedor.nometextosimexemplo Carlos Menezes
vendedor.emailtexto (e-mail)simexemplo carlos.menezes@valeazul.com.br
vendedor.codigo_erptexto ou nullsimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
condicao_pagamentotexto ou nullsimexemplo 28/42/56 dias
data_pedidodata (aaaa-mm-dd) ou nullsimData em que o comprador fez o pedido, como o documento traz (a emissão). Nula quando o documento não traz: use recebido_em. O e-mail encaminhado dias depois não muda esta data. exemplo 2026-10-07
data_entregadata (aaaa-mm-dd) ou nullsimData de entrega do pedido. Quando os itens trazem datas diferentes, o pedido passou pela revisão, e a de cada item vem em itens[].data_entrega. exemplo 2026-10-07
endereco_entregatexto ou nullsim
observacoestexto ou nullsim
itenslista de ItemPedidosimpelo menos 1 item
valor_totalnúmerosimSoma do valor_total dos itens, já com as decisões da revisão (item tirado do pedido não entra). a partir de 0; exemplo 2281.2
revisaoobjeto ou nullsimPreenchido quando o pedido passou pela revisão do time.
revisao.revisado_portextosimexemplo Marina Costa
revisao.revisado_emdata e hora (ISO 8601, com fuso)simexemplo 2026-09-30T16:13:00-03:00
revisao.motivoslista de textosimOs códigos do que mandou o pedido para a revisão: preco, depara, cnpj, faltam, catalogo, duplicado, valor, leitura e sempre_revisar. Os avisos, que não mandam o pedido para a revisão, não entram. exemplo ["preco"]
numero_erptexto ou nullsimNúmero do pedido no ERP, depois da confirmação. exemplo 584460
arquivo_originaltexto (URL)simLink temporário para baixar o documento original do comprador.

ConfirmacaoErp

CampoTipoObrigatórioO que é
numero_erptextosimNúmero do pedido no ERP. de 1 a 60 caracteres; exemplo 584460
lancado_emdata e hora (ISO 8601, com fuso)nãoQuando o ERP lançou o pedido (se não vier, vale a hora da confirmação). exemplo 2026-09-30T16:13:00-03:00

RecusaErp

CampoTipoObrigatórioO que é
motivotextosimPor que o ERP não aceitou. Aparece para o time da indústria no painel. de 3 a 500 caracteres; exemplo Condição de pagamento 28/56 não existe no ERP.

ResumoPedido

CampoTipoObrigatórioO que é
idtexto (uuid)simid do pedido no Softeum.
situacaotextosimA situação depois da confirmação (confirmado) ou da recusa (erro). valores: pronto, enviado, confirmado, erro
numero_erptexto ou nullsimNúmero do pedido no ERP (null enquanto não confirmado).

ListaPedidos

CampoTipoObrigatórioO que é
dadoslista de Pedidosim
proximo_cursortexto ou nullsimPasse em ?cursor= para buscar a próxima página. null = acabou.

ProdutoErp

CampoTipoObrigatórioO que é
codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
skutextosimde 1 a 60 caracteres; exemplo VA-LVD-500R
descricaotextosimde 1 a 300 caracteres; exemplo Limpa-vidros refil 500 ml
eantexto ou nullnãoformato ^(\d{8}|\d{12,14})$
embalagemtextosimEmbalagem de venda. de 1 a 10 caracteres; exemplo CX
unidades_por_embalageminteirosimmaior que 0; exemplo 12
ncmtexto ou nullnãoformato ^\d{8}$
ipi_pctnúmeronãode 0 a 100; padrão 0
linhatexto ou nullnãoaté 80 caracteres
ativotrue ou falsenãopadrão true

CompradorErp

CampoTipoObrigatórioO que é
codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
cnpjtextosimCNPJ só com números (14 dígitos), com dígitos verificadores válidos. formato ^\d{14}$; exemplo 12345678000195
razao_socialtextosimde 1 a 200 caracteres
nome_fantasiatexto ou nullnãoaté 200 caracteres
cidadetexto ou nullnãoaté 120 caracteres
uftexto ou nullnãoEstado do comprador, a sigla com 2 letras maiúsculas. Casa com a tabela de preço pelos estados, criada no painel. formato ^[A-Z]{2}$; exemplo SP
regiaotexto ou nullnãoRegião de preço (casa com as tabelas de nível região). até 60 caracteres; exemplo Sudeste
codigo_vendedortexto ou nullnãocodigo_erp do vendedor responsável. de 1 a 60 caracteres; exemplo C001
codigo_tabela_precotexto ou nullnãocodigo_erp da tabela do comprador (nível 2), se houver. de 1 a 60 caracteres; exemplo C001
ativotrue ou falsenãofalse = bloqueado: pedidos dele vão para a revisão. padrão true

VendedorErp

CampoTipoObrigatórioO que é
codigo_erptextosimCódigo do registro no ERP do cliente. de 1 a 60 caracteres; exemplo C001
nometextosimde 1 a 120 caracteres
emailtexto (e-mail) ou nullnãoE-mail que encaminha os pedidos. Outros endereços do mesmo vendedor se cadastram no painel. exemplo carlos.menezes@valeazul.com.br
ativotrue ou falsenãopadrão true

TabelaPrecoErp

CampoTipoObrigatórioO que é
nometextosimde 1 a 120 caracteres; exemplo Tabela Sudeste
niveltextosimEm cada item vale o primeiro que tiver preço: especifico (de um comprador), comprador (tabela atribuída ao comprador), regiao, padrao. valores: especifico, comprador, regiao, padrao
codigo_compradortexto ou nullnãoObrigatório no nível especifico. de 1 a 60 caracteres; exemplo C001
regiaotexto ou nullnãoObrigatória no nível regiao. até 60 caracteres
vigencia_iniciodata (aaaa-mm-dd)simexemplo 2026-10-07
vigencia_fimdata (aaaa-mm-dd) ou nullnãoexemplo 2026-10-07
precoslista de objetosimTodos os preços da tabela: o que não vier aqui sai da tabela. até 20.000 itens
precos[].codigo_produtotextosimcodigo_erp do produto. de 1 a 60 caracteres; exemplo C001
precos[].preconúmerosimPreço líquido (sem impostos) por embalagem de venda. a partir de 0; exemplo 76.04

LoteProdutos

CampoTipoObrigatórioO que é
produtoslista de ProdutoErpsimde 1 a 1.000 itens

LoteCompradores

CampoTipoObrigatórioO que é
compradoreslista de CompradorErpsimde 1 a 1.000 itens

LoteVendedores

CampoTipoObrigatórioO que é
vendedoreslista de VendedorErpsimde 1 a 1.000 itens

ResultadoSincronizacao

CampoTipoObrigatórioO que é
criadosinteirosima partir de 0
atualizadosinteirosima partir de 0
erroslista de objetosimRegistros recusados (o resto do lote é gravado).
erros[].indiceinteirosima partir de 0
erros[].campotextosim
erros[].mensagemtextosim

EventoPedido

CampoTipoObrigatórioO que é
idtexto (uuid)simIdentificador deste aviso (o mesmo nos reenvios).
tipotextosimvalores: pedido.aprovado
criado_emdata e hora (ISO 8601, com fuso)simexemplo 2026-09-30T16:13:00-03:00
pedidoPedidosim

EventoTeste

CampoTipoObrigatórioO que é
idtexto (uuid)simIdentificador deste aviso.
tipotextosimsempre teste
criado_emdata e hora (ISO 8601, com fuso)simexemplo 2026-09-30T16:13:00-03:00

RespostaAviso

Corpo opcional da resposta 2xx do ERP.

CampoTipoObrigatórioO que é
numero_erptextonãoSe o ERP já lançou o pedido ao receber o aviso, devolva o número aqui e ele fica confirmado na hora. de 1 a 60 caracteres