Skip to main content
POST
string
obrigatório
Token Bearer obtido em POST /login. Formato: Bearer <accessToken>.
string
obrigatório
Sua API key do Fire.
string
obrigatório
Deve ser integration. Identifica a requisição como vinda de uma integração externa.
string
obrigatório
Identificador da conta à qual a requisição pertence.
string
obrigatório
Identificador único do pedido no seu sistema.
string
obrigatório
Origem do pedido. Exemplos: App, Kiosco.
string
Plataforma do cliente. Exemplos: Android, iOS, Web.
object
obrigatório
Detalhes do canal de venda. Use valores uid dos webhooks de publicação (por exemplo channel.updated) ou da configuração de canais no painel (Integrações de agregadores).
object
obrigatório
Detalhes do serviço de fulfillment. Use valores uid do array services nesses payloads de canal ou as mesmas fontes que channel.
object
Detalhes do dispositivo. null para canais sem dispositivo físico.
object
Resultado de Solicitar documento fiscal, copiado tal como veio. Opcional: se você não fiscalizou antes de injetar, omita — o Fire resolve a fiscalização por conta própria.O Fire pega daqui os dados do comprovante para o pedido e ignora o resto. O status do documento perante o fisco é responsabilidade do Fire: documentStatus é ignorado se vier.
object
Operador ou caixa que processou o pedido. null para canais self-service.
string
obrigatório
Método de envio selecionado pelo cliente. Valores: delivery, pickup.
boolean
Indica se o cliente acumula pontos de fidelidade neste pedido.
boolean
Indica se o cliente resgata pontos de fidelidade neste pedido.
boolean
Indica se descontos são aplicados neste pedido.
string
Comentário geral do cliente para o pedido inteiro.
object
obrigatório
Informações do cliente.
object
obrigatório
Loja onde o pedido é realizado.
object
obrigatório
Conteúdo do pedido.
object
obrigatório
Detalhes do envio conforme selectedShippingMethod.
object
obrigatório
Detalhamento dos pagamentos.
object
Informações de fidelidade e cupons.
object
Metadados extras a nível de pedido (ex.: endereço IP do quiosque).

Valores e faixas de preço

O Fire não escala nem recalcula preços. Envie valores na unidade final da moeda (por exemplo "8.99" para USD 8,99, não centavos). Seu POS ou agregador deve enviar montantes já calculados.
Linhas de produto, payments.totals[], payments.shippingCost[] e payments.discounts[] usam as mesmas chaves de faixa de preço: currencyCode, subtotalWithoutTaxes, discountPercentage, discountsValue, subtotalIncludeDiscounts, taxesPercentage, taxValue, total.

Frete e descontos

Descontos por linha de produto

Aplique descontos em order.products[n].price.unitPrice e totalPrice (mesmos números quando quantity é 1). Exemplo: 10% de desconto em base 15.00 com IVA 12%discountsValue 1.50, subtotalIncludeDiscounts 13.50, taxValue 1.62, total da linha 15.12.

payments.shippingCost[]

Taxas de entrega como uma ou mais linhas na faixa de preço. Nos exemplos, o imposto do frete segue a mesma lógica dos produtos.

payments.discounts[]

Descontos em nível de pedido (promos, cupons) como linhas na faixa de preço. Use quando o desconto não estiver totalmente refletido no discountsValue de cada produto e o custo é absorvido pelo estabelecimento. Descontos de produto e payments.discounts[] podem ser combinados; concilie com paymentMethods[].totalBill.

payments.totals[]

Resumo da parte de produtos do pedido. Ao conciliar: produtos (totals) + frete − descontos do pedido ≈ valor pago.
O Fire não rejeita a requisição se paymentMethods[].totalBill divergir levemente da soma das faixas — mesmo assim envie valores consistentes do seu sistema de origem.

Descontos de combo

Quando um produto combo tem preço do contêiner igual a 0 (ou seja, type: "COMBO" com subtotalWithoutTaxes: 0), o desconto do combo não deve ser colocado na linha do contêiner. Atribuir discountsValue a uma base zero produz totais negativos, que o Fire rejeita. Em vez disso, distribua o valor total do desconto entre os selectedModifiers que compõem o combo.

Regras

Algoritmo de distribuição

Ajustar o arredondamento no último modificador para que SUM(discount_i) === D exatamente. Se a distribuição proporcional deixasse algum modificador com net_i < 0, limitar o desconto desse item à sua base (discount_i = base_i, líquido = 0) e redistribuir o restante entre os demais.

Exemplo — desconto BRL 17,94 em um combo (base BRL 89,68)

A seguir é mostrado o padrão incorreto (desconto no contêiner) e o padrão correto (desconto distribuído entre os modificadores).
Incorreto — desconto no COMBO com base zero (totais negativos)
Correto — contêiner COMBO em zero, desconto nos modificadores
Distribuição completa para este exemplo (todos os 7 modificadores): payments.totals[0].subtotalWithoutTaxes = 89,68, subtotalIncludeDiscounts = 71,74

Descontos do agregador

Quando a plataforma do agregador (iFood, Rappi, UberEats, etc.) aplica um desconto promocional ao cliente, o agregador reembolsa o estabelecimento — o local sempre recebe o valor integral. Por isso o desconto não reduz a receita do estabelecimento e não deve aparecer em payments.discounts[]. Modele como uma entrada adicional em payments.paymentMethods[]:

Campos obrigatórios na entrada AGGREGATOR_DISCOUNT

Regra de saldo

A soma de todos os paymentMethods[].totalBill — incluindo a entrada AGGREGATOR_DISCOUNT — deve ser igual ao total bruto do pedido:
payments.discounts[] fica vazio.

Conciliação dos exemplos

Notas de cálculo:
  • Entrega simples: 8.99 + 1.73 = 10.72.
  • Desconto na linha: 10% sobre 15.00 → IVA sobre 13.50 → produto 15.12; frete 3.50 + IVA 12% = 3.92; 15.12 + 3.92 = 19.04.
  • Vários produtos + promo: hambúrgueres 25.80 + bebida 5.00 = 30.80; + frete 3.50 = 34.30; − promo 2.00 = 32.30 pago.
  • Desconto do agregador: produtos 29.80 + embalagem 0.99 + frete 8.90 = 39.69 bruto; cliente paga 38.69 (CREDIT) + agregador reembolsa 1.00 (AGGREGATOR_DISCOUNT) = 39.69 ✓. payments.discounts fica vazio.