VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Pedidos do seller

Mudar o status do pedido

Move o pedido do seller de um status para outro (enviado, entregue, cancelado) e consulta os próximos status possíveis.

O status diz em que etapa o pedido está. Mudá-lo é a operação mais importante do atendimento: baixa ou devolve estoque, avisa o cliente por e-mail, grava uma linha no histórico e, no cancelamento de um pedido já pago, estorna o pagamento. O seller muda o status do próprio sub-pedido e só para os destinos que a plataforma lhe permite (veja a tabela na visão geral).

Os códigos de status guardados no banco são letras (P, S...), mas nesta rota o seller envia o nome por extenso (shipped). Para saber que nome mandar, use a rota de próximos status.

Mudar o status

PUT/api/v1/vendor/orders/{id}/statusSeller

Muda o status de um pedido do seller

Sem fluxo de status personalizado na loja, o seller pode definir:

statusQuando
shippedDespachar.
deliveredConfirmar a entrega.
cancelledCancelar um pedido ainda não enviado, entregue, concluído, cancelado ou reembolsado.
pending, processing, on_holdSó para reabrir um pedido cancelled.

Com o módulo order-status-flow ligado e uma matriz salva, quem manda é a coluna "seller" da matriz da loja, e a lista fixa acima deixa de valer (a trava do cancelamento continua).

Parâmetros de caminho

iduuidobrigatório
Id do sub-pedido do seller.

Corpo da requisição

statusstringobrigatório
Novo status, por extenso (shipped, delivered, cancelled...). Mandar a letra (S) é recusado quando a loja não usa fluxo próprio.
reasonstring
Justificativa. Fica no histórico do pedido. É obrigatória quando o fluxo da loja exige justificativa para aquela mudança.
public_notestring
Texto que o cliente vê na linha do tempo do acompanhamento do pedido (módulo de acompanhamento).

Exemplo de requisição: mudar o status

bash
curl -X PUT "$BASE_URL/api/v1/vendor/orders/e148b6aa-d495-4b89-92ab-f38b5979a43f/status" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "status": "shipped", "public_note": "Saiu hoje pelos Correios" }'

Resposta: mudar o status

200Pedido atualizado
json
{
  "id": "e148b6aa-d495-4b89-92ab-f38b5979a43f",
  "order_number": "PEDIDO-20261011-0001-V1",
  "vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
  "total": 24000,
  "status": "S",
  "status_text": "shipped",
  "payment_status": "captured",
  "updated_at": "2026-10-11T15:20:00.120000Z"
}

A resposta é o pedido inteiro (campos como em Consultar pedidos), já com o novo status em letra e status_text por extenso.

Consultar os próximos status

GET/api/v1/vendor/orders/{id}/allowed-transitionsSeller

Lista os próximos status possíveis de um pedido

Devolve para onde o pedido pode ir a partir do status atual. Use-a para montar a lista de ações da tela em vez de fixar a lista no seu código.

Parâmetros de caminho

iduuidobrigatório
Id do sub-pedido do seller.

Resposta: próximos status

200Sem fluxo personalizado
json
{
  "transitions": [
    { "code": "O", "label_key": "pending" },
    { "code": "H", "label_key": "on_hold" },
    { "code": "A", "label_key": "paid" },
    { "code": "S", "label_key": "shipped" },
    { "code": "I", "label_key": "cancelled" },
    { "code": "R", "label_key": "refunded" },
    { "code": "Z", "label_key": "chargeback" }
  ]
}
200Com fluxo personalizado da loja
json
{
  "flow_active": true,
  "transitions": [{ "code": "S", "label_key": "shipped" }],
  "targets": [
    {
      "code": "shipped",
      "letter_code": "S",
      "name": "Shipped",
      "name_pt": "Enviado",
      "color": "#8b5cf6",
      "requires_reason": false
    }
  ]
}

Campos da resposta

transitionsarray
Destinos possíveis. Cada um tem code (a letra) e label_key (o código por extenso, que é o que a rota PUT .../status espera).
flow_activeboolean | omitted
true quando a loja usa fluxo de status personalizado. Ausente caso contrário.
targetsarray | omitted
Só com fluxo ativo: destinos já com rótulo (name, name_pt), color, letter_code e requires_reason (se a mudança exige justificativa em reason).

Erros

StatusQuandoCorpo de exemplo
401Token ausente ou inválido.{"error":"missing authorization header"}
403O token não é de um usuário seller, ou ele não tem privilégio de pedidos.{"error":"insufficient vendor privileges","privilege_required_any":["vendor_view_orders", "..."]}
403O pedido é de outro seller, é o pedido pai, ou está fora da carteira do representante.{"error":"you do not have access to this order"}
403Status de destino que o seller não pode definir. A frase em detail vem em português.{"error":"vendor_status_not_allowed","detail":"O lojista só pode marcar o pedido como enviado, entregue ou cancelado, ou reabrir um pedido cancelado."}
403Reabrir (pending, processing, on_hold) um pedido que não está cancelado.{"error":"vendor_reopen_requires_cancelled","detail":"Só um pedido cancelado pode voltar para pendente, em processamento ou em espera."}
403Fluxo da loja: o seller não pode fazer essa mudança.{"error":"transition_not_allowed_for_actor","detail":"..."}
400Corpo que não é JSON, ou status ausente.{"error":"status is required"}
400Mudança inválida a partir do status atual, ou status que a loja não tem.{"error":"failed to update order status","detail":"invalid_transition: from delivered to P (...)"}
400Fluxo da loja não prevê a transição.{"error":"transition_not_in_flow","detail":"..."}
404O pedido não existe.{"error":"order not found"}
409Cancelar um pedido já enviado, entregue, concluído, cancelado ou reembolsado.{"error":"vendor_cancel_not_allowed","detail":"Não é possível cancelar um pedido com status \"S\": ..."}
422O fluxo exige justificativa e reason veio vazio; ou o status de destino foi aposentado.{"error":"reason_required","detail":"..."} ou {"error":"status_retired","detail":"..."}
500Falha ao ler o pedido.{"error":"failed to get order","detail":"..."}
O cancelamento de um pedido pago devolve o dinheiro

Cancelar um pedido já pago pelo seller estorna o pagamento na mesma operação, como no cancelamento feito pela loja. Confira o payment_status antes de cancelar e use reason para registrar o motivo.

A lista de próximos status pode mostrar mais do que o seller pode fazer

Sem fluxo personalizado, allowed-transitions devolve os destinos da máquina de estados da plataforma (inclui paid, refunded e chargeback), e não só os que o seller pode definir. Se você mandar um desses, a resposta é 403 vendor_status_not_allowed. Para o seller, trate shipped, delivered e cancelled (e a reabertura de cancelados) como os destinos reais.

Enviado é duas chamadas

Crie a remessa com o código de rastreio e só então mude o status para shipped. A remessa avisa o cliente, mas não move o pedido.

Veja também

  • Remessas e rastreio
  • Consultar pedidos
  • Cancelamentos pedidos pelo cliente
Anterior
Consultar pedidos
Próxima
Remessas e rastreio
Nesta página
  • Mudar o status
  • Exemplo de requisição: mudar o status
  • Resposta: mudar o status
  • Consultar os próximos status
  • Resposta: próximos status
  • Erros
  • Veja também