Atualizar status manualmente

Atualiza manualmente o status de entrega de um pedido para registrar eventos fora do fluxo automático da transportadora.

Conceito relacionado

Entenda o conceito no guia: Envio (Delivery).

Header obrigatório. Toda chamada exige o header x-abbiamo-seller-group-key. Preencha-o no canto superior direito desta página ou veja como obter a sua chave.

Rate limit: 300 requisições por minuto por chave. Acima disso a API retorna HTTP 429.

Quando usar

Use esta chamada para registrar manualmente um evento que aconteceu fora do fluxo automático da transportadora — por exemplo, uma entrega confirmada presencialmente ou uma falha registrada por um operador.

  • A alteração é processada de forma assíncrona: a resposta 200 confirma que o evento foi aceito.
  • No sistema, o status aparece como atualizado manualmente, identificando o token de API que originou a mudança.

event_at

Regras do event_at:

  • Deve estar no formato RFC 3339 (ISO 8601 com timezone). Ex.: 2026-06-16T18:37:12.000Z ou 2026-06-16T15:37:12.000-03:00
  • Não pode ser anterior à data de criação da entrega (erro EVENT_AT_BEFORE_DELIVERY_CREATED_AT)
  • Não pode ser igual ao event_at de um evento anterior da mesma entrega — eventos sequenciais precisam de timestamps distintos
  • Deve refletir quando o evento realmente ocorreu, não o momento da chamada

Entrega existente vs. criar entrega

A chamada cobre os dois cenários automaticamente:

  • Pedido com entrega ativa — o status da entrega atual é atualizado. carrier deve ser igual ao da entrega existente; caso contrário a API responde HTTP 400 (CARRIER_MISMATCH).
  • Pedido sem entrega — uma entrega é criada já com o status informado usando o carrier enviado.

Exemplo — sucesso direto em frota própria

Pedido que ainda não foi despachado: envie status=SUCCESSFUL + carrier=PRIVATE-FLEET e a entrega nasce concluída.

PUT /seller-group/v1/orders/{order_id}/status
x-abbiamo-seller-group-key: <sua-chave>
Content-Type: application/json

{
  "status": "SUCCESSFUL",
  "sub_status": "DELIVERED",
  "carrier": "PRIVATE-FLEET",
  "event_at": "2026-06-16T18:37:12.000Z",
  "observation": "Entrega confirmada pelo operador"
}

Resposta de sucesso:

{ "success": true }

O pedido passa para status_name: SUCCESSFUL, last_delivery_type: PRIVATE-FLEET.

Valores válidos

status / sub_status

Por enquanto este endpoint aceita apenas status: "SUCCESSFUL" com sub_status: "DELIVERED".

statussub_statusDescrição
SUCCESSFULDELIVEREDEntrega realizada com sucesso

carrier

ValorDescrição
PRIVATE-FLEETFrota própria
PUT
/seller-group/v1/orders/{order_id}/status

Authorization

sellerGroupKey
x-abbiamo-seller-group-key<token>

In: header

Path Parameters

order_id*string

Identificador único do pedido

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X PUT "https://example.com/seller-group/v1/orders/string/status" \  -H "Content-Type: application/json" \  -d '{    "status": "SUCCESSFUL",    "sub_status": "DELIVERED",    "event_at": "2026-06-16T18:37:12.000Z",    "observation": "Entregue na portaria"  }'
{
  "success": true
}
{
  "code": "INVALID_STATUS",
  "message": "Status XPTO is not allowed for manual update"
}
{
  "message": "Unauthorized"
}
{
  "code": "INVOICE_NOT_FOUND_OR_NOT_IN_SELLER_GROUP",
  "message": "Invoice not found or not belongs to seller group",
  "status": 404
}

Nesta página