Criar pedido
Cria um pedido em nome de um cliente, com itens, endereços e forma de pagamento, como um ERP, um PDV ou o atendimento fazem.
Use esta operação quando o pedido não nasce no checkout da loja: um representante digitou a venda por telefone, o ERP gera o pedido a partir de uma proposta, ou um sistema externo precisa registrar uma compra. O cliente final continua comprando pelo checkout da loja; essa rota é para integrações e para a equipe da loja.
Ao criar, a plataforma recalcula os preços a partir do catálogo, baixa o estoque, grava o histórico de status e dispara o evento de pedido criado (e-mails e demais reações configuradas na loja). Se os itens são de sellers diferentes, o pedido é dividido em um pedido pai e um sub-pedido por seller (o pai vem com is_parent_order e os ids dos filhos em suborder_ids).
/api/v1.0/ordersAdminCriar um pedido
Autenticação: HTTP Basic (e-mail:chave_de_api) de um administrador, ou Authorization: Bearer <JWT>. Também responde em /api/orders; nessa forma, user_id e product_id podem ser enviados como ids decimais.
Corpo da requisição
user_idstringobrigatóriopayment_idstringobrigatóriopix, boleto ou pagamento-na-entrega. Veja as formas cadastradas na loja.productsarrayobrigatórioItens do pedido. Pelo menos um.
product_idstringobrigatório/api/orders).amountintegerpadrão: 10, negativo, decimal ou null são recusados.pricestringstatusstringO pending, P processing, C completed, D refunded, F failed, I cancelled, B on_hold. Qualquer outro valor vira pending. O padrão (pendente) é o que você quer na maioria dos casos.user_dataobjectDados do cliente e endereços. Envie sempre, principalmente o CEP de entrega.
firstnamestringlastnamestringemailstringcustomer_email também), o pedido é gravado com api@venddor.com.br.b_addressstringb_citystringb_statestringb_zipcodestringb_countrystringBR).s_addressstrings_citystrings_statestrings_zipcodestrings_countrystringBR).customer_emailstringuser_data.email.customer_namestringuser_data.firstname e lastname; sem eles, grava API Customer.shipping_idsarraycoupon_codesarraycoupon_codes), mas não recalculam o preço.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1.0/orders" \
-u "$EMAIL:$API_KEY" \
-H "Content-Type: application/json" \
-d '{
"user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"payment_id": "pagamento-na-entrega",
"products": [
{ "product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035", "amount": 2 }
],
"user_data": {
"firstname": "Maria", "lastname": "Souza", "email": "maria.souza@example.com",
"b_address": "Avenida Paulista, 1000", "b_city": "São Paulo", "b_state": "SP",
"b_zipcode": "01310-100", "b_country": "BR",
"s_address": "Avenida Paulista, 1000", "s_city": "São Paulo", "s_state": "SP",
"s_zipcode": "01310-100", "s_country": "BR"
}
}'Resposta
{
"order_id": "3f73310d-bfdd-4713-a664-305c08eda58b",
"order_data": {
"order_id": "3f73310d-bfdd-4713-a664-305c08eda58b",
"is_parent_order": "N",
"parent_order_id": "",
"user_id": "f12f30a9-cbec-40ba-98f1-b7fa8f2e8e10",
"company_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36",
"total": "240.00",
"subtotal": "230.00",
"discount": "0.00",
"shipping_cost": "10.00",
"tax_subtotal": "0.00",
"payment_tax": "0.00",
"shipping_tax": "0.00",
"status": "O",
"timestamp": 1791749845,
"order_number": "PEDIDO-20261011-0002",
"email": "maria.souza@example.com",
"currency": "BRL",
"lang_code": "pt-BR",
"payment_method": { "payment": "pagamento-na-entrega", "payment_id": "pagamento-na-entrega" },
"products": [
{
"item_id": "dd60b2a2-291e-4d06-b392-f5626075f919",
"product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
"product_code": "SD-002373",
"product": "Notebook Slim Rosa",
"price": "115.00",
"amount": 2,
"discount": "0.00",
"subtotal": "230.00",
"total": "230.00"
}
],
"payment_info": { "payment_method": "pagamento-na-entrega", "payment_status": "pending" },
"coupon_codes": [],
"promotion_ids": [],
"suborder_ids": []
}
}Campos da resposta
order_idstring/api/orders). Guarde-o: é a chave para todas as outras operações.order_dataobjectsuborder_idsarraysuborders_dataarraysuborder_ids: o resumo de cada sub-pedido.Erros
| Status | Quando | Corpo |
|---|---|---|
| 400 | Campo obrigatório faltando | {"message":"user_id is required","status":400}, {"message":"products is required","status":400}, {"message":"payment_id is required","status":400} |
| 400 | amount inválido | {"message":"invalid_quantity: products.amount must be a positive whole number","status":400} |
| 400 | Produto inexistente ou sem frete calculável | {"message":"shipping_data_incomplete: product ... is unavailable ...","status":400} ou {"message":"shipping_service_unavailable: a shipping method is required for physical products","status":400} |
| 401 | Sem credenciais ou chave de API inválida | {"message":"Invalid credentials","status":401} |
| 403 | Usuário que não é administrador | {"message":"Forbidden: admin scope required","status":403} |