Remessas e rastreio
Lista e cria as remessas do pedido do seller, com transportadora, código de rastreio e itens, e atualiza o rastreio mostrado ao cliente.
Uma remessa (envio) é um pacote que saiu do seller: ela diz quais itens, em que quantidade, por qual transportadora e com qual código de rastreio. Um pedido pode ter várias remessas (envio parcial: três itens saem hoje, dois amanhã) e a plataforma controla quanto de cada item ainda falta enviar. Quando a remessa nasce com código de rastreio, ela passa a "enviada" e o cliente recebe um e-mail de envio com o código e o link da transportadora.
Status de uma remessa
| Nome | Letra (resposta) | Significado |
|---|---|---|
pending | N | Criada, ainda sem despacho (sem código de rastreio). |
shipped | A | Despachada. É o status de uma remessa criada com código de rastreio. |
in_transit | P | Em trânsito. |
out_for_delivery | W | Saiu para entrega. |
awaiting_pickup | H | Aguardando retirada. |
delivered | C | Entregue. |
delivery_failed | F | Tentativa de entrega falhou. |
returned | D | Devolvida; os itens voltam a contar como "a enviar". |
lost | L | Extraviada. |
canceled | I | Cancelada. |
Listar as remessas
/api/v1/vendor/orders/{id}/shipmentsSellerLista as remessas de um pedido do seller
Parâmetros de caminho
iduuidobrigatórioResposta: listar
{
"order_id": "e148b6aa-d495-4b89-92ab-f38b5979a43f",
"count": 1,
"shipments": [
{
"id": "45171534-2fbd-46ca-973a-132149a564da",
"order_id": "e148b6aa-d495-4b89-92ab-f38b5979a43f",
"tracking_code": "BR123456789BR",
"carrier": "Correios",
"status": "A",
"shipped_at": "2026-10-11T20:16:39.661262Z",
"created_at": "2026-10-11T20:16:39.661262Z",
"updated_at": "2026-10-11T20:16:39.661262Z",
"items": [
{
"id": "e28a4232-aade-47e5-83e1-2ecda9da3927",
"shipment_id": "45171534-2fbd-46ca-973a-132149a564da",
"order_item_id": "020ead81-da4e-4b70-b80b-88562ba9497a",
"quantity_shipped": 2,
"product_name": "Camiseta Algodão Azul",
"product_sku": "CAM-AZ-M"
}
]
}
]
}Campos da resposta
order_iduuidcountintegershipmentsarray[]) quando ainda não há.shipments[].iduuidshipmentId na atualização do rastreio).shipments[].tracking_codestringshipments[].carrierstringshipments[].statusstringshipments[].notesstringshipments[].shipped_atstring (RFC 3339)shipments[].delivered_atstring (RFC 3339)shipments[].itemsarrayorder_item_id, quantity_shipped, product_name, product_sku, product_image.Criar uma remessa
/api/v1/vendor/orders/{id}/shipmentsSellerCria uma remessa para um pedido do seller
Cria uma remessa com os itens e as quantidades informados. A plataforma confere que os itens são do pedido e que você não envia mais do que o pedido tem (descontadas as remessas anteriores que não foram devolvidas). Com tracking_code, a remessa nasce enviada (A), registra shipped_at e o cliente recebe o e-mail. Sem o código, nasce pendente (N); informe o código depois. mark_shipped despacha mesmo sem código.
Parâmetros de caminho
iduuidobrigatórioCorpo da requisição
itemsarrayobrigatórioItens da remessa. Pelo menos um.
order_item_iduuidobrigatórioitems[].id em Consultar pedidos).quantity_shippedintegerobrigatóriocarrierstringCorreios, Jadlog...).tracking_codestringnotesstringtracking_urlstringhttp ou https, até 2048 caracteres.estimated_delivery_atstringAAAA-MM-DD (meia-noite no fuso de Brasília) ou RFC 3339.public_notestringnotes continua interna.mark_shippedbooleantrue despacha a remessa mesmo sem código de rastreio.Exemplo de requisição: criar
curl -X POST "$BASE_URL/api/v1/vendor/orders/e148b6aa-d495-4b89-92ab-f38b5979a43f/shipments" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"carrier": "Correios",
"tracking_code": "BR123456789BR",
"items": [{ "order_item_id": "020ead81-da4e-4b70-b80b-88562ba9497a", "quantity_shipped": 2 }]
}'Resposta: criar
{
"id": "45171534-2fbd-46ca-973a-132149a564da",
"order_id": "e148b6aa-d495-4b89-92ab-f38b5979a43f",
"tracking_code": "BR123456789BR",
"carrier": "Correios",
"status": "A",
"shipped_at": "2026-10-11T20:16:39.661262Z",
"created_by": "d4613dde-ac7a-431c-9232-50d8cd6ad5fc",
"created_at": "2026-10-11T20:16:39.661262Z",
"updated_at": "2026-10-11T20:16:39.661262Z",
"items": [
{
"id": "e28a4232-aade-47e5-83e1-2ecda9da3927",
"shipment_id": "45171534-2fbd-46ca-973a-132149a564da",
"order_item_id": "020ead81-da4e-4b70-b80b-88562ba9497a",
"quantity_shipped": 2,
"product_name": "Camiseta Algodão Azul",
"product_sku": "CAM-AZ-M"
}
]
}Os campos são os de cada item de shipments na listagem, mais created_by (o usuário que criou).
Atualizar o rastreio
/api/v1/vendor/orders/{id}/shipments/{shipmentId}/trackingSellerAtualiza o rastreio de uma remessa
Grava os dados de rastreio que o cliente vê (link, previsão, texto público) e registra a atualização na linha do tempo do pedido, sem mudar o status. Funciona quando a loja liga o módulo order-status-flow (acompanhamento de pedidos); sem ele a resposta é 403 module_disabled. Envie ao menos um campo. Um código de rastreio novo dispara o e-mail de envio ao cliente.
Parâmetros de caminho
iduuidobrigatórioshipmentIduuidobrigatórioCorpo da requisição
carrierstringtracking_codestringtracking_urlstringhttp ou https, até 2048 caracteres).estimated_delivery_atstringAAAA-MM-DD ou RFC 3339. Vazio limpa a previsão.public_notestringExemplo de requisição: atualizar o rastreio
curl -X PUT "$BASE_URL/api/v1/vendor/orders/$ORDER_ID/shipments/$SHIPMENT_ID/tracking" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"tracking_url": "https://rastreamento.correios.com.br/app/index.php?objeto=BR123456789BR",
"estimated_delivery_at": "2026-10-20",
"public_note": "Saiu do centro de distribuição"
}'Resposta: atualizar o rastreio
{
"id": "45171534-2fbd-46ca-973a-132149a564da",
"carrier": "Correios",
"tracking_code": "BR123456789BR",
"tracking_url": "https://rastreamento.correios.com.br/app/index.php?objeto=BR123456789BR",
"estimated_delivery_at": "2026-10-20T03:00:00Z",
"public_note": "Saiu do centro de distribuição",
"shipped_at": "2026-10-11T20:16:39.661262Z",
"created_at": "2026-10-11T20:16:39.661262Z",
"updated_at": "2026-10-11T21:02:10.114Z"
}Campos da resposta
iduuidcarrierstringtracking_codestringtracking_urlstringestimated_delivery_atstring (RFC 3339)public_notestringshipped_atstring (RFC 3339)Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente ou inválido. | {"error":"missing authorization header"} |
| 403 | O 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", "..."]} |
| 403 | O pedido é de outro seller, ou é o pedido pai. | {"error":"you do not have access to this order"} |
| 403 | Atualizar rastreio com o módulo de acompanhamento desligado. | {"error":"module_disabled","module":"order-status-flow"} |
| 400 | Corpo inválido; items vazio; order_item_id ou quantity_shipped faltando. | {"error":"at least one item is required"}, {"error":"order_item_id is required for each item"}, {"error":"quantity_shipped must be at least 1"} |
| 404 | Pedido, item ou remessa não encontrados. Na atualização, id ou shipmentId que não é UUID também dá isto. | {"error":"order not found"}, {"error":"shipment_not_found"} |
| 422 | Quantidade maior que a ainda não enviada, ou item de outro pedido. | {"error":"cannot ship 2 of item 020ead81-...: only 0 remaining unshipped (total: 2, already shipped: 2)"} |
| 422 | Dados de rastreio inválidos. field é tracking_url, estimated_delivery_at ou tracking; code é invalid, too_long ou nothing_to_update. | {"error":"validation_failed","issues":[{"field":"tracking_url","code":"invalid"}]} |
| 500 | Falha inesperada. | {"error":"failed to create shipment","detail":"..."} |