Regras de preço do seller
Como o seller (lojista) define o pedido mínimo, remove faixas de preço por quantidade e usa o repricer automático para disputar o menor preço.
Um seller (lojista) é um vendedor que opera dentro do marketplace da loja. Esta seção reúne três ferramentas de preço que ele controla sozinho, sob /api/v1/vendor: o pedido mínimo que o cliente precisa atingir para comprar dele, a remoção de faixas de preço por quantidade (preço de atacado) de um produto dele e o repricer automático, que acompanha o menor preço da concorrência sobre o mesmo produto e ajusta o preço do seller dentro de limites que ele define.
Como funciona
Pedido mínimo: quem manda é a hierarquia
O checkout confere o valor mínimo na ordem abaixo e usa o primeiro nível que estiver preenchido:
- Região de entregaSe a área de entrega do endereço define um mínimo, ele vale, mesmo que seja menor que o da loja.
- SellerSenão vale o mínimo do próprio seller, conferido sobre o subtotal dos itens daquele seller.
- LojaSenão vale o mínimo geral da loja.
Em um carrinho com itens de vários sellers cada grupo precisa atingir o seu mínimo. O valor 0 quer dizer "sem mínimo". O desconto no pedido inteiro não é abatido do subtotal de cada seller. Quando não bate, o checkout recusa com o código vendor_min_order_not_met e a mensagem "mínimo do pedido é R$ X, os itens deste seller somam R$ Y".
Repricer: disputar o menor preço
O repricer olha cada oferta com regra ativa e compara com a oferta mais barata e disponível dos outros sellers do mesmo produto-mestre. Ele puxa o preço para 1 centavo abaixo da concorrente, respeitando travas:
| Trava | Efeito |
|---|---|
Piso (min_price_cents e/ou min_margin_bps) | O preço nunca cai abaixo do piso. Com os dois, vale o maior. |
Teto (max_price_cents) | O preço nunca passa do teto. Sem concorrente, o preço sobe de volta até o teto. |
| Corte máximo por execução | Em cada execução o preço cai no máximo 20% do preço atual. |
| Esfriamento | No máximo uma execução por regra a cada 10 minutos. |
| Limite em cadeia | No máximo 5 preços aplicados por hora entre as ofertas do mesmo produto-mestre. |
| Oferta parada | Oferta inativa ou sem estoque não é reprecificada. |
Cada decisão fica registrada e pode ser lida em Execuções do repricer. As regras são avaliadas na hora em que são salvas e, depois, sempre que o preço de uma oferta irmã muda.
Conceitos importantes
Faixas de preço por quantidade
Uma faixa de preço é um preço especial que vale a partir de uma quantidade ("de 10 unidades, R$ 45,00 cada"). O seller cria e lista as faixas dos produtos dele pelas rotas de produto, e esta seção traz a remoção por id da faixa: Remover faixa de preço.
Ids
O produto, a regra e a faixa de preço usam UUID. Um segmento de caminho numérico 0 ou negativo leva 400 invalid id parameter.
Endpoints
| Método | Caminho | Para que serve | Autenticação |
|---|---|---|---|
| GET | /api/v1/vendor/min-order-amount | Lê o pedido mínimo do seller. | seller |
| PUT | /api/v1/vendor/min-order-amount | Define o pedido mínimo do seller. | seller |
| DELETE | /api/v1/vendor/price-tiers/{id} | Remove uma faixa de preço por quantidade. | seller |
| GET | /api/v1/vendor/repricing/rules | Lista as regras do repricer. | seller |
| POST | /api/v1/vendor/repricing/rules | Cria ou atualiza regras para vários produtos. | seller |
| POST | /api/v1/vendor/repricing/rules/{id}/status | Pausa ou retoma uma regra. | seller |
| DELETE | /api/v1/vendor/repricing/rules/{id} | Exclui uma regra. | seller |
| GET | /api/v1/vendor/repricing/executions | Histórico de decisões do repricer. | seller |
Erros comuns
- Mandar o corpo do
PUT /min-order-amountsem o campo. O valor ausente é lido como0e remove o mínimo. - Achar que o mínimo do seller soma ao da loja. Eles não se somam: vale o primeiro nível preenchido (região, seller, loja).
- Criar regra do repricer sem piso. É recusado: envie
min_price_centsoumin_margin_bps. - Usar piso por margem em produto sem custo. A regra é salva, mas toda execução termina em
errorporque não há custo para calcular o piso. - Esperar que o repricer aja em produto sem concorrência. Produto sem produto-mestre registra
skipped_no_mastere nada muda. - Enviar
strategyesperando outra estratégia. O campo é lido e ignorado: a regra é sempre "bater o menor preço".