O que o ERP precisa ter
Os endpoints de inventário que o seu ERP expõe para o BIX abrir o inventário, enviar a contagem e encerrar, sem digitação.
Na página anterior, o seu ERP envia para o BIX o que a loja vai contar. Aqui é o caminho de volta: terminada a contagem, o BIX envia o resultado para o ERP, que ajusta o estoque. Para isso o ERP precisa expor um pequeno conjunto de endpoints de inventário, que o BIX chama em três momentos: abrir, enviar a contagem e encerrar.
sequenceDiagram
participant BIX as BIX
participant ERP as Seu ERP
participant App as App na loja
Note over BIX: tarefa de contagem criada
BIX->>ERP: 1. abrir o inventário da loja
ERP-->>BIX: id do inventário no ERP
Note over ERP: saldo congelado neste momento
BIX->>App: tarefa liberada para a loja
App->>BIX: contagens, recontagens, divergência aprovada
BIX->>ERP: 2. enviar a contagem (em lotes)
BIX->>ERP: 3. encerrar o inventário
ERP-->>BIX: processando
BIX->>ERP: 4. consultar o resultado (opcional)
ERP-->>BIX: ajuste apurado por produto
Os endereços abaixo são o padrão do BIX. Se o seu ERP já tem uma API de inventário com outros nomes e outro formato, o conector do BIX é ajustado a ela na implantação: o que importa é o ERP saber fazer as quatro coisas.
1. Abrir o inventário
O BIX abre o inventário no ERP quando a tarefa é criada, antes de a loja começar a contar. É nesse momento que o ERP tira a foto do saldo: o que for vendido ou recebido durante a contagem não entra na comparação.
POST https://seu-erp/inventories
{
"reference": "BIX-5202-0012",
"store_code": "0012",
"competence_date": "2026-11-12",
"description": "BIX 5202 - Loja 0012",
"type": "partial",
"freeze_stock": true,
"scope": {"category_codes": ["01.02"], "product_codes": []}
}
| Campo | O que é |
|---|---|
reference |
A identificação do BIX para esta contagem nesta loja. Única e sempre a mesma, mesmo se a chamada for repetida |
store_code |
O código da loja no ERP, o mesmo código de integração do BIX |
competence_date |
A data do inventário (AAAA-MM-DD) |
type |
full (a loja inteira) ou partial (só o scope) |
freeze_stock |
true: o ERP congela o saldo de comparação na abertura |
scope |
Em partial, os departamentos (category_codes) ou produtos (product_codes) que entram |
Resposta esperada:
{"inventory_id": "88", "status": "open"}
A abertura precisa poder ser repetida
Se a resposta se perder no caminho, o BIX chama de novo com a mesma reference. O ERP
devolve o inventário que já abriu, e não cria um segundo. Se o seu ERP não aceita uma
referência, ele precisa ao menos permitir consultar os inventários abertos da loja pela
descrição: o BIX consulta antes de abrir e só cria o que não existe.
2. Enviar a contagem
Quando a contagem termina no BIX (divergência conferida e recontagens feitas), o BIX envia a quantidade final de cada produto, em lotes de até 500 itens.
POST https://seu-erp/inventories/88/counts
{
"items": [
{"internal_code": "1001", "ean": "7891234567890", "quantity": 42, "warehouse_code": "LOJA"},
{"internal_code": "1002", "ean": "7891234567906", "quantity": 0, "warehouse_code": "LOJA"}
]
}
| Campo | O que é |
|---|---|
internal_code e ean |
O produto, pelos mesmos códigos que o ERP mandou no cadastro |
quantity |
A quantidade contada, em unidades (a caixa de 12 já vem como 12) |
warehouse_code |
O depósito, quando a loja separa loja e depósito |
A quantidade é o total do produto, não um acréscimo: enviar o mesmo item de novo substitui o
valor anterior. É o que deixa o envio seguro de repetir. Produto contado com zero vai com
quantity: 0: é diferente de produto que não foi contado.
Resposta esperada: o resultado de cada item, para o BIX mostrar o que o ERP recusou.
{"results": [{"index": 0, "status": "ok"}, {"index": 1, "status": "error", "detail": "Produto inativo no ERP"}]}
3. Encerrar o inventário
Com tudo enviado, o BIX pede para o ERP encerrar e apurar o ajuste.
POST https://seu-erp/inventories/88/close
O encerramento costuma levar tempo no ERP. A resposta pode ser imediata (202) e o processamento
seguir depois:
{"status": "processing"}
Encerrar sozinho ou deixar para o ERP
Alguns clientes preferem conferir no ERP antes de efetivar o ajuste. Nesse caso o BIX abre e envia a contagem, mas não encerra: quem fecha o inventário é a pessoa responsável, na tela do ERP. A escolha é feita na implantação.
4. Consultar o resultado (opcional)
Se o ERP expõe o resultado, o BIX consulta até o inventário estar fechado e mostra, ao lado da contagem, o ajuste que o ERP efetivou.
GET https://seu-erp/inventories/88
{
"inventory_id": "88",
"status": "closed",
"closed_at": "2026-11-12T21:15:00-03:00",
"items": [
{"internal_code": "1001", "expected": 45, "counted": 42, "difference": -3, "cost_difference": -10.47}
]
}
status vai de open a processing e termina em closed ou error.
Regras do caminho de volta
- O ERP nunca trava a loja. Se o ERP estiver fora do ar, a contagem segue normalmente no BIX, e o envio é refeito quando o ERP voltar.
- Um inventário por loja. Uma tarefa com várias lojas abre um inventário em cada uma.
- Escrita não é repetida às cegas. Abrir é seguro de repetir por causa da
reference, e enviar porque a quantidade substitui. Se o seu ERP não garante uma das duas coisas, avise na implantação. - Autenticação: o BIX chama o ERP com a credencial que o ERP fornecer (token fixo ou OAuth2 com client credentials) e sai de um endereço IP fixo, que pode ser liberado no firewall.
- Cancelar não é obrigatório. Se o ERP não tem como cancelar um inventário aberto, o BIX só o abre quando a tarefa é de fato criada, e quem descarta é a pessoa responsável, na tela do ERP.
Pronto para produção
- [ ] O ERP abre o inventário por loja e devolve o id, sem duplicar quando a abertura é repetida.
- [ ] O ERP recebe a contagem em lotes e substitui a quantidade quando o item vem de novo.
- [ ] O ERP encerra (ou o cliente decidiu encerrar pela tela do ERP).
- [ ] A credencial e o IP de origem do BIX estão liberados no ERP.
- [ ] Um inventário de teste foi aberto, contado e encerrado numa loja piloto.