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

Pedido de visitante

Cria um pedido para quem compra sem conta, a partir do carrinho da sessão.

É o passo final do checkout de quem não tem conta: o visitante já montou o carrinho com o mesmo X-Session-ID, informou contato e endereços, e esta rota transforma o carrinho em pedido. Se o cliente estiver logado (token no cabeçalho), a mesma rota cria o pedido em nome dele e ignora os campos guest_*.

O servidor não confia nos valores do cliente: refaz os itens a partir do carrinho da sessão, recalcula frete, descontos (cupom, PIX) e impostos, e só então grava. Valores monetários são inteiros em centavos (2190 = R$ 21,90).

Pontos principais
  • Precisa do cabeçalho X-Session-ID do carrinho. Sem itens no corpo, o pedido sai do carrinho do servidor; se você enviar items, eles têm de ser idênticos ao carrinho, senão 409 cart_mismatch.
  • Dois módulos da loja controlam o recurso: guest-checkout e a configuração de checkout "permitir compra sem cadastro". Desligado: 403 guest checkout is not enabled.
  • Se a loja exige e-mail verificado (módulo otp-verification), o e-mail precisa ter passado por Verificação por código com a finalidade checkout; senão 422 email_not_verified.
  • Visitante não resgata pontos nem saldo de carteira (400).
  • Mande um idempotency_key próprio. Repetir a chamada com a mesma chave e o mesmo e-mail devolve o pedido original (200) em vez de criar outro.
POST/api/v1/storefront/guest/ordersPública

Criar pedido de visitante

Cabeçalhos

X-Session-IDstringobrigatório
Sessão do carrinho do visitante.

Corpo da requisição

guest_emailstringobrigatório
E-mail do visitante. Precisa conter @ e ..
guest_namestringobrigatório
Nome completo do visitante.
guest_phonestring
Telefone de contato.
payment_methodstringobrigatório
Código da forma de pagamento da loja (pix, credit_card, boleto...).
shipping_addressobjectobrigatório

Endereço de entrega.

first_namestringobrigatório
Nome.
last_namestring
Sobrenome.
address_line1stringobrigatório
Logradouro e número.
address_line2string
Complemento.
districtstring
Bairro.
citystringobrigatório
Cidade.
statestringobrigatório
UF.
postal_codestringobrigatório
CEP.
countrystringobrigatório
País (BR).
phonestring
Telefone.
cpfstring
CPF do destinatário, quando a loja pede.
billing_addressobjectobrigatório
Endereço de cobrança, com os mesmos campos de shipping_address.
itemsarray
Linhas do pedido (product_id uuid, variation_id, quantity). Opcional: o padrão é o carrinho da sessão.
shipping_method_iduuid
Forma de envio escolhida. O frete é recalculado no servidor.
coupon_codestring
Cupom aplicado. O desconto é revalidado no servidor.
customer_notesstring
Observação do cliente.
idempotency_keystring
Chave de repetição segura, escolhida por você.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/guest/orders" \
  -H "X-Session-ID: $SESSION_ID" \
  -H "Content-Type: application/json" \
  -d '{
  "guest_email": "maria.souza@example.com",
  "guest_name": "Maria Souza",
  "guest_phone": "(11) 91234-5678",
  "payment_method": "pix",
  "shipping_address": {
    "first_name": "Maria",
    "last_name": "Souza",
    "address_line1": "Av. Paulista, 1000",
    "city": "São Paulo",
    "state": "SP",
    "postal_code": "01310-100",
    "country": "BR",
    "cpf": "123.456.789-09"
  },
  "billing_address": {
    "first_name": "Maria",
    "last_name": "Souza",
    "address_line1": "Av. Paulista, 1000",
    "city": "São Paulo",
    "state": "SP",
    "postal_code": "01310-100",
    "country": "BR"
  },
  "idempotency_key": "ck-2026-10-11-0001"
}'

Resposta

201Pedido criado
json
{
  "id": "a8a3c7a3-5f15-45a8-a385-4f20fbf8b722",
  "order_number": "PEDIDO-20261011-0007",
  "customer_id": "",
  "status": "pending",
  "subtotal": 29900,
  "shipping_total": 2190,
  "tax_total": 0,
  "discount_total": 1495,
  "total": 30595,
  "currency": "BRL",
  "payment_method": "pix"
}

A resposta é o objeto do pedido, o mesmo de Consultar pedido (o exemplo acima está resumido). Todos os valores estão em centavos. customer_id vem vazio em pedido de visitante. Uma repetição com a mesma idempotency_key responde 200 com o pedido já criado.

Erros

StatusQuandoExemplo de corpo
400Falta guest_email ou guest_name, e-mail mal formado, carrinho vazio, ou resgate de pontos/carteira por visitante.{"error":"guest_email is required for guest checkout"}
403Compra de visitante desligada na loja.{"error":"guest checkout is not enabled"}
409items enviados diferem do carrinho do servidor.{"error":"cart_mismatch","detail":"client items differ from server cart"}
422E-mail ainda não verificado por código.{"error":"email_not_verified","message":"Please verify your email before placing an order"}
422Falha de validação do pedido (estoque, endereço, regras da loja).{"error":"order validation failed","validation_errors":[...]}
429Limite de requisições da família /storefront/.{"error":"rate limit exceeded","detail":"too many requests, please try again later"}
Como repetir com segurança

Se a chamada deu timeout, repita com a mesma idempotency_key e o mesmo e-mail. Você recebe o pedido que já foi criado, sem duplicar a cobrança. Uma chave nova cria outro pedido. Veja Idempotência.

Veja também

  • Perfil do visitante
  • Verificação por código
  • Consultar pedido
Anterior
Perfil do visitante
Próxima
Verificação por código
Nesta página
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também