> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fire.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Credenciales Fire del KDS

> Cómo fire-kds resuelve el host y la key de Fire para impresión fiscal y cancelación — y qué ve la cocina cuando Fire rechaza un cancel.

Esta página es para quien configura print y cancel contra Fire. Los operadores de cocina usan el formulario de [Credenciales Fire](/es/manuals/kds/fire-credentials) en el backoffice; no eligen variables de entorno.

## Cascada de resolución

En runtime fire-kds siempre recorre la misma lista:

1. **Fila activa de vendor** para el vendor de la orden (**Vendor ID** del backoffice).
2. **Default de cuenta** (vendor vacío).
3. **Variables de entorno** en el servidor fire-kds.

Print y cancel **no** comparten el mismo fallback de env:

| Consumidor       | Env después de las filas en DB                                                     |
| ---------------- | ---------------------------------------------------------------------------------- |
| Impresión fiscal | Solo `FISCAL_PRINT_API_BASE_URL` + `FISCAL_PRINT_API_KEY`. **Nunca** `FIRE_API_*`. |
| Cancelación      | `FIRE_API_BASE_URL` + `FIRE_API_KEY`, y luego el par fiscal si esos están vacíos.  |

La API key guardada es la misma fila para ambos trabajos. Print envía `Authorization: Bearer`. Cancel envía `x-api-key`.

<Note>
  `base_url` es **solo el host** de Fire (`https://br.app.fire.rest`). fire-kds agrega el path. Una URL con `/v1/print` se rechaza en el backoffice.
</Note>

## Llamada de impresión fiscal

Cuando las credenciales se resuelven, fire-kds pide:

```
GET {base_url}/api/{v1|v2}/restaurant-os/injected-orders/{external_id}/fiscal-print?vendorId={vendorId}
Authorization: Bearer {api_key}
```

* **v1** — Brasil.
* **v2** — Ecuador y países posteriores (layout RIDE en `fiscalRepresentation`).

El contrato para partners está en [Datos de impresión fiscal](/es/api-reference/fiscal-print). El timeout por defecto es 4 segundos. `400` / `401` / `403` son permanentes; el resto encola un reintento.

## Cancelación cuando Fire dice que no

Cancel usa la misma cascada y luego `POST` al adaptador de cancelación de XMART con `x-api-key`.

Si Fire (o el adaptador) responde 4xx:

* El operador ve **Fire rechazó la cancelación** más el detalle de policy (`reasonDetail` y, si viene, umbral / tiempo transcurrido).
* El **trabajo de cancel queda fallido**. El ticket **no** se marca cancelado.
* El mismo input no se reintenta solo.

Una cancelación posterior exitosa, o un bump, es lo que saca el ticket de la cocina.

Ver [Acciones en pantalla](/es/manuals/kds/screen-actions#cancelar-un-pedido) para el copy del operador.

## Lo que esto no es

* No es el Agente Fire (WebSocket de impresora local). Eso es [Periféricos, impresión y validación](/es/manuals/kds/peripherals-printing).
* No es el catálogo de motivos de cancelación. Eso vive en los ajustes KDS de la tienda.
