Painel do Administrador
Gerencie clientes e credenciais de acesso
| Nome / Razão Social | Email / Login | Documento | Telefone | Plano | Lojas | Valor | Status | Ações |
|---|
Planos
Cadastre planos informando a quantidade de lojas permitidas e o valor a pagar
| Plano | Quantidade de Lojas | Valor Mensal | API | Status | Ações |
|---|
Integrações globais
Credenciais do aplicativo usadas por todos os sellers do Hub
Mercado Livre
iFood
Shopee
TikTok Shop
Visão Geral do Hub B2B
Gerencie seus produtos, lojas, pedidos e integrações
Utilize o menu lateral para navegar entre as opções completas do sistema.
Central de Notificações
Perguntas, mensagens e reclamações dos canais conectados
Selecione uma conversa à esquerda para ver o histórico e responder.
Pedidos manuais
Pedidos cadastrados à mão no Hub (sem integração)
| Origem | Pedido | Cliente | Data | Itens | Valor | Status | Ações |
|---|
Mercado Livre
Pedidos sincronizados da API do Mercado Livre (order + envio + pagamento + faturamento).
| Canal | Tipo | ID | Cliente | Data | Itens | Valor | Status | Faturamento | Ações |
|---|
Canal
Integração em desenvolvimento
Em breve
Esta integração ainda não está disponível. Em breve você poderá sincronizar pedidos deste canal no Hub.
EM BREVEPedidos iFood
Venda completa capturada via Events/Order API
| Pedido | Cliente | Status | Tipo | Data | Valor | Ações |
|---|
Detalhe do Pedido iFood
—
Dados do Pedido
Cliente
Resumo
Itens do Pedido
Entrega
Status da logística
Clique em “Atualizar entrega” para buscar a situação atual.
Formas de pagamento
Totais
Cancelar pedido
Escolha o motivo e confirme. Esta ação cancela o pedido no iFood.
Pedidos Shopee
Pedidos sincronizados via Open API v2
| Pedido | Cliente | Status | Data | Itens | Valor | Ações |
|---|
Detalhe do Pedido Shopee
—
Dados do Pedido
Resumo
Itens do Pedido
| # | Produto | SKU | Qtd | Unit. | Total |
|---|
Entrega
Pedidos TikTok Shop
Pedidos sincronizados via TikTok Shop API
| Pedido | Cliente | Status | Data | Itens | Valor | Ações |
|---|
Detalhe do Pedido TikTok Shop
—
Dados do Pedido
Resumo
Itens do Pedido
| # | Produto | SKU | Qtd | Unit. | Total |
|---|
Entrega
Faturamento (TikTok BR)
Dados fiscais do Get Order Detail: CPF/CNPJ, nome no documento e status de upload de NF.
Detalhe da Venda ML
Campos mapeados da API do Mercado Livre
Dados da Venda
Comprador
Itens do Pedido
| # | ID da venda | ID do anúncio | SKU | Título | Qtd | Preço unit. | Taxa ML | Total | Tipo do anúncio | Status |
|---|
Dados de Envio
Custos de Frete
Pagamento
Resumo Financeiro
Faturamento (billing-info)
Cancelamento / Reclamação
Cadastro de Pedido
Dados do Pedido
Status do Pedido
Itens do Pedido
| Produto | SKU | Qtd. | Valor Unit. | Total | Ações |
|---|
Forma de Pagamento
Resumo Financeiro
Produtos Gerais
Catálogo Hub — anúncios por canal ficam nos submenus (vínculo pelo SKU)
| Produto | SKU | EAN | Categoria | Integração | Venda | Estoque | Status | Ações |
|---|
Anúncios
Vinculados ao Produto Gerais pelo SKU
| SKU | Produto | ID externo | Status | Estoque | Loja | Ações |
|---|
Editar anúncio — Mercado Livre
SKU Hub: — · Produto: — · Abrir no Hub
Anúncio · Shopee
Assistente de publicação · SKU Hub: — · Produto: — · Abrir no Hub
Loja e categoria
Categoria é obrigatória para criar o anúncio nesta loja.
Dados do anúncio
Título, SKU, peso e descrição que a Shopee recebe.
Preço e estoque
Anúncio normal: um preço e o estoque geral do produto.
Variações
Cada opção ativa da grade do Hub vira um model na Shopee. Preço e estoque são os da variação.
| Opção | SKU | Preço (R$) | Estoque | Model ID |
|---|
Kit
Verificando permissão da conta…
| Componente | SKU | Qtd | Item Shopee | Principal |
|---|
Publicar na Shopee
Confira loja, categoria e dados. Publicar envia o anúncio para a loja escolhida.
Anúncio · TikTok Shop
Assistente de publicação · SKU Hub: — · Produto: — · Abrir no Hub
Loja e categoria
A categoria define os atributos obrigatórios do TikTok Shop.
Dados do anúncio
Preço e estoque
Anúncio normal: um preço e o estoque geral.
Variações
Preço e estoque de cada opção vêm da grade do produto. Ao publicar, cada SKU sobe no TikTok.
| Opção | SKU | Preço | Estoque | TikTok SKU |
|---|---|---|---|---|
| Sem grade. | ||||
Atributos obrigatórios
Preencha o que a categoria do TikTok exige antes de publicar.
Publicar no TikTok Shop
Anúncio Amazon
Assistente de publicação. Anúncio simples ou com variação (parent/child). Alterações levam 1–5 min para refletir.
Loja e vínculo
Catálogo Amazon
Dados do anúncio
NONE é anúncio normal. PARENT e CHILD montam a variação.
Campos obrigatórios
Publicar na Amazon
Pedidos Amazon
Pedidos sincronizados da SP-API (Brasil)
| Pedido | Título | SKU / ASIN | Total | Status | Data | |
|---|---|---|---|---|---|---|
| Nenhum pedido. Clique em Buscar pedidos. | ||||||
Pedidos 99Food
Pedidos recebidos da OpenAPI 99Food
| Pedido | Título | SKU | Total | Status | Ações |
|---|---|---|---|---|---|
| Nenhum pedido 99Food. | |||||
Pedidos Nuvemshop
Pedidos da loja. Fechar, reabrir e cancelar na API.
| Pedido | Título | SKU | Total | Status | Ações |
|---|---|---|---|---|---|
| Nenhum pedido Nuvemshop. | |||||
Detalhe do pedido Nuvemshop
—
Dados do pedido
Cliente
Resumo
Itens do pedido
| Produto | SKU | Qtd | Preço |
|---|
Entrega
Pagamento
Dados da nota
Endereço de faturamento
Anúncio · iFood
Assistente de publicação · SKU Hub: — · Produto: — · Abrir no Hub
Loja e categoria
Catálogo e categoria são obrigatórios para criar o item nesta loja.
Dados do item
Preço e estoque
Anúncio normal usa este preço e o estoque geral. Na grade, cada opção leva o próprio preço e estoque.
Extras do nicho
Campos adicionais conforme o nicho da loja.
Complementos ficam em Cadastro → Adicionais.
Publicar no iFood
Anúncio · Nuvemshop
Assistente de publicação · SKU Hub: — · Produto: — · Abrir no Hub
Dados do anúncio
Sem seleção, as categorias que já estão na loja permanecem.
Status e visibilidade
Dados fiscais
Origem, tipo, NCM e CEST da nota. Sem pontuação.
Variante
SKU, código de barras, peso, medidas e custo saem do cadastro do Hub. Produto simples usa o estoque geral. Produto grade envia só o estoque de cada variação.
Cada variação usa o próprio preço e o estoque da grade. O estoque geral do produto não entra neste anúncio.
| Opção | SKU | Estoque | Preço de venda | Preço promocional |
|---|
Visível na loja
Envio e mídia
Atributos
| Opção | SKU | Estoque |
|---|
Até 3. Nome e valor precisam ir juntos. Vale para produto com uma variante. Se o produto do Hub for grade, as opções ativas sobem juntas neste anúncio.
Publicar na Nuvemshop
Produto simples sobe com o estoque geral. Se for grade, cada opção ativa sobe com o próprio preço e estoque.
Anúncio · 99Food
Assistente de publicação · SKU Hub: — · Produto: — · Abrir no Hub
Loja
Dados do item
Preço e estoque
Anúncio normal usa este preço e o estoque geral.
Publicar na 99Food
Cadastro de Produto
Dados do Produto
Prefira definir o tipo na aba Integrações. Kit virtual no ML: aba Informações de kit.
Prefira o tipo na aba Integrações. Associa variação e estoque/preço por opção.
Ao ativar, a aba Adicionais lista os grupos cadastrados. Cada grupo respeita o mínimo e o máximo.
Preço
Status e Visibilidade
Logística e Dimensões
Estoque geral
Este estoque vale para todas as integrações. Na grade, cada variação tem o próprio estoque.
Imagens do Produto
Até 5 imagens. A primeira é a principal.
Tabelas de Preço do Produto
O valor da tabela é gravado ao sair do campo.
| Tabela | Valor de Custo | Valor Padrão | Valor da Tabela |
|---|
Marketplace e loja
Kits virtuais: 100% parametrizados com a API do Mercado Livre. Outros marketplaces em breve.
Parceiros não certificados: cadastre o usuário de teste no formulário da documentação de Kits Virtuais. Sem isso a API retorna “User is not allowed…” — o Hub tenta listar anúncios já publicados nesta loja como alternativa.
Componentes do kit
2 a 6 User Products. O primeiro é o principal (herda domínio). Qty máx. 10 por item. Composição imutável após publicar.
Selecionados (0/6)
Kit já publicado: composição bloqueada pela API.
Dados do anúncio
Com automático, o campo price não é enviado no create.
Estoque e frete são herdados/calculados pelo ML — não editáveis no kit.
Revisão
Só aparecem canais com loja ativa. Ao ligar, você vai para a tela do anúncio para completar e publicar. Salvar no Hub atualiza anúncios já publicados.
Nenhuma loja conectada. Conecte Mercado Livre, iFood, Shopee, TikTok, Amazon, 99Food ou Nuvemshop para ligar canais neste produto.
Mercado Livre
SimplesLigue para editar e publicar o anúncio.
iFood
SimplesLigue para editar e publicar o anúncio.
Shopee
SimplesLigue para editar e publicar o anúncio.
TikTok Shop
SimplesLigue para editar e publicar o anúncio.
Amazon
SimplesLigue, busque o ASIN no catálogo e publique o anúncio.
Nuvemshop
SimplesPublica o produto no catálogo da loja.
99Food
SimplesLigue para editar e publicar o anúncio.
Grade do produto
Escolha uma variação cadastrada e defina SKU, EAN, estoque, custo e preço de cada opção ativa.
| Ativa | Opção | SKU (opc.) | EAN (opc.) | Estoque | Custo (R$) | Preço (R$) |
|---|---|---|---|---|---|---|
| Selecione uma variação para listar as opções. | ||||||
Adicionais do produto
Escolha um adicional cadastrado e marque as opções deste produto. O mínimo e o máximo do grupo continuam valendo: deixe ativas pelo menos a quantidade mínima.
Categorias
Cadastro interno de categorias e subcategorias do hub
| Categoria | Sub categoria | Ações |
|---|
Unidades de Medida
Unidades usadas no cadastro de produtos
| Nome | Sigla | Ações |
|---|
Variações
Cadastre uma variação e as opções dentro dela (ex.: P AZUL, M BRANCO)
| Variação | Opções | Ações |
|---|
Adicionais
Grupos reutilizáveis para iFood (sabores, extras, ponto da carne). Associe nos produtos para publicar em massa.
| Grupo | Opções | Preço | Ações |
|---|
Formas de pagamentos
Cadastre as condições financeiras usadas nos pedidos
| ID | Nome | Tipo | Parcelas | Taxa | Status | Ações |
|---|
Tabelas de Preço
Gerencie as tabelas de preço e vincule produtos com valores específicos
| # | Nome da Tabela | Descrição | Status | Ações |
|---|
Produtos da Tabela
Só esta tabela. Altere um preço e ele grava ao sair do campo, ou marque vários e use Salvar Preços.
Produtos Vinculados
Altere o valor da tabela para cada produto e cada variação
| Produto | Cód. SKU | Valor de Custo | Valor Padrão | Valor da Tabela |
|---|
Lojas & Integrações
Gerencie todas as suas plataformas conectadas
Importar anúncios
Mercado Livre
Anúncios da conta
A busca filtra na hora por título, SKU, código MLB e palavras-chave.
| Foto | Título | Categoria | Preço | Estoque | Status | Ações |
|---|
Mensagem rápida
Cadastre respostas prontas para o chat da Central de Notificações. A marcada como automática é enviada ao receber uma pergunta.
| Mensagem | Envio | Ações |
|---|
Carregando…
Documentação da API
REST API para integrar produtos, tabelas de preço e pedidos com o Hub B2B.
Autenticação
Toda requisição de catálogo leva o Bearer Token e o Seller ID da conta. Os dois estão na tela de Credenciais.
Token Master
O administrador usa um token único, o Token Master, gerado em Credenciais. Ele pode ser revogado e gerado de novo. Esse token não fica preso a uma loja: em cada requisição, o cabeçalho X-Seller-Id diz em qual loja a chamada entra. O valor é o Seller ID que aparece nas Credenciais dessa loja.
Quando quiser utilizar o Token Master deve passar o Seller ID da loja onde vai fazer a requisição.
POST /api/produtos
Authorization: Bearer plux_TOKEN_MASTER
X-Seller-Id: SELLER_ID_DA_LOJA_X
Content-Type: application/json
{
"nome": "Produto Exemplo",
"sku": "PROD-001",
"categoria": "Geral",
"estoque": 1
}
Sem o Seller ID, a API responde 422. Com o Seller ID de outra loja, o produto, o pedido ou o cadastro fica nessa outra loja. O token da própria loja continua exigindo o Seller ID dela.
Cabeçalho obrigatório
Authorization: Bearer plux_SEU_TOKEN X-Seller-Id: SEU_SELLER_ID Content-Type: application/json
Conta identificada pelo token
O token plux_ autentica a conta. O cabeçalho X-Seller-Id é o Seller ID dessa mesma conta. Sem os dois, a API responde 422 ou 401. Nas vendas de marketplace, a query seller_id continua sendo o ID da loja no canal, além desses cabeçalhos.
POST /api/produtos
Authorization: Bearer plux_SEU_TOKEN
X-Seller-Id: SEU_SELLER_ID
Content-Type: application/json
{
"nome": "Produto Exemplo",
"sku": "PROD-001"
}
seller_id só nas vendas dos canais
Nas rotas /api/{canal}/vendas o seller_id vai na query e é obrigatório. O valor é o identificador da loja naquele canal:
Mercado LivreID numérico da contaShopeeshop_idTikTok Shopshop_idiFoodmerchant idNuvemshopid da lojaAmazonSelling Partner ID (merchant id)99FoodAppShopIDGET /api/amazon/vendas?seller_id=A1SELLERID Authorization: Bearer plux_SEU_TOKEN
Acesse Credenciais para copiar o token e o Seller ID. Envie os dois em todas as chamadas de categorias, unidades, variações, adicionais, tabelas de preço, formas de pagamento, pedidos e produtos.
Produto simples
Produto sem grade e sem adicionais. Crie, consulte e atualize pelo SKU. Categoria e subcategoria são criadas se não existirem.
Campos do POST /api/produtos
| Campo ERP | Campo API | Obrigatório | Observação |
|---|---|---|---|
| Nome do Produto | nome | Sim | |
| Código de Barras | gtin ou codigo_barras | Não | EAN/GTIN |
| SKU Interno | sku | Sim | Identificador único |
| Categoria Interna | categoria | Sim | Criada se não existir |
| Subcategoria | subcategoria | Não | Criada se não existir. Ex.: Bebidas > Refrigerantes |
| Descrição Completa | descricao | Não | |
| Marca | marca | Não | Nome da marca |
| Fabricante | fabricante | Não | |
| Unidade de Medida | unidade ou unidade_medida | Não | Sigla. Ex.: UN, CX |
| Custo (preço) | custo | Não | Padrão 0 |
| Venda (preço) | preco ou preco_venda | Não | Padrão 0 |
| Quantidade em Estoque | estoque ou quantidade_estoque | Sim | |
| Estoque mínimo | estoque_minimo ou estoque_min | Não | Padrão 0 |
| Dimensões | altura_cm, largura_cm, comprimento_cm | Não | Números inteiros em centímetros. Aliases: altura, largura, comprimento |
| Peso | peso_kg, peso ou peso_liquido | Não | Decimal em kg |
| Imagem principal | imagem ou imagem_url | Não | URL pública. O Hub baixa e salva como imagem principal, preservando as imagens extras. |
| Status | status | Não | ativo, inativo ou rascunho. Se omitido, fica ativo |
Esses campos valem no POST e no PATCH. No PATCH, o SKU vai na URL. O Hub grava só o campo cujo valor mudou. Se o valor enviado for igual ao que já está salvo, esse campo não é alterado.
/api/produtos?page=1&per_page=20
Listar produtos
page começa em 1. per_page padrão 20, máximo 100. A resposta traz produtos e paginacao (total, pagina, ultima_pagina, por_pagina).
/api/produtos
Criar produto
Request Body
{
"sku": "ERP-001",
"codigo_barras": "7891234567890",
"nome": "Produto do ERP",
"categoria": "Eletrônicos",
"subcategoria": "Celulares > Smartphones",
"descricao": "Descrição completa do produto.",
"marca": "Marca Exemplo",
"custo": 1200.00,
"preco_venda": 1999.90,
"quantidade_estoque": 50,
"estoque_minimo": 5,
"unidade": "UN",
"altura_cm": 10,
"largura_cm": 20,
"comprimento_cm": 30,
"peso_kg": 1.5,
"imagem": "https://erp.exemplo.com/imgs_produtos/produto.jpg",
"status": "ativo"
}
Response 201 Created
{
"message": "Produto criado.",
"produto": {
"sku": "ERP-001",
"gtin": "7891234567890",
"nome": "Produto do ERP",
"custo": 1200,
"preco": 1999.9,
"estoque": 50,
"estoque_minimo": 5,
"marca": "Marca Exemplo",
"unidade_medida": { "sigla": "UN" },
"altura_cm": 10,
"largura_cm": 20,
"comprimento_cm": 30,
"peso_kg": 1.5,
"imagens": [{ "url": "/imagem/produtos/uuid/arquivo.jpg", "ordem": 0 }],
"status": "ativo",
"categoria": { "nome": "Eletrônicos" },
"subcategoria": { "caminho": "Celulares > Smartphones" }
}
}
Produto grade
Os mesmos campos do produto simples, mais o bloco variacao. O Hub cria a variação e as opções. Atualize com PATCH /api/produtos/{sku} enviando o mesmo JSON: só muda a opção ou o campo que veio diferente.
/api/produtos
Criar produto grade
{
"sku": "ERP-GRADE-001",
"codigo_barras": "7891234567890",
"nome": "Produto do ERP",
"categoria": "Eletrônicos",
"subcategoria": "Celulares > Smartphones",
"descricao": "Descrição completa do produto.",
"marca": "Marca Exemplo",
"custo": 1200.00,
"preco_venda": 1999.90,
"quantidade_estoque": 50,
"estoque_minimo": 5,
"unidade": "UN",
"altura_cm": 10,
"largura_cm": 20,
"comprimento_cm": 30,
"peso_kg": 1.5,
"imagem": "https://erp.exemplo.com/imgs_produtos/produto.jpg",
"status": "ativo",
"variacao": {
"nome": "Tamanho e Cor",
"opcoes": [
{ "nome": "P AZUL", "estoque": 5, "custo": 20, "preco": 49.90 },
{ "nome": "M BRANCO", "estoque": 8, "custo": 22, "preco": 54.90 }
]
}
}
Cada opção leva estoque, custo e preço. Se vier só o nome, o Hub copia custo e preço de venda do produto e grava estoque 0. O estoque do produto passa a ser a soma das opções ativas. Opção ativa precisa de custo e preço acima de 0,01.
Produto adicionais
Os mesmos campos do produto simples, mais o array adicionais. O Hub cria o grupo e as opções. Atualize com PATCH /api/produtos/{sku} enviando o mesmo JSON: só muda o que veio diferente.
/api/produtos
Criar produto com adicionais
{
"sku": "PIZZA-001",
"codigo_barras": "7891234567890",
"nome": "Pizza",
"categoria": "Pizzas",
"descricao": "Descrição completa do produto.",
"marca": "Marca Exemplo",
"custo": 12.00,
"preco_venda": 39.90,
"quantidade_estoque": 10,
"estoque_minimo": 2,
"unidade": "UN",
"altura_cm": 4,
"largura_cm": 30,
"comprimento_cm": 30,
"peso_kg": 0.8,
"imagem": "https://erp.exemplo.com/imgs_produtos/pizza.jpg",
"status": "ativo",
"tem_adicionais": true,
"adicionais": [
{
"nome": "Bebidas",
"tipo": "OFFER_UNIT",
"min": 1,
"max": 2,
"opcoes": [
{ "sku": "REFRI-001", "preco": 0, "ativo": true },
{ "sku": "REFRI-002", "preco": 6.5, "ativo": true }
]
}
]
}
tipo: SPECIFICATION, OFFER_UNIT, INGREDIENTS ou CUTLERY. A ordem do array é a ordem salva. Não combine com grade.
Variações
Catálogo opcional. O produto com grade já cria a variação. Aqui você lista, consulta, renomeia e exclui pelo nome.
Identificadores
| Recurso | Identificador na API | Exemplo |
|---|---|---|
| Variação | nome | Tamanho e Cor |
| Opção | nome | P, M, G, GG, P AZUL |
Na URL, espaços vão com %20 (ex.: /api/variacoes/Tamanho%20e%20Cor). Escopos: produtos:read / produtos:write.
/api/variacoes
Criar variação + opções
Request Body
{
"nome": "Tamanho e Cor",
"opcoes": [
"P AZUL",
"P VERMELHO",
"M AZUL",
"M BRANCO",
"G",
"GG",
"GG VERMELHO"
]
}
Response 201 Created
{
"message": "Variação criada.",
"variacao": {
"nome": "Tamanho e Cor",
"total_opcoes": 7,
"opcoes": [
{ "nome": "P AZUL", "ordem": 1 },
{ "nome": "P VERMELHO", "ordem": 2 },
{ "nome": "M AZUL", "ordem": 3 },
{ "nome": "M BRANCO", "ordem": 4 },
{ "nome": "G", "ordem": 5 },
{ "nome": "GG", "ordem": 6 },
{ "nome": "GG VERMELHO", "ordem": 7 }
]
}
}
/api/variacoes
Listar variações
/api/variacoes/{nome}
Detalhar variação
/api/variacoes/{nome}
Renomear variação
{ "nome": "Grade P/M/G" }
/api/variacoes/{nome}/opcoes
Adicionar opção (ex.: GG)
{ "nome": "GG" }
/api/variacoes/{nome}/opcoes/{opcao}
Excluir opção
/api/variacoes/{nome}
Excluir variação
Tabelas de Preço
Gerencie tabelas de preço e associe o valor de venda de cada produto por SKU. Ideal para integração com ERP.
Campos principais
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
nome | string | Sim no cadastro / opcional no upsert | Nome público da tabela. Ex.: Atacado, Varejo, VIP. |
descricao | string | Não | Descrição da política de preço. |
status | string | Não | ativo ou inativo. Padrão: ativo. |
valor | number | Sim no vínculo com produto | Valor de venda do produto naquela tabela. |
Para o ERP, use PUT /api/tabelas-preco/{tabelaPreco}/produtos/{sku}. Se a tabela não existir, o Hub cria; se existir, atualiza o valor do produto sem apagar outros produtos da tabela.
/api/tabelas-preco
Listar tabelas
/api/tabelas-preco/{nome}
Detalhar tabela pelo nome
/api/tabelas-preco
Cadastra uma tabela de preço
Request Body
{
"nome": "Tabela Atacado",
"descricao": "Preços para atacado",
"status": "ativo"
}
Response 201 Created
{
"message": "Tabela de preços criada.",
"tabela": {
"nome": "Tabela Atacado",
"descricao": "Preços para atacado",
"status": "ativo",
"produtos_count": 0
}
}
/api/tabelas-preco/{tabelaPreco}
Atualiza uma tabela de preço
{tabelaPreco}Nome público da tabela de preço. Ex.: Tabela AtacadoRequest Body
{
"nome": "Tabela VIP",
"descricao": "Preços atualizados",
"status": "ativo"
}
Response 200 OK
{
"message": "Tabela de preços atualizada.",
"tabela": {
"nome": "Tabela VIP",
"descricao": "Preços atualizados",
"status": "ativo"
}
}
/api/tabelas-preco/{tabelaPreco}/produtos/{sku}
Criar/atualizar tabela e valor por SKU
{tabelaPreco}Nome da tabela no Hub/API pública. Ex.: Atacado{sku}SKU público do produto já cadastrado no HubEndpoint recomendado para ERP. O Hub cria a tabela se ela não existir e faz upsert do valor do produto em tabela_preco_itens sem remover os demais produtos/preços.
Request Body
{
"nome": "Atacado",
"descricao": "Lista importada do ERP",
"status": "ativo",
"valor": 99.90
}
Response 201 Created / 200 OK
{
"message": "Tabela de preço criada e valor salvo.",
"tabela": {
"nome": "Atacado",
"descricao": "Lista importada do ERP",
"status": "ativo",
"produtos_count": 1
},
"produto": {
"sku": "ERP-001",
"nome": "Produto do ERP",
"valor_tabela": 99.90
}
}
Pedidos
Pedidos do Hub (ERP) ou vendas dos marketplaces. Use o seletor ao lado para alternar.
/api/pedidos
Lista os pedidos do Hub
Campos financeiros e canal
forma_pagamento_idID estável da forma (use em GET /api/formas-pagamento/{id})forma_pagamento_uuidUUID da forma cadastrada no HubfinanceiroResposta com forma, parcelas, taxa_total e total_com_taxacanal_vendaOrigem do pedido: plataforma da loja ou Manual/api/pedidos/exportacao
Exporta pedidos para ERP
Use somente_nao_importados=1 e o filtro status para controlar a importação.
/api/pedidos
Cria pedido no Hub
Campos: data_pedido, cliente_nome, cliente_documento, cliente_telefone, cliente_email, endereço (cep, logradouro, numero_endereco, complemento, bairro, cidade, uf), loja (nome da loja), forma_pagamento_id ou forma_pagamento_nome, status, prioridade, desconto, frete e itens.
Cada item usa sku, produto_nome, quantidade e valor_unitario. O preço gravado é o enviado no item.
/api/pedidos/{numero_pedido}/marcar-importado
Confirma importação ERP
Envie erp_import_id e erp_import_status após criar a venda no ERP.
Authorization: Bearer plux_…, cabeçalho X-Seller-Id (Seller ID do Hub) e query seller_id = ID numérico da conta Mercado Livre.
/api/mercadolivre/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatóriopage / per_pagePaginação HubResponse 200 OK
{
"seller_id": 759409162,
"vendas": [
{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"seller_id": 759409162,
"venda": {
"canal": "Mercado Livre",
"tipo_venda": "Mercado Livre",
"tipo_registro": "venda_item",
"id_venda": "2000001234567890",
"id_pacote": null,
"e_pacote": false,
"mlb_anuncio": "MLB123456789",
"variation_id": null,
"titulo": "Kit ferramentas 40 peças",
"sku": "KIT-40",
"quantidade": 1,
"tipo_anuncio": "Clássico",
"status_venda": "Pago",
"status_detalhe": null,
"data_venda": "2026-08-01T14:22:10-03:00",
"data_update": "2026-08-01T18:01:00-03:00",
"data_fechamento": null,
"data_cancelamento": null,
"motivo_cancelamento": null,
"cancelado_por": null,
"tem_reembolso": false,
"id_reclamacao": null,
"motivo_reclamacao": null
},
"comprador": {
"comprador_id": "112233445",
"nome_comprador": "João Silva"
}
}
],
"paginacao": {
"pagina": 1,
"por_pagina": 20,
"total": 42,
"ultima_pagina": 3
}
}
/api/mercadolivre/vendas/{order_id}
Consulta a venda pelo ID
Devolve a venda já salva no Hub para esse ID.
order_idID do pedido no Mercado Livreseller_idObrigatório (query)GET /api/mercadolivre/vendas/2000001234567890?seller_id=759409162 Authorization: Bearer plux_SEU_TOKEN
Authorization: Bearer plux_… e query seller_id = shop_id da loja Shopee conectada no Hub (mesmo valor de Lojas → seller_id).
/api/shopee/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatóriopage / per_pagePaginação HubGET /api/shopee/vendas?seller_id=123456789&page=1&per_page=20 Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "123456789",
"vendas": [
{
"uuid": "a1b2c3d4-1111-2222-3333-444455556666",
"seller_id": "123456789",
"order": {
"order_sn": "220101ABCDEF",
"order_status": "READY_TO_SHIP",
"create_time": 1726660500,
"update_time": 1726663200,
"buyer_user_id": 7788,
"buyer_username": "Maria Souza",
"fulfillment_flag": "fulfilled_by_local_seller",
"payment_method": "ShopeePay",
"total_amount": 59.8,
"currency": "BRL",
"actual_shipping_fee": 8.5,
"estimated_shipping_fee": 0,
"shipping_carrier": "Shopee Xpress",
"recipient_address": {
"name": "Maria Souza",
"phone": "11999990000",
"full_address": "Rua das Flores, 120 - Centro",
"city": "Campinas",
"state": "SP",
"zipcode": "13010000",
"region": "BR"
},
"item_list": [
{
"item_id": 998877,
"item_name": "Cabo USB-C 2m",
"item_sku": "CABO-USBC-2M",
"model_id": 1001,
"model_sku": "CABO-USBC-2M",
"model_quantity_purchased": 2,
"model_discounted_price": 29.9
}
]
}
}
],
"paginacao": {
"pagina": 1,
"por_pagina": 20,
"total": 1,
"ultima_pagina": 1
}
}
/api/shopee/vendas/{order_sn}
Consulta a venda pelo ID
order_snID do pedido na Shopee (path)seller_idObrigatório (query)GET /api/shopee/vendas/220101ABCDEF?seller_id=123456789 Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "123456789",
"order_id": "220101ABCDEF",
"vendas": [
{
"uuid": "a1b2c3d4-1111-2222-3333-444455556666",
"seller_id": "123456789",
"order": {
"order_sn": "220101ABCDEF",
"order_status": "READY_TO_SHIP",
"create_time": 1726660500,
"update_time": 1726663200,
"buyer_user_id": 7788,
"buyer_username": "Maria Souza",
"fulfillment_flag": "fulfilled_by_local_seller",
"payment_method": "ShopeePay",
"total_amount": 59.8,
"currency": "BRL",
"actual_shipping_fee": 8.5,
"estimated_shipping_fee": 0,
"shipping_carrier": "Shopee Xpress",
"recipient_address": {
"name": "Maria Souza",
"phone": "11999990000",
"full_address": "Rua das Flores, 120 - Centro",
"city": "Campinas",
"state": "SP",
"zipcode": "13010000",
"region": "BR"
},
"item_list": [
{
"item_id": 998877,
"item_name": "Cabo USB-C 2m",
"item_sku": "CABO-USBC-2M",
"model_id": 1001,
"model_sku": "CABO-USBC-2M",
"model_quantity_purchased": 2,
"model_discounted_price": 29.9
}
]
}
}
]
}
Authorization: Bearer plux_… e query seller_id = shop_id da loja TikTok Shop conectada no Hub.
/api/tiktok/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatóriopage / per_pagePaginação HubGET /api/tiktok/vendas?seller_id=998877&page=1&per_page=20 Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "998877",
"vendas": [
{
"uuid": "b2c3d4e5-aaaa-bbbb-cccc-ddddeeeeffff",
"seller_id": "998877",
"order": {
"id": "5764501234567890123",
"order_status": "AWAITING_SHIPMENT",
"create_time": 1726744200,
"update_time": 1726745100,
"buyer_email": "carlos@example.com",
"payment_method_name": "PIX",
"payment": {
"currency": "BRL",
"total_amount": "89.90",
"shipping_fee": "0.00"
},
"recipient_address": {
"name": "Carlos Oliveira",
"phone_number": "21988887777",
"full_address": "Av. Brasil, 500",
"city": "Rio de Janeiro",
"province": "RJ",
"postal_code": "22041080",
"region_code": "BR"
},
"line_items": [
{
"product_id": "1729380000000000000",
"product_name": "Fone Bluetooth TWS",
"seller_sku": "FONE-TWS-PRETO",
"sku_id": "1729380000000000001",
"quantity": 1,
"sale_price": "89.90"
}
],
"packages": [
{
"id": "PKG-9988",
"shipping_provider_name": "TikTok Logistics"
}
]
}
}
],
"paginacao": {
"pagina": 1,
"por_pagina": 20,
"total": 1,
"ultima_pagina": 1
}
}
/api/tiktok/vendas/{order_id}
Consulta a venda pelo ID
GET /api/tiktok/vendas/5764501234567890123?seller_id=998877 Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "998877",
"order_id": "5764501234567890123",
"vendas": [
{
"uuid": "b2c3d4e5-aaaa-bbbb-cccc-ddddeeeeffff",
"seller_id": "998877",
"order": {
"id": "5764501234567890123",
"order_status": "AWAITING_SHIPMENT",
"create_time": 1726744200,
"update_time": 1726745100,
"buyer_email": "carlos@example.com",
"payment_method_name": "PIX",
"payment": {
"currency": "BRL",
"total_amount": "89.90",
"shipping_fee": "0.00"
},
"recipient_address": {
"name": "Carlos Oliveira",
"phone_number": "21988887777",
"full_address": "Av. Brasil, 500",
"city": "Rio de Janeiro",
"province": "RJ",
"postal_code": "22041080",
"region_code": "BR"
},
"line_items": [
{
"product_id": "1729380000000000000",
"product_name": "Fone Bluetooth TWS",
"seller_sku": "FONE-TWS-PRETO",
"sku_id": "1729380000000000001",
"quantity": 1,
"sale_price": "89.90"
}
],
"packages": [
{
"id": "PKG-9988",
"shipping_provider_name": "TikTok Logistics"
}
]
}
}
]
}
Authorization: Bearer plux_… e query seller_id = merchant_id da loja iFood conectada no Hub.
/api/ifood/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatóriopage / per_pagePaginação HubGET /api/ifood/vendas?seller_id=a1b2c3d4-merchant&page=1&per_page=20 Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "a1b2c3d4-merchant",
"vendas": [
{
"uuid": "c3d4e5f6-7777-8888-9999-000011112222",
"seller_id": "a1b2c3d4-merchant",
"order": {
"id": "d4e5f6a7-1111-2222-3333-444455556666",
"orderType": "DELIVERY",
"salesChannel": "IFOOD",
"createdAt": "2026-09-19T19:10:00.000Z",
"customer": {
"id": "cust-9988",
"name": "Ana Paula",
"documentNumber": "11122233344",
"phone": { "number": "11977776666" }
},
"items": [
{
"id": "item-1",
"name": "Combo X-Burguer + Batata",
"externalCode": "COMBO-XB",
"quantity": 1,
"unitPrice": { "value": 42.9 },
"price": { "value": 42.9 }
}
],
"totalPrice": { "value": 47.9, "fees": 0 },
"payments": {
"methods": [{ "method": "CREDIT", "type": "ONLINE", "value": 47.9 }],
"pending": 0
},
"delivery": {
"deliveredBy": "IFOOD",
"deliveryAddress": {
"streetName": "Rua Augusta",
"streetNumber": "1500",
"neighborhood": "Consolação",
"city": "São Paulo",
"state": "SP",
"postalCode": "01304001",
"country": "BR"
}
}
}
}
],
"paginacao": {
"pagina": 1,
"por_pagina": 20,
"total": 1,
"ultima_pagina": 1
}
}
/api/ifood/vendas/{order_id}
Consulta a venda pelo ID
GET /api/ifood/vendas/d4e5f6a7-1111-2222-3333-444455556666?seller_id=a1b2c3d4-merchant Authorization: Bearer plux_SEU_TOKEN
Response 200 OK
{
"seller_id": "a1b2c3d4-merchant",
"order_id": "d4e5f6a7-1111-2222-3333-444455556666",
"vendas": [
{
"uuid": "c3d4e5f6-7777-8888-9999-000011112222",
"seller_id": "a1b2c3d4-merchant",
"order": {
"id": "d4e5f6a7-1111-2222-3333-444455556666",
"orderType": "DELIVERY",
"salesChannel": "IFOOD",
"createdAt": "2026-09-19T19:10:00.000Z",
"customer": {
"id": "cust-9988",
"name": "Ana Paula",
"documentNumber": "11122233344",
"phone": { "number": "11977776666" }
},
"items": [
{
"id": "item-1",
"name": "Combo X-Burguer + Batata",
"externalCode": "COMBO-XB",
"quantity": 1,
"unitPrice": { "value": 42.9 },
"price": { "value": 42.9 }
}
],
"totalPrice": { "value": 47.9, "fees": 0 },
"payments": {
"methods": [{ "method": "CREDIT", "type": "ONLINE", "value": 47.9 }],
"pending": 0
},
"delivery": {
"deliveredBy": "IFOOD",
"deliveryAddress": {
"streetName": "Rua Augusta",
"streetNumber": "1500",
"neighborhood": "Consolação",
"city": "São Paulo",
"state": "SP",
"postalCode": "01304001",
"country": "BR"
}
}
}
}
]
}
Authorization: Bearer plux_… e query seller_id = id da loja Nuvemshop (o mesmo número da loja conectada no Hub). Escopos: pedidos:read para listar, pedidos:write para sincronizar.
/api/nuvemshop/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatório. Id da loja Nuvemshoppage / per_pagePaginação Hub (máx. 100)Response 200 OK
{
"seller_id": "1234567",
"vendas": [
{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"seller_id": "1234567",
"venda": {
"canal": "Nuvemshop",
"id_venda": "18492011",
"numero": 1042,
"titulo": "Camiseta branca",
"sku": "CAM-BR-M",
"nome_comprador": "Maria Souza",
"status": "Pago",
"status_envio": "Não embalado",
"total": "129.90",
"data_venda": "2026-09-28T11:20:00-03:00"
}
}
],
"paginacao": { "pagina": 1, "por_pagina": 20, "total": 1, "ultima_pagina": 1 }
}
/api/nuvemshop/vendas/{order_id}
Consulta o pedido pelo ID
GET /api/nuvemshop/vendas/18492011?seller_id=1234567 Authorization: Bearer plux_SEU_TOKEN
Authorization: Bearer plux_… e query seller_id = Selling Partner ID da Amazon (merchant id da loja conectada no Hub). Escopos: pedidos:read para listar, pedidos:write para sincronizar.
/api/amazon/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatório. Selling Partner IDpage / per_pagePaginação Hub (máx. 100)Response 200 OK
{
"seller_id": "A1SELLERID",
"vendas": [
{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"seller_id": "A1SELLERID",
"venda": {
"canal": "Amazon",
"id_venda": "702-1234567-8901234",
"titulo": "Camiseta branca",
"sku": "CAM-BR-M",
"nome_comprador": "Maria Souza",
"status": "Pago",
"order_status": "Unshipped",
"total": "129.90",
"data_venda": "2026-09-28T11:20:00-03:00"
}
}
],
"paginacao": { "pagina": 1, "por_pagina": 20, "total": 1, "ultima_pagina": 1 }
}
/api/amazon/vendas/{order_id}
Consulta o pedido pelo ID
GET /api/amazon/vendas/702-1234567-8901234?seller_id=A1SELLERID Authorization: Bearer plux_SEU_TOKEN
Authorization: Bearer plux_… e query seller_id = AppShopID da loja 99Food conectada no Hub. Pedidos novos chegam pelo webhook. Escopos: pedidos:read para listar, pedidos:write para sincronizar.
/api/99food/vendas
Lista vendas
Lista as vendas já salvas. Use page e per_page.
seller_idObrigatório. AppShopIDpage / per_pagePaginação Hub (máx. 100)Response 200 OK
{
"seller_id": "APP_SHOP_ID",
"vendas": [
{
"uuid": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"seller_id": "APP_SHOP_ID",
"venda": {
"canal": "99Food",
"id_venda": "99887766",
"titulo": "Combo lanche",
"sku": "COMBO-01",
"nome_comprador": "João Lima",
"status": "Novo",
"total": "42.90",
"data_venda": "2026-09-28T11:20:00-03:00"
}
}
],
"paginacao": { "pagina": 1, "por_pagina": 20, "total": 1, "ultima_pagina": 1 }
}
/api/99food/vendas/{order_id}
Consulta o pedido pelo ID
GET /api/99food/vendas/99887766?seller_id=APP_SHOP_ID Authorization: Bearer plux_SEU_TOKEN
Formas de pagamentos
Formas de pagamento cadastradas no Hub.
/api/formas-pagamento
Lista formas de pagamento
ativoOpcional. Use 1 para listar apenas ativas/api/formas-pagamento/{id}
Busca forma por ID
Use o forma_pagamento_id retornado em GET /api/pedidos.
Categorias e subcategorias
Identificador da categoria: nome. Subcategoria: caminho (ex.: Camisetas > Básicas). Cabeçalhos: Authorization e X-Seller-Id.
/api/categoriasLista categorias e subcategorias/api/categorias/{nome}Detalha uma categoria/api/categoriasCria categoriaBody: {"nome":"Vestuário"}
/api/categorias/{nome}/subcategoriasCria subcategoriaBody: {"caminho":"Camisetas > Básicas"}. Também aceita nome no lugar de caminho.
/api/categorias/{nome}RenomeiaBody: {"nome":"Novo nome"}. Subcategoria: PATCH /api/categorias/{nome}/subcategorias/{caminho} com caminho.
Unidades de medida
Identificador: sigla. No produto, envie essa sigla em unidade.
/api/unidades-medidaLista/api/unidades-medida/{sigla}Detalha pela sigla/api/unidades-medidaCriaBody: {"nome":"Unidade","sigla":"UN"}. Atualizar: PATCH /api/unidades-medida/{sigla} com nome e sigla.
Adicionais
Catálogo opcional. O produto com adicionais já cria o grupo. Identificador: nome.
| Campo | Obrigatório | Observação |
|---|---|---|
nome | Sim | Nome do grupo |
tipo | Não | SPECIFICATION, OFFER_UNIT, INGREDIENTS ou CUTLERY. Padrão SPECIFICATION |
min | Não | Mínimo de opções que o cliente precisa escolher |
max | Não | Limite de escolha do cliente. Não limita quantas opções o grupo oferece |
opcoes[].nome | Sim, nos outros tipos | No tipo OFFER_UNIT o nome vem do produto |
opcoes[].sku | Sim, no tipo OFFER_UNIT | SKU de um produto já cadastrado no Hub. A opção fica associada a esse produto |
opcoes[].preco | Não | Se omitir no tipo OFFER_UNIT, usa o preço do produto. Pode enviar outro valor |
/api/adicionaisLista grupos e opções/api/adicionais/{nome}Detalha um grupo/api/adicionaisCria grupoTipo bebida/extra (OFFER_UNIT): cada opção leva o sku de um produto que já existe. O nome da opção fica o nome desse produto. O preco é opcional: se não enviar, usa o preço do produto; se enviar, vale o valor informado.
Exemplo: {"nome":"Bebidas","tipo":"OFFER_UNIT","min":0,"max":1,"opcoes":[{"sku":"REFRI-001","preco":0},{"sku":"REFRI-002","preco":6.5}]}
A resposta de cada opção traz nome, preco e produto_sku.
Nova opção depois: POST /api/adicionais/{nome}/opcoes com sku e, se quiser, preco.
Nos outros tipos, a opção continua com nome e preco livres.
/api/adicionais/{nome}Atualiza o grupoBody: {"nome":"Bebidas","tipo":"OFFER_UNIT","min":1,"max":2}
Dados de faturamento
Dados fiscais dos pedidos do Hub.
/api/pedidos/{numero_pedido}
Dados do cliente no pedido Hub
Enquanto não houver endpoint específico de faturamento Hub, use o detalhe do pedido: cliente_nome, cliente_documento, endereço e demais campos fiscais do cadastro.
Envio
Dados de envio dos pedidos do Hub.
/api/pedidos/{numero_pedido}
Dados de envio no pedido Hub
Enquanto não houver endpoint específico de envio Hub, use o detalhe do pedido (endereço, frete e status de entrega do cadastro).
Códigos de Resposta
Todas as respostas de erro seguem um padrão JSON consistente.
Estrutura de erro
{
"message": "Descrição do erro",
"errors": {
"campo": ["mensagem de validação"]
}
}
Tabela de códigos
200OKRequisição bem-sucedida201CreatedRecurso criado com sucesso401UnauthorizedToken ausente ou inválido403ForbiddenSem permissão para o recurso404Not FoundRecurso não encontrado422UnprocessableFalha de validação dos campos500Server ErrorErro interno no servidorPostman Collection
Baixe o JSON oficial para importar no Postman e testar a integração com segurança.
Importe a collection e preencha duas variáveis: access_token (Bearer plux_) e seller_id (Seller ID da tela de Credenciais). Cada requisição já manda Authorization e X-Seller-Id. A documentação de cada chamada, dentro do Postman, traz o exemplo de body e de resposta.
/downloads/Hub-B2B-API.postman_collection.json
Download da collection
Collection do Token Master. Importe e preencha a variável Master Token (tela Credenciais do admin) e seller_id (Seller ID da loja onde a chamada entra). Toda requisição já manda Authorization e X-Seller-Id. Cada chamada da collection orienta a passar o Seller ID da loja. Sem ele, a API responde 422.
/downloads/Hub-B2B-API-Master.postman_collection.json
Download da collection do Token Master
Laboratório de API
Ambiente de desenvolvimento
Teste endpoints com token e Seller ID, monitore consumo e depure a integração.
Console de desenvolvimento