Pedidos
Como funcionam os pedidos da Venddor, o ciclo de status, o modelo de sub-pedidos e o mapa de todas as rotas.
Um pedido é o registro de uma compra: quem comprou, o que, por quanto, como vai pagar, para onde vai e em que etapa está. Ele nasce no checkout da loja (ou por esta API, quando a venda vem de um ERP, de um PDV ou do atendimento) e acompanha toda a vida da compra: pagamento, separação, envio, entrega, devolução.
Esta seção documenta a API de pedidos (/api/v1/admin/orders...). Valores em centavos, datas RFC 3339, ids UUID e todas as operações do ciclo da venda: remessas, faturas, reembolsos, lote e fluxo de status.
Como funciona
O ciclo de vida de um pedido
O caminho mais comum numa loja padrão. Pago é um passo opcional entre pendente e enviado (muitos gateways levam o pedido direto a Processando quando o pagamento é aprovado). Cancelado, Falho, Em espera, Reembolsado e Chargeback são os desvios.
code | Letra | Quando acontece |
|---|---|---|
pending | O | O pedido foi recebido e aguarda pagamento ou confirmação. |
processing | P | Pagamento aprovado ou pedido em preparação. |
paid | A | Pagamento confirmado (passo opcional). |
on_hold | H | Parado por alguém da loja, à espera de algo. |
failed | F | Pagamento recusado. O estoque volta. |
shipped | S | O pacote saiu da loja. |
delivered | C | O cliente recebeu. |
completed | K | Concluído, sem pendências de pós-venda. |
cancelled | I | Cancelado. O estoque volta. Pode ser reaberto. |
refunded | R | Dinheiro devolvido. Estado final. |
chargeback | Z | O cliente contestou o pagamento no cartão. |
Essa é a instalação padrão. Cada loja pode renomear, esconder e criar status, e mudar letras. As regras de quais mudanças são permitidas estão em Alterar o status.
O fluxo típico de uma integração (ERP, WMS)
- Buscar pedidos novos
Chame Listar pedidos filtrando pelo status inicial e pela data do último pedido que você processou. Guarde o id de cada pedido: ele é a chave para todo o resto.
- Ler o detalhe
Consultar pedido devolve itens, endereços, pagamento e sub-pedidos. Importe no seu sistema.
- Confirmar a importação
Registre a importação no pedido, com uma observação interna ou o código do pedido no ERP (Alterar pedido).
- Despachar
Crie a remessa com o código de rastreio e depois mude o status para enviado. O cliente recebe o e-mail de envio.
- Tratar exceções
Cancelamentos pedidos pelo cliente (Cancelamentos), devoluções e reembolsos (Reembolsos).
Conceitos-chave
Formato da API
| Item | Como a API trabalha |
|---|---|
| Autenticação | Bearer JWT de um usuário administrador (POST /api/v1/auth/login) |
| Permissão | Privilégios view_orders (leitura) e manage_orders (escrita) |
| Ids | UUID em string |
| Dinheiro | Inteiro em centavos: 4990 |
| Data | RFC 3339 em UTC (created_at) |
| Status | Letra em status e código em status_text: "P", "processing" |
| Lista | {"orders":[...],"total","page","per_page","total_pages"} |
| Erros | {"error":"...","detail":"..."} |
Autenticação
Faça login (POST /api/v1/auth/login com {"email","password"}) e use access_token como Bearer. O login tem limite de requisições (429): guarde o token e reaproveite-o até expirar. Cada rota exige um privilégio do usuário; sem ele a resposta é 403 com o privilégio que faltou.
Ids
Todo id é um UUID em string (a8a3c7a3-5f15-45a8-a385-4f20fbf8b722), no caminho, na query e no corpo.
Dinheiro, datas e fuso
Todo valor é inteiro em centavos (22500 = R$ 225,00), e cada pedido traz também campos *_str em decimal. Datas são RFC 3339 em UTC. O filtro de data por dia (date_from/date_to) trabalha em dias inteiros.
Pedido pai e sub-pedidos
Uma compra com itens de sellers diferentes gera um pedido pai (o que o cliente vê) e um sub-pedido por seller (o que o seller cuida). O pai não deve ser alterado à mão: o status dele é calculado a partir dos filhos. Veja Sub-pedidos.
Cancelar, reembolsar e excluir
Cancelar muda o status e devolve o estoque; se o pedido já estava pago, a plataforma estorna o pagamento no gateway antes de cancelar (ou você reembolsa). Reembolsar devolve o pagamento. Excluir remove o registro. São três coisas diferentes: Cancelar e excluir, Reembolsos.
Recursos opcionais da loja
Algumas rotas dependem de um recurso que a loja precisa ter ligado: o fluxo de status personalizado e o acompanhamento ao cliente (order-status-flow), custo e lucro, pagamentos diretos. Quando desligado, a rota responde 403 {"error":"module_disabled","module":"..."}. As páginas indicam quais rotas são assim.
Endpoints
Auth: Admin é o administrador (Bearer).
| Método | Rota | O que faz | Auth | Página |
|---|---|---|---|---|
| GET | /api/v1/admin/orders | Lista pedidos | Admin | Listar pedidos |
| GET | /api/v1/admin/orders/{id} | Consulta um pedido | Admin | Consultar pedido |
| GET | /api/v1/admin/orders/{id}/data | Registros auxiliares do pedido | Admin | Consultar pedido |
| POST | /api/v1/admin/orders | Cria pedido | Admin | Criar pedido |
| PUT | /api/v1/admin/orders/{id} | Altera campos simples | Admin | Alterar pedido |
| PUT | /api/v1/admin/orders/{id}/edit | Edição completa | Admin | Alterar pedido |
| PUT | /api/v1/admin/orders/{id}/status | Muda o status | Admin | Alterar o status |
| GET | /api/v1/admin/orders/{id}/allowed-transitions | Destinos de status permitidos | Admin | Alterar o status |
| POST | /api/v1/admin/orders/{id}/force-status | Força uma mudança de status | Admin | Alterar o status |
| POST | /api/v1/admin/orders/{id}/sync-status | Recalcula o status do pedido pai | Admin | Alterar o status |
| GET | /api/v1/admin/orders/{id}/timeline | Linha do tempo | Admin | Histórico do pedido |
| DELETE | /api/v1/admin/orders/{id} | Cancela o pedido | Admin | Cancelar e excluir |
| DELETE | /api/v1/admin/orders/{id}/permanent | Exclui de forma permanente | Admin | Cancelar e excluir |
| POST | /api/v1/admin/orders/bulk | Ação em até 100 pedidos | Admin | Ações em lote |
| GET | /api/v1/admin/orders/{id}/sub-orders | Sub-pedidos de um pedido pai | Admin | Sub-pedidos |
| GET | /api/v1/admin/orders/{id}/parent | Pedido pai de um sub-pedido | Admin | Sub-pedidos |
| GET | /api/v1/admin/orders/{id}/shipments | Lista as remessas | Admin | Remessas e rastreio |
| POST | /api/v1/admin/orders/{id}/shipments | Cria remessa | Admin | Remessas e rastreio |
| PUT | /api/v1/admin/orders/{id}/shipments/{shipmentId} | Atualiza remessa | Admin | Remessas e rastreio |
| PUT | /api/v1/admin/orders/{id}/shipments/{shipmentId}/tracking | Dados públicos de rastreio | Admin | Remessas e rastreio |
| GET | /api/v1/admin/orders/{id}/tracking-events | Eventos da transportadora | Admin | Rastreio da transportadora |
| GET | /api/v1/admin/order-tracking | Acompanhamento por CNPJ | Admin | Rastreio da transportadora |
| GET | /api/v1/admin/order-tracking/{id} | Acompanhamento de um pedido | Admin | Rastreio da transportadora |
| GET | /api/v1/admin/shipment-carriers | Transportadoras ativas | Admin | Rastreio da transportadora |
| GET | /api/v1/admin/orders/refunds | Lista reembolsos | Admin | Reembolsos |
| GET | /api/v1/admin/orders/pending-refunds | Estornos pendentes | Admin | Reembolsos |
| POST | /api/v1/admin/orders/{id}/resolve-refund | Resolve um estorno pendente | Admin | Reembolsos |
| GET | /api/v1/admin/order-cancellations | Solicitações de cancelamento | Admin | Cancelamentos |
| POST | /api/v1/admin/order-cancellations/{id}/approve | Aprova o cancelamento | Admin | Cancelamentos |
| POST | /api/v1/admin/order-cancellations/{id}/reject | Recusa o cancelamento | Admin | Cancelamentos |
| GET | /api/v1/admin/orders/{id}/invoice | Fatura em JSON ou HTML | Admin | Fatura e NF-e |
| GET | /api/v1/admin/orders/{id}/invoice.pdf | Fatura em PDF | Admin | Fatura e NF-e |
| POST | /api/v1/admin/orders/{id}/invoice/send | Envia a fatura por e-mail | Admin | Fatura e NF-e |
| POST | /api/v1/admin/orders/bulk-invoice.pdf | PDF com várias faturas | Admin | Fatura e NF-e |
| GET | /api/v1/admin/orders/{orderId}/nfe | NF-e do pedido | Admin | Fatura e NF-e |
| GET | /api/v1/admin/orders/{id}/packing-slip | Romaneio (JSON) | Admin | Romaneio |
| GET | /api/v1/admin/orders/{id}/packing-slip.pdf | Romaneio (PDF) | Admin | Romaneio |
| GET | /api/v1/admin/orders/{id}/shipments/{shipmentId}/packing-slip | Romaneio da remessa (JSON) | Admin | Romaneio |
| GET | /api/v1/admin/orders/{id}/shipments/{shipmentId}/packing-slip.pdf | Romaneio da remessa (PDF) | Admin | Romaneio |
| GET | /api/v1/admin/orders/{id}/credit-note | Nota de crédito | Admin | Nota de crédito |
| POST | /api/v1/admin/orders/{id}/credit-note | Gera a nota de crédito | Admin | Nota de crédito |
| GET | /api/v1/admin/orders/{id}/credit-note.pdf | Nota de crédito (PDF) | Admin | Nota de crédito |
| GET | /api/v1/admin/orders/{id}/credit-audit | Auditoria de crédito | Admin | Dados financeiros |
| GET | /api/v1/admin/orders/{id}/payment-statistics | Histórico de pedidos do comprador | Admin | Dados financeiros |
| GET | /api/v1/admin/orders/{orderID}/payment-splits | Rateio do pagamento | Admin | Dados financeiros |
| GET | /api/v1/admin/orders/{id}/custo-lucro | Custo e lucro | Admin | Dados financeiros |
| GET | /api/v1/admin/order-statuses | Lista os status | Admin | Status de pedido |
| GET | /api/v1/admin/order-statuses/{code} | Consulta um status | Admin | Status de pedido |
| POST | /api/v1/admin/order-statuses | Cria um status | Admin | Status de pedido |
| PUT | /api/v1/admin/order-statuses/{code} | Altera um status | Admin | Status de pedido |
| DELETE | /api/v1/admin/order-statuses/{code} | Remove um status | Admin | Status de pedido |
| GET, PUT | /api/v1/admin/order-statuses/{code}/descriptions | Traduções do status | Admin | Traduções dos status |
| GET, PUT | /api/v1/admin/order-status-flow | Lê e salva o fluxo de status | Admin | Fluxo de status |
| POST | /api/v1/admin/order-status-flow/validate | Valida um fluxo | Admin | Fluxo de status |
| POST | /api/v1/admin/order-status-flow/templates/{key} | Aplica um modelo de fluxo | Admin | Fluxo de status |
| GET | /api/v1/admin/order-status-block | Bloqueio de status (compatibilidade) | Admin | Fluxo de status |
Erros comuns
- Presumir que a letra é a inicial do nome:
Cé entregue (não cancelado), cancelado éI. Leia o cadastro em Status de pedido. - Achar que criar remessa envia o pedido. A remessa grava o rastreio e avisa o cliente, mas só mudar o status move o pedido para enviado.
- Tratar pai e sub-pedidos como pedidos independentes ao somar vendas. A lista traz os dois; somar tudo conta o dinheiro em dobro. Ignore itens com
parent_id, ou ignore os pais, mas nunca os dois. - Enviar dinheiro em decimal. Os valores são centavos inteiros (
4990), não"49.90". - Pular etapas ao mudar o status. Entre os status padrão só valem as transições permitidas; consulte Alterar o status.
- Repetir
POST /api/v1/admin/ordersdepois de um timeout semidempotency_key. Isso cria um pedido duplicado e baixa o estoque duas vezes.