Saltar al contenido principal
POST
Crea una orden en Fire. Lo usan la caja, el kiosco y los integradores de agregadores para enviar sus ventas directamente a Fire, sin cambiar el cuerpo que ya arman hoy: solo cambian la URL, la credencial y la forma de leer la respuesta. Esta es la versión 2: recibe la estructura de órdenes de caja y kiosco y la de agregadores. Si tu sistema ya envía las órdenes en formato Fire, usa Crear orden (v1). Las dos versiones están vigentes y terminan en el mismo lugar: mismas validaciones, misma respuesta. Fire reconoce de qué tipo de orden se trata por el channel.uid del cuerpo:
  • Si el canal es de un agregador (iFood, 99Food, Keeta, Rappi), el cuerpo es el de Inyectar orden (camelCase, con precios y totales).
  • Cualquier otro canal (caja, kiosco) usa la estructura de caja y kiosco que se describe abajo (snake_case, solo con el precio unitario: Fire calcula los totales).
Una vez creada, la orden sigue el mismo ciclo que cualquier orden de Fire: impuestos, día de negocio, documento fiscal y eventos.

Autenticación

string
requerido
Tu API key de Fire con scope orders:write. También se acepta Authorization: Bearer <api_key>. La key debe estar asociada a un vendor: la cuenta de la orden sale de ese vendor. Una key sin vendor se rechaza con 403. No hace falta enviar el header account; si llega, se ignora.

Identidad del cliente (caja y kiosco)

Envía exactamente uno de estos dos headers. Si no envías ninguno, o envías los dos, la orden se rechaza con 400 VALIDATION_ERROR. Las órdenes de agregadores no los usan.
string
Identificador de la sesión anónima del equipo (caja o kiosco). Es el caso habitual.
string
Identificador de un cliente registrado.

Cuerpo — caja y kiosco

string
requerido
Código único de la orden en tu sistema. Si ya existe una orden con ese código para tu vendor, la respuesta es 409.
string
requerido
Vendor de la orden (p. ej. 11.6.1350).
string
requerido
Catálogo del canal de venta.
string
COMPLETED si la venta ya está cerrada; OPEN si queda pendiente de cobro. Una orden que no llega COMPLETED + SUCCEEDED queda pendiente de pago.
string
SUCCEEDED si ya está cobrada.
object
requerido
Canal de venta. Su uid decide cómo se interpreta el cuerpo.
object
requerido
Servicio de la venta.
object
requerido
Tienda de la venta.
object
requerido
Forma de entrega y catálogo.
object
Equipo que registró la venta: uid, name, metadata.
object
Cajero u operador: uid, name, session (uid, start_timestamp, end_timestamp). null en el kiosco.
object
Datos del cliente: uid, name, last_name, phone (obligatorios si envías el objeto), email, gov_id_type, gov_id_number.
object
Datos de facturación: gov_id_type, gov_id_number, business_name.
object
Datos adicionales de la venta, p. ej. display_code (número para llamar la orden) y los datos del kiosco o de la caja.
object[]
requerido
Productos de la orden.
object[]
requerido
Pagos de la orden.

Cuerpo — agregadores

El mismo cuerpo de Inyectar orden, sin cambios. Fire lo identifica como orden de agregador por channel.uid y la registra cerrada y pagada.

Respuesta

boolean
true cuando la orden se creó.
object

Errores

Toda petición queda registrada en Fire con su cuerpo y el motivo del rechazo, también las rechazadas. Si reintentas una orden que ya se creó, la respuesta es 409 y no se duplica.