VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/Cotações e propostas B2B

Decidir uma cotação

Aceitar, recusar e levar a cotação ao carrinho.

Depois que o seller responde, o cliente decide. Estas três rotas cobrem o caminho simples (sem negociar): aceitar, recusar ou aceitar e levar ao carrinho. Todas conferem que a cotação é do cliente do token.

Aceitar cotação

Muda a cotação de quoted para accepted. Só é possível enquanto ela está quoted e dentro do valid_until; se a data já passou, a cotação vira expired e o aceite é recusado. Aceitar não cria carrinho nem pedido: o próximo passo é levar ao carrinho.

POST/api/v1/storefront/quotes/{id}/acceptCliente

O cliente aceita os preços que o seller ofereceu

Parâmetros de caminho

idintegerobrigatório
Id numérico da cotação.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/quotes/42/accept" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Cotação aceita
json
{
  "id": 42,
  "user_id": "e0d4f8a1-5b2c-4d7e-9a31-6c8f0b2d4e6a",
  "vendor_id": "7c1e5d3a-2b4f-4a6e-9c8d-1f0a3b5c7d9e",
  "status": "accepted",
  "notes": "Preciso de entrega mensal",
  "total_cents": 420000,
  "created_at": "2026-10-11T14:02:11Z",
  "updated_at": "2026-10-12T09:15:40Z",
  "user_email": "maria.souza@example.com",
  "user_name": "Maria Souza",
  "vendor_name": "Distribuidora Aurora",
  "items": [
    {
      "id": 101,
      "quote_id": 42,
      "product_id": "c3f92551-9dda-4fc7-b518-353d1c4e4035",
      "quantity": 200,
      "requested_price_cents": 1800,
      "notes": "",
      "product_name": "Caneta esferográfica azul (cx 50)",
      "product_sku": "CAN-AZ-50",
      "product_price": 2490,
      "offered_price_cents": 2100
    }
  ],
  "vendor_notes": "Preço válido para pedido único.",
  "valid_until": "2026-10-25T23:59:59Z"
}

Campos da resposta

(corpo)object
A cotação completa, no mesmo formato de Consultar cotação, já com status: accepted.

Erros

StatusQuandoCorpo de exemplo
400O id não é um número.{"error":"invalid quote id"}
401Sem token de cliente no cabeçalho Authorization.{"error":"missing authorization header"}
403A cotação é de outro cliente.{"error":"quote does not belong to this user"}
403O módulo b2b-pricing está desligado nesta loja.{"error":"module_disabled","module":"b2b-pricing"}
404Cotação inexistente.{"error":"quote not found"}
500A cotação não está quoted ou expirou. O detail mostra o estado atual como letra (por exemplo P).{"error":"failed to accept quote","detail":"quote cannot be accepted (current status: P)"}

Recusar cotação

Encerra a cotação como rejected. Só vale para cotações pending ou quoted. Não leva corpo e não pede motivo. Cotação já aceita, em negociação, convertida ou expirada não pode mais ser recusada por aqui.

POST/api/v1/storefront/quotes/{id}/rejectCliente

O cliente desiste da cotação

Parâmetros de caminho

idintegerobrigatório
Id numérico da cotação.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/quotes/42/reject" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Cotação recusada
json
{
  "message": "quote rejected"
}

Erros

StatusQuandoCorpo de exemplo
400O id não é um número.{"error":"invalid quote id"}
401Sem token de cliente no cabeçalho Authorization.{"error":"missing authorization header"}
403A cotação é de outro cliente.{"error":"quote does not belong to this user"}
403O módulo b2b-pricing está desligado nesta loja.{"error":"module_disabled","module":"b2b-pricing"}
404Cotação inexistente.{"error":"quote not found"}
500A cotação não está em um estado recusável.{"error":"failed to reject quote","detail":"quote not found or not in rejectable status"}

Levar ao carrinho em um passo

Atalho para o botão "Fazer pedido": se a cotação ainda está quoted, aceita-a e depois coloca os itens no carrinho do cliente com os preços oferecidos (não os de tabela). Apesar do nome da rota, nenhum pedido é criado: o cliente segue para o checkout normal com o cart_id devolvido. A cotação vira converted.

POST/api/v1/storefront/quotes/{id}/convert-to-orderCliente

Aceita (se preciso) e coloca a cotação no carrinho do cliente

Parâmetros de caminho

idintegerobrigatório
Id numérico da cotação.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/storefront/quotes/42/convert-to-order" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Carrinho preparado
json
{
  "cart_id": "b7a3c1e9-6d24-4f8a-a0b5-93e1c7d2f468",
  "quote_id": 42,
  "items_added": 1,
  "total_cents": 420000,
  "message": "Quote converted to cart. Proceed to checkout with the cart_id."
}

Campos da resposta

cart_iduuid
Carrinho do cliente que recebeu os itens.
quote_idinteger
A cotação convertida.
items_addedinteger
Quantas linhas entraram no carrinho.
total_centsinteger
Soma das linhas ao preço oferecido, em centavos.
messagestring
Texto fixo em inglês.

Erros

StatusQuandoCorpo de exemplo
400O id não é um número.{"error":"invalid quote id"}
401Sem token de cliente no cabeçalho Authorization.{"error":"missing authorization header"}
403A cotação é de outro cliente.{"error":"quote does not belong to this user"}
403O módulo b2b-pricing está desligado nesta loja.{"error":"module_disabled","module":"b2b-pricing"}
404Cotação inexistente.{"error":"quote not found"}
400A cotação não pode ser convertida: não está aceita/aceitável, expirou ou não tem itens válidos. O texto vem em error.{"error":"quote must be in 'accepted' status to convert (current: rejected)"}
Mistura com o carrinho atual

Os itens entram no carrinho que o cliente já tem. Se o mesmo produto já estava lá, a linha é substituída pela quantidade e pelo preço da cotação. Se a conversão falhar depois do aceite automático, a cotação volta para quoted.

Erros de estado vêm como 500

Quando a cotação não está no estado certo, accept e reject respondem 500 com a explicação em detail, enquanto convert-to-order responde 400. Leia o detail ou o error para decidir o que mostrar ao cliente.

Veja também

  • Pedir e consultar cotações
  • Negociação em rodadas
  • Criar pedido (visão geral)
Anterior
Pedir e consultar cotações
Próxima
Negociar em rodadas
Nesta página
  • Aceitar cotação
  • Recusar cotação
  • Levar ao carrinho em um passo
  • Veja também