Visão geral
Um local de estoque é onde os seus produtos ficam guardados: um depósito, uma loja física ou um centro de distribuição. Todo saldo de estoque é contado por local, e é o local que define a origem do frete e o endereço fiscal de um envio.
Este guia cobre o ciclo de vida do local (criar, editar, ativar/desativar), as filiais que ele pode representar e como listar os produtos com saldo em cada local. A movimentação de saldo (entrada e saída de estoque) fica em Produtos: estoque.
Leitura exige o escopo store_stock_locations_read; criar, editar e mudar status exigem store_stock_locations_write.
Conceitos
Tipo de local (location_type):seller_location (depósito ou loja própria, que você gerencia) ou fulfillment (centro de distribuição da plataforma). Locais fulfillment são geridos por um sistema externo (WMS) e são somente leitura pela API: qualquer tentativa de criar, editar ou mudar o status é recusada. Na criação, só seller_location é aceito.
Status (status):available (operacional, entra no cálculo de venda e frete) ou unavailable (desativado, some da conta de disponibilidade, mas preserva o histórico). Não existe DELETE de local — para tirar um local de operação, mude o status para unavailable.
Filial (branch): um local pode estar vinculado a uma filial da empresa (CNPJ próprio) ou à matriz. O vínculo é feito pelo company_branch_id; branch: null na resposta significa matriz. A lista de filiais válidas vem de Filiais disponíveis.
Retirada e produção:allows_pickup marca o local como ponto de retirada pelo cliente; allows_production marca o local como apto a industrialização/produção sob encomenda.
Endereço de logística: para operar (cotar frete, emitir nota), um local precisa de pelo menos um endereço do tipo logistics. Esse cadastro é feito no Portal do Vendedor — hoje não há rota de integração para endereços de local.
O objeto que a API devolve para um local:
{
"location_id": "01K9T…", // ID do local, usado como {locationId} nas rotas
"store_id": 42, // referência interna da loja (não é o store_id da sessão)
"name": "Depósito Central",
"status": "available", // available | unavailable
"location_type": "seller_location", // seller_location | fulfillment (WMS, somente leitura)
"allows_pickup": true, // aceita retirada no local
"allows_production": false, // apto a industrialização
"branch": { // filial vinculada (null = matriz)
"id": "01K9B…", // ID da filial
"name": "Filial Campinas",
"document": "12345678000199" // CNPJ da filial
}
}Locais
A listagem devolve todos os locais da loja — inclusive os desativados e os de fulfillment — e não é paginada. O {locationId} das outras rotas é o location_id retornado aqui.
| Campo | Descrição |
|---|---|
location_id | ID do local, gerado na criação. |
name | Nome do local. Obrigatório na criação. O par nome + tipo é único por loja. |
status | available ou unavailable. Obrigatório na criação — não há valor assumido. |
location_type | Obrigatório na criação, e só seller_location é aceito. fulfillment só aparece na leitura. |
allows_pickup | Marca o local como ponto de retirada. Opcional, default false. |
allows_production | Marca o local como apto a industrialização. Opcional, default false. |
company_branch_id | Vincula o local a uma filial. Envie null para desvincular (matriz). A filial precisa estar ativa e pertencer à empresa da loja. Só no corpo de criação/edição — na leitura, o vínculo volta em branch. |
Não há endpoint de exclusão. Para tirar um local de operação, use
PUT /api/locations-stock/{locationId}/statuscomstatus: "unavailable".
Locais
fulfillmentsão geridos pela plataforma. Criar, editar ou mudar o status de um localfulfillmenté recusado — eles só aparecem na listagem para leitura.
Limite de locais
Cada loja tem um teto de locais. O valor vigente vem em max_locations, na resposta de GET /api/stores/auth/session — leia de lá em vez de fixar um número na integração.
A contagem inclui todos os locais já cadastrados, inclusive os unavailable e os de fulfillment. Desativar um local não libera vaga. Ao atingir o teto, o POST responde 403 orientando a contatar o suporte.
Criar
Envie name, status e location_type — os três são obrigatórios. Repetir o par nome + tipo devolve 409.
{
"name": "Novo Depósito Zona Norte",
"status": "available",
"location_type": "seller_location",
"allows_pickup": false,
"allows_production": false,
"company_branch_id": "01K9B..."
}Editar
O PUT /api/locations-stock/{locationId} aplica só os campos enviados (name, allows_pickup, allows_production, company_branch_id). Para mudar o status, use a rota dedicada de status — o PUT de edição não muda status.
A resposta da rota de status não traz o campo branch. Se precisar do vínculo atualizado depois de ativar ou desativar, consulte o local.
Filiais disponíveis
Lista a matriz e as filiais ativas da empresa, para você escolher o company_branch_id na criação/edição de um local. A matriz vem com uid: null — ou seja, para deixar o local na matriz, omita o campo ou envie null.
{
"headquarters": { "id": null, "name": "Matriz", "document": "12345678000190" },
"branches": [
{ "id": "01K9B...", "name": "Filial Campinas", "document": "12345678000199" }
],
"default_branch": { "id": "01K9B...", "name": "Filial Campinas" }
}Enviar uma filial inativa, de outra empresa ou inexistente devolve 422 no campo company_branch_id.
Endereços do local
O local precisa de um endereço do tipo logistics para cotar frete e emitir nota. Esse cadastro é feito hoje no Portal do Vendedor: as rotas de endereço de local existem na plataforma, mas aceitam apenas a sessão do portal — não funcionam com token de integração. Por isso não estão documentadas aqui.
Se a sua integração cria locais, cadastre o endereço logistics pelo portal antes de considerar o local pronto para operar.
Produtos por local
Lista paginada dos produtos com o saldo daquele local (quantity, reserved_quantity, available_quantity são escopados ao local). Aceita filter[name], filter[sku], filter[search], ordenação por name, sku, created_at, updated_at e per_page (padrão 15). Segue o envelope paginado padrão (data.data + data.meta.pagination).
Para dar entrada ou baixa de saldo em um local, use a movimentação de estoque em Produtos: estoque.
Dados auxiliares
Devolve os valores válidos de location_types, location_statuses e address_types (com rótulos em pt-BR). Use para popular selects no seu sistema. A lista address_types traz todos os tipos de endereço da plataforma; em locais de estoque valem apenas logistics, local_real e local_devolucao.
Fluxo: novo local pronto para operar
| Etapa | Ação | Onde |
|---|---|---|
| 1 | Conferir o teto de locais da loja (max_locations) | GET /api/stores/auth/session |
| 2 | Consultar filiais disponíveis | GET /api/locations-stock/available-branches |
| 3 | Criar o local (seller_location) | POST /api/locations-stock |
| 4 | Cadastrar o endereço logistics do local | Portal do Vendedor |
| 5 | Dar entrada de estoque nos SKUs | Produtos: estoque |
| 6 | Conferir o saldo por local | GET /api/locations-stock/{locationId}/products |
O que pode dar errado
| Erro | Quando acontece | Como tratar |
|---|---|---|
403 FORBIDDEN | Limite de locais da loja atingido no POST. | Não crie mais locais; desativar um local não libera vaga. Contate o suporte para ampliar o limite. |
403 FORBIDDEN | O local existe, mas é de outra loja (no PUT de edição ou de status). | Confira o location_id na listagem da loja autenticada. |
403 FORBIDDEN | Falta o escopo store_stock_locations_read ou store_stock_locations_write. | Conceda o escopo à credencial no Portal do Vendedor. |
409 DUPLICATED | POST com nome + tipo já existente na loja. | Use outro nome ou reative o local existente via status. |
422 VALIDATION_ERROR em location_type | Tentativa de editar ou mudar o status de um local fulfillment. | Locais de fulfillment são somente leitura; não os altere pela API. |
422 VALIDATION_ERROR em company_branch_id | Filial inexistente, inativa ou de outra empresa. | Escolha um id de available-branches. |
422 VALIDATION_ERROR | Campo obrigatório ausente ou inválido (ex.: location_type diferente de seller_location). | Corrija os campos apontados em errors. |
404 NOT_FOUND | locationId inexistente. | Confira o location_id retornado na listagem. |
Para onde ir agora
| Você precisa… | Vá para |
|---|---|
| Dar entrada ou baixa de saldo | Produtos: estoque |
| Entender frete a partir da origem | Pedidos: logística |
| Ver todos os schemas e códigos de erro | Referência: Locais de estoque |

