Listar pedidos
Retorna os pedidos da loja, do mais novo para o mais antigo, com filtros e paginação.
Use esta operação para varrer os pedidos da loja: um ERP que busca os pedidos novos a cada poucos minutos, um painel de BI, ou uma tela de busca. A lista traz o resumo de cada pedido (totais, status, cliente, pagamento). Para ver itens, endereços e histórico, abra o pedido com Consultar pedido.
A lista inclui pedidos pai e sub-pedidos no mesmo vetor. Em uma compra com produtos de mais de um seller (lojista), a plataforma cria um pedido pai e um sub-pedido por seller (veja Sub-pedidos). Para ignorar os sub-pedidos, descarte os itens que têm pai (parent_id não nulo).
/api/v1/admin/ordersAdminLista os pedidos
Autenticação: Authorization: Bearer <token> de um usuário administrador com o privilégio view_orders ou manage_orders. O token vem de POST /api/v1/auth/login (o login tem limite de requisições: guarde o token em vez de logar a cada chamada).
Query parameters
pageintegerpadrão: 1per_pageintegerpadrão: 20sort_bystringpadrão: created_atcreated_attotalorder_numberstatuscustomer_namecustomer_emailcreated_at.sort_dirstringpadrão: descascdescstatusstringpending, processing, shipped...) ou pela letra (O, P, S...) do cadastro de status da loja. Status que não existe no cadastro devolve lista vazia.payment_statusstringpendingauthorizedcapturedpaidrefundedfailedpaid é aceito como sinônimo de captured.payment_methodstringpix, credit_card, boleto...), sem diferenciar maiúsculas.customer_iduuidvendor_iduuiddate_fromstringYYYY-MM-DD ou RFC 3339. Inclusive.date_tostringYYYY-MM-DD o dia inteiro entra; com horário, o limite é inclusivo.min_totalintegermax_totalintegersearchstringproduct_searchstringcpfstringcnpjstringshipping_method_iduuidassigned_tostringassigned_to=), traz os pedidos sem responsável.state_codestringSP), igualdade exata.city_namestringdistrict_namestringpostal_codestringcountry_codestringBR), igualdade exata.has_document_typestringnota_fiscal). Exige o recurso de documentos do pedido.missing_document_typestringExemplo de requisição
curl "$BASE_URL/api/v1/admin/orders?status=processing&date_from=2026-10-01&per_page=50&sort_by=total&sort_dir=desc" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"orders": [
{
"id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"order_number": "PEDIDO-20261010-0004",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"vendor_name": "Loja Seller Teste",
"customer_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"subtotal": 30000,
"shipping_total": 0,
"tax_total": 0,
"discount_total": 7500,
"total": 22500,
"currency": "BRL",
"payment_method": "pix",
"payment_status": "captured",
"sales_channel": "web",
"shipping_method": "Frete Grátis acima de R$199",
"shipping_method_id": "50000000-0000-0000-0000-000000000003",
"shipping_method_name": "Frete Grátis acima de R$199",
"customer_email": "maria.souza@example.com",
"customer_name": "Maria Souza",
"customer_notes": "",
"ip_address": "203.0.113.10",
"is_guest": false,
"buyer_phone": "11999990000",
"buyer_cpf": "123.456.789-09",
"created_at": "2026-10-11T02:56:25.843882Z",
"updated_at": "2026-10-11T02:56:38.131475Z",
"status": "P",
"status_text": "processing",
"order_id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
"user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"company_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"company_name": "Loja Seller Teste",
"total_str": "225.00",
"subtotal_str": "300.00",
"shipping_cost_str": "0.00",
"tax_subtotal_str": "0.00",
"discount_str": "75.00",
"payment": "pix",
"timestamp": 1791687385,
"firstname": "Maria",
"lastname": "Souza",
"email": "maria.souza@example.com"
}
],
"total": 2310,
"page": 1,
"per_page": 20,
"total_pages": 116
}Campos da resposta
ordersarrayorders[].iduuidorder_id repetem o mesmo valor.orders[].order_numberstring-V1, -V2...orders[].parent_iduuidorders[].vendor_iduuidorders[].customer_iduuidis_guest: true).orders[].subtotalinteger30000 = R$ 300,00).orders[].shipping_totalintegerorders[].tax_totalintegerorders[].discount_totalintegerorders[].totalintegerorders[].statusstringorders[].status_textstringpending, processing...), ou o código próprio da loja para status personalizados.orders[].payment_statusstringpendingauthorizedcapturedrefundedfailedorders[].sales_channelstringweb, pos, whatsapp...).orders[].created_atstringorders[].updated_atstringorders[].buyer_phonestringorders[].buyer_cpfstringorders[].total_strstring"225.00"), para quem prefere não converter centavos. O mesmo vale para subtotal_str, shipping_cost_str, tax_subtotal_str e discount_str.orders[].timestampintegercreated_at.totalintegerpageintegerper_pageintegertotal_pagesintegerErros
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem credenciais ou token expirado | {"error":"missing authorization header"} ou {"error":"invalid or expired token"} |
| 403 | Usuário sem o privilégio view_orders/manage_orders | {"error":"insufficient privileges","privilege_required_any":["manage_orders","view_orders"]} |
| 429 | Limite de requisições (por exemplo, login repetido) | {"error":"rate limit exceeded","detail":"too many requests, please try again later"} |
| 500 | Falha interna, ou UUID inválido em customer_id/vendor_id, ou data inválida em date_from/date_to | {"error":"failed to list orders","detail":"o valor \"garbage\" não é um timestamp with time zone válido. Corrija o campo e reenvie."} |