> ## 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.

# Datos fiscales para impresión

> Obtén los datos fiscales imprimibles de una orden — emisor, tienda, comprador, referencias del documento y campos específicos por país. Úsalo para renderizar un recibo o factura desde el lado de tu integración.

<Warning>
  **API de partner.** Este endpoint está pensado para integradores de plataforma. Los clientes estándar de Fire no tienen acceso directo — contactá a tu account manager si necesitás esta integración.
</Warning>

Devuelve el contexto fiscal consolidado de una orden específica — los datos que tu point-of-sale o backoffice renderizaría en un recibo/factura impreso o digital. Expone:

* **Contexto del emisor** — entidad legal, gov ID, info de tienda, inscripción estatal
* **Referencias fiscales por país** — chave de acesso, CUFE, clave de acceso, CAE, folio, etc., según país
* **Contexto del comprador** — destinatario, con flag de anónimo/consumidor final
* **Resumen de la orden** — código, status, día de negocio

Endpoint solo lectura. Sin side effects.

## Dos versiones, las dos vivas

```
GET /api/v1/restaurant-os/injected-orders/{orderId}/fiscal-print
GET /api/v2/restaurant-os/injected-orders/{orderId}/fiscal-print
```

Mismo camino, misma autenticación, mismos parámetros. Lo que cambia es la respuesta:

|                                   | v1                                                            | v2                                      |
| --------------------------------- | ------------------------------------------------------------- | --------------------------------------- |
| Bloques de la respuesta           | `fiscal`, `countryData`, `company`, `store`, `buyer`, `order` | los mismos **+ `fiscalRepresentation`** |
| Códigos del ente en `countryData` | crudos (`ambiente: "2"`)                                      | traducidos (`ambiente: "PRODUCCION"`)   |
| Nota de crédito                   | no se puede componer                                          | `compensates` + `history`               |

<Note>
  **La v1 no se movió ni se va a mover.** Si tu integración ya la consume, no tenés que hacer
  nada: mismos campos y mismos valores que siempre.

  La v2 existe porque uno de los cambios **no es aditivo** — `ambiente` es el mismo campo con otro
  valor— y cambiarlo en la v1 le movería el dato bajo los pies a una caja ya integrada. No hay
  fecha de baja para la v1.
</Note>

**Lo que la v2 agrega**, y por qué puede importarte:

* **`fiscalRepresentation`** — el documento **tal como se numeró**, con su histórico. Es lo que
  hace imprimible una **nota de crédito**: trae `compensates` (qué factura anula, con el motivo ya
  redactado) y esa factura completa en `history`. En la v1 esa información no existe.
* **Etiquetas resueltas** — `FACTURA`, `NOTA DE CREDITO RIDE`, `EMISION NORMAL`, `PRODUCCION`: los
  códigos del ente ya traducidos, para que no lleves su tabla adentro de tu POS.
* **La fecha de emisión** (`issuedAt`) del comprobante, que la v1 no expone.

Todo lo demás —emisor, tienda, comprador, orden— es idéntico en las dos.

## Autenticación

<ParamField header="x-api-key" type="string" required>
  Tu API key de Fire con scope `orders:read`. Vendor-scoped: la API key debe pertenecer al mismo vendor dueño de la tienda/orden.
</ParamField>

## Path parameters

<ParamField path="orderId" type="string" required>
  Cualquiera de las tres referencias públicas de la orden:

  | referencia          | qué es                                                                                                   |
  | ------------------- | -------------------------------------------------------------------------------------------------------- |
  | `orders.id`         | el UUID interno de Fire (coincide con `data.orderId` en [`order.completed`](/es/events/order-completed)) |
  | `order_external`    | el id que asignaste al crear la orden                                                                    |
  | `metadata.order_id` | copia del id externo dentro de la orden                                                                  |

  No hace falta traducir: usa el id que ya conoces.
</ParamField>

## Query parameters

<Info>El vendor se resuelve desde tu API key (vendor-scoped). El parámetro `vendorId` fue **removido** — si lo envías, se ignora.</Info>

<RequestExample>
  ```http theme={null}
  GET https://api.fire.rest/v1/orders/21ec1f6c-c301-4528-b999-7836c1d21c6c/fiscal-print
  x-api-key: <tu_api_key>
  Accept: application/json
  ```
</RequestExample>

## Respuesta

<ResponseField name="fiscal" type="object">
  Referencias fiscales comunes del documento, sin importar el país.

  <Expandable title="fiscal">
    <ResponseField name="countryCode" type="string">
      Código de país ISO 3166-1 alpha-2: `BR`, `CO`, `EC`, `CL`, `AR`, `VE`.
    </ResponseField>

    <ResponseField name="documentType" type="string">
      Tipo de documento específico por país — p. ej. `nfce`, `nfe`, `factura_electronica`, `dte`, `factura_a`.
    </ResponseField>

    <ResponseField name="documentNumber" type="string | null">
      El número **visible** del comprobante, tal como lo armó el proveedor según la convención
      de su país. Es lo que va impreso.

      No confundir con el número de autorización: son hechos distintos y viajan en campos
      distintos. En Ecuador el número es `001-020-000000123` (y aparece también como
      `countryData.numeroComprobante`), mientras que la respuesta del SRI vive en
      `countryData.numeroAutorizacion`.
    </ResponseField>

    <ResponseField name="authorizationProtocol" type="string | null">
      Protocolo de autorización de la autoridad tributaria (SEFAZ para BR, DIAN para CO, SRI para EC, SII para CL, AFIP para AR, SENIAT para VE). `null` hasta que el documento sea autorizado.
    </ResponseField>

    <ResponseField name="authorizedAt" type="string | null">
      Timestamp ISO 8601 UTC de cuándo la autoridad estampó la autorización.
    </ResponseField>

    <ResponseField name="pdfUrl" type="string | null">
      URL para obtener el PDF renderizado (DANFE para BR NF-e, DANFCE para BR NFC-e, equivalentes específicos por país en otros). Puede ser efímera en producción — descarga y persiste al recibir.
    </ResponseField>

    <ResponseField name="xmlUrl" type="string | null">
      URL para obtener el XML canónico de la autoridad.
    </ResponseField>

    <ResponseField name="status" type="string | null">
      Estado fiscal de la orden (`processing`, `authorized`, `cancelled`, …), o `null` si la orden no se fiscaliza. Sin esto los `null` de arriba son ambiguos: no se puede distinguir "el ente todavía no autorizó" de "autorizó pero falta el dato".
    </ResponseField>

    <ResponseField name="source" type="string | null">
      De dónde salen `documentNumber`, `authorizationProtocol` y `countryData`:

      * `authority` — los confirmó el ente. Son definitivos.
      * `representation` — los emitió la numeración fiscal **antes** de que el ente respondiera. Es lo que ya se imprimió en la caja y no va a cambiar, pero **todavía no está autorizado**: `authorizedAt` sigue en `null` a propósito.
      * `null` — no hay ni una cosa ni la otra.

      **Un ticket impreso desde `representation` NO debe decir que está autorizado.**
    </ResponseField>

    <ResponseField name="graphic" type="object | null">
      El artefacto imprimible que entregó el proveedor al numerar (QR y demás), tal cual vino. `null` cuando no entregó ninguno o la venta no se numeró.

      Se devuelve porque la reimpresión es justamente el caso donde el ticket original ya no está: en Ecuador el QR coincide con la clave de acceso y se podría reconstruir, pero en un país donde lleve otra cosa la caja no tendría con qué armarlo.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="countryData" type="object">
  Referencias del documento específicas por país. La forma varía según `fiscal.countryCode`. Ejemplos:

  * **BR**: `chaveAcesso` (44 dígitos), `serie`, `serialNumber`
  * **CO**: `cufe`, `prefijo`, `numeroDian`
  * **EC**: `numeroComprobante`, `claveAcceso` (49 dígitos), `numeroAutorizacion`, `ambiente`
  * **CL**: `folio`, `ted`, `tipoDte`, `trackId`
  * **AR**: `cae`, `fechaVtoCae`, `puntoVenta`, `numeroComprobante`, `tipoComprobante`
  * **VE**: `numeroControl`, `numeroFactura`, `rifEmisor`

  <Note>
    **Solo en v2: los valores vienen traducidos, no en código del ente.** En Ecuador el proveedor
    manda `ambiente: "2"` —así lo define el SRI— y en la v2 llega `"PRODUCCION"`, que es lo que va
    impreso. **En la v1 ese campo sigue trayendo `"2"`**, sin cambios.
    Es el mismo criterio que en la numeración fiscal: traducirlo del lado del punto de venta
    significaría que cada integrador lleva su copia de la tabla del ente, y el primero que la
    copie mal imprime "PRUEBAS" en una factura de producción.

    Un país sin tabla de rótulos devuelve sus valores **tal cual**.
  </Note>
</ResponseField>

<ResponseField name="fiscalRepresentation" type="object">
  **Solo en v2.** El documento tal como se numeró, con su histórico y las etiquetas ya resueltas.
  En la v1 esta clave no existe.

  Dentro de la v2, **aparece solo cuando la venta pasó por el Fiscal Gateway**. Si el comercio
  fiscaliza únicamente por callback —Brasil, agregadores, o el gateway desactivado— la clave
  **no viene en la respuesta**. No llega en `null`: no está.

  Es la misma forma que viaja en `data.fiscalRepresentation` de los eventos, así que quien aprende
  a leer una lee la otra.

  <Note>
    **Por qué está separado de `fiscal`.** Responden preguntas distintas: `fiscal` es el documento
    **con el veredicto del ente encima** —estado, protocolo, fecha de autorización— y cambia cuando
    el ente contesta. Esto otro es **lo que se imprimió en la caja** y no cambia nunca.

    Cuando el SRI autoriza, `fiscal.status` pasa a `authorized` y aparecen el PDF y el XML, pero el
    número del comprobante **sigue siendo el mismo**. Son dos hechos, no dos versiones del mismo.
  </Note>

  <Expandable title="fiscalRepresentation">
    <ResponseField name="documentType" type="string">
      `SALE_INVOICE` o `CREDIT_NOTE`. Canónico: significa lo mismo en todos los países.
    </ResponseField>

    <ResponseField name="documentLabel" type="string | null">
      Cómo se titula en el papel: `FACTURA`, `NOTA DE CREDITO RIDE`. Ya traducido.
    </ResponseField>

    <ResponseField name="documentNumber" type="string | null">
      El número visible, tal como lo armó el proveedor de ese país.
    </ResponseField>

    <ResponseField name="issuedAt" type="string | null">Fecha de emisión del comprobante.</ResponseField>

    <ResponseField name="numberingStatus" type="string | null">
      Cómo terminó el acto de **numerar** (`GENERATED`, `FAILED`). NO es el veredicto del ente —
      ese vive en `fiscal.status`.
    </ResponseField>

    <ResponseField name="authorizationMode" type="string | null">`ONLINE` · `OFFLINE` · `BATCH`.</ResponseField>

    <ResponseField name="authorizationLabel" type="string | null">
      `EMISION NORMAL` / `EMISION POR CONTINGENCIA`. En Ecuador el SRI exige que se imprima.
    </ResponseField>

    <ResponseField name="environment" type="string | null">
      Ambiente del gateway (`SANDBOX` / `PRODUCTION`). No confundir con el `ambiente` del ente,
      que viaja dentro de `countryData` con el código del país.
    </ResponseField>

    <ResponseField name="providerCode" type="string | null">Qué integración numeró.</ResponseField>

    <ResponseField name="countryData" type="object | null">
      El vocabulario del ente, con los valores ya traducidos para imprimir.
    </ResponseField>

    <ResponseField name="graphic" type="object | null">
      Lo imprimible que entregó el proveedor — el QR y demás.
    </ResponseField>

    <ResponseField name="failure" type="object | null">
      Por qué NO hay documento. Presente solo cuando la numeración falló.
    </ResponseField>

    <ResponseField name="compensates" type="object | null">
      **Qué documento anula este.** Solo en notas de crédito. En Ecuador se imprime como
      `N. FACTURA MODIFICADA` y `FECHA EMISION FAC.`.

      Es un **puntero**, no una copia: `documentNumber` es la clave con la que se resuelve contra
      `history`, donde está el documento entero con su bloque de país. Trae además `reasonLabel`,
      el motivo ya redactado.
    </ResponseField>

    <ResponseField name="history" type="array">
      Los documentos anteriores de esta orden, del más viejo al más nuevo. Vacío en una venta
      simple; con la factura anulada cuando entra la nota de crédito.

      Cada entrada tiene **la misma forma** que el documento de arriba, para que apliques la misma
      lógica de impresión a los dos. Lo que el cliente se llevó impreso no se pierde: se mueve.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="company" type="object | null">
  Entidad legal que emite el documento.

  <Expandable title="company">
    <ResponseField name="legalName" type="string | null">Razón social / legal name.</ResponseField>
    <ResponseField name="tradeName" type="string | null">Nombre fantasía / trade name.</ResponseField>
    <ResponseField name="govIdType" type="string | null">`CNPJ` / `NIT` / `RUC` / `RUT` / `CUIT` / `RIF`.</ResponseField>
    <ResponseField name="govIdNumber" type="string | null">Formato específico por país.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="store" type="object | null">
  Info a nivel tienda para el header impreso.

  <Expandable title="store">
    <ResponseField name="name" type="string | null">Nombre para mostrar.</ResponseField>
    <ResponseField name="code" type="string | null">Código de tienda (p. ej. `BR-SP-001`).</ResponseField>
    <ResponseField name="govIdType" type="string | null">Igual que el de company, repetido por conveniencia.</ResponseField>
    <ResponseField name="govIdNumber" type="string | null">Igual que el de company.</ResponseField>
    <ResponseField name="stateRegistration" type="string | null">Inscrição Estadual (IE) para BR, equivalente en otros países.</ResponseField>
    <ResponseField name="city" type="string | null">Ciudad.</ResponseField>
    <ResponseField name="address" type="string | null">Dirección.</ResponseField>
    <ResponseField name="phone" type="string | null">Teléfono de la tienda.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="buyer" type="object">
  Destinatario del documento.

  <Expandable title="buyer">
    <ResponseField name="isFinalConsumer" type="boolean">
      `true` para consumidor anónimo (p. ej. placeholder BR `CONSUMIDOR FINAL`). Cuando es `true`, `name`, `email`, `phone`, `address` típicamente son `null` y `govIdType` es `"FINAL_CONSUMER"` con `govIdNumber: null` (o un placeholder según país).
    </ResponseField>

    <ResponseField name="govIdType" type="string | null">Tipo de documento del comprador (`CPF`, `CNPJ`, `RUT`, `DNI`, etc.).</ResponseField>
    <ResponseField name="govIdNumber" type="string | null">Número del documento del comprador.</ResponseField>
    <ResponseField name="name" type="string | null">Nombre del comprador. `null` para `isFinalConsumer: true`.</ResponseField>
    <ResponseField name="email" type="string | null">Email del comprador.</ResponseField>
    <ResponseField name="phone" type="string | null">Teléfono del comprador.</ResponseField>
    <ResponseField name="address" type="string | null">Dirección del comprador.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="order" type="object">
  Contexto mínimo de la orden para cross-reference.

  <Expandable title="order">
    <ResponseField name="id" type="string">Igual que `path.orderId`.</ResponseField>
    <ResponseField name="orderCode" type="string | null">Código corto (p. ej. `OC-br-001`).</ResponseField>
    <ResponseField name="status" type="string">`OPEN`, `COMPLETED` o `CANCELLED`.</ResponseField>
    <ResponseField name="isCancelled" type="boolean">Flag de conveniencia para `status === "CANCELLED"`.</ResponseField>
    <ResponseField name="businessDayDate" type="string | null">`YYYY-MM-DD`.</ResponseField>
    <ResponseField name="createdAt" type="string">ISO 8601 UTC.</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 (v1 y v2) — orden BR fiscal-enabled theme={null}
  {
    "fiscal": {
      "countryCode": "BR",
      "documentType": "nfce",
      "documentNumber": "1000013",
      "authorizationProtocol": "141200000956123",
      "authorizedAt": "2026-05-06T01:23:10.991Z",
      "pdfUrl": "https://api.fiscal-provider.example/nfce/<docId>/pdf",
      "xmlUrl": "https://api.fiscal-provider.example/nfce/<docId>/xml",
      "status": "authorized",
      "source": "authority",
      "graphic": null
    },
    "countryData": {
      "chaveAcesso": "41201008187168000160558050010000131609769080",
      "serie": "1",
      "serialNumber": 1
    },
    "company": {
      "legalName": "Sandbox LTDA",
      "tradeName": "Sandbox",
      "govIdType": "CNPJ",
      "govIdNumber": "00000000000000"
    },
    "store": {
      "name": "Loja Centro - SP",
      "code": "BR-SP-001",
      "govIdType": "CNPJ",
      "govIdNumber": "00000000000000",
      "stateRegistration": "000000000000",
      "city": "São Paulo",
      "address": "Av. Paulista 1578, Bela Vista",
      "phone": "1132094347"
    },
    "buyer": {
      "isFinalConsumer": true,
      "govIdType": "FINAL_CONSUMER",
      "govIdNumber": "00000000000",
      "name": "CONSUMIDOR FINAL",
      "email": null,
      "phone": null,
      "address": null
    },
    "order": {
      "id": "21ec1f6c-c301-4528-b999-7836c1d21c6c",
      "orderCode": "OC-br-001",
      "status": "COMPLETED",
      "isCancelled": false,
      "businessDayDate": "2026-05-06",
      "createdAt": "2026-05-06T01:22:59.028Z"
    }
  }
  ```

  <Note>
    **Fijate que no hay `fiscalRepresentation`.** Brasil fiscaliza por callback, sin pasar por el
    Fiscal Gateway: no hay documento numerado por Fire que espejar, así que la clave sencillamente
    no viene. La respuesta es la misma de siempre, campo por campo.
  </Note>

  ```json 200 (v2) — orden EC numerada, todavía sin autorizar theme={null}
  {
    "fiscal": {
      "countryCode": "EC",
      "documentNumber": "001-001-000000003",
      "authorizationProtocol": "1508202601179001234500120010010000000031234567813",
      "authorizedAt": null,
      "pdfUrl": null,
      "xmlUrl": null,
      "status": "processing",
      "source": "representation",
      "graphic": {
        "qr": "1508202601179001234500120010010000000031234567813"
      }
    },
    "countryData": {
      "numeroComprobante": "001-001-000000003",
      "claveAcceso": "1508202601179001234500120010010000000031234567813",
      "numeroAutorizacion": null,
      "ambiente": "PRODUCCION"
    },
    "fiscalRepresentation": {
      "documentType": "SALE_INVOICE",
      "documentLabel": "FACTURA",
      "documentNumber": "001-001-000000003",
      "issuedAt": "2026-08-15T22:32:14.826Z",
      "numberingStatus": "GENERATED",
      "authorizationMode": "ONLINE",
      "authorizationLabel": "EMISION NORMAL",
      "environment": "PRODUCTION",
      "providerCode": "hio",
      "countryData": {
        "numeroComprobante": "001-001-000000003",
        "claveAcceso": "1508202601179001234500120010010000000031234567813",
        "establecimiento": "001",
        "puntoEmision": "001",
        "secuencial": "000000003",
        "ambiente": "PRODUCCION"
      },
      "graphic": { "qr": "1508202601179001234500120010010000000031234567813" },
      "failure": null,
      "compensates": null,
      "history": []
    },
    "company": {
      "legalName": "INT FOOD SERVICES CORP SA",
      "tradeName": "KFC",
      "govIdType": "RUC",
      "govIdNumber": "1791415132001"
    },
    "order": {
      "orderCode": "FUEL-EC-PRINT-0002",
      "status": "COMPLETED",
      "isCancelled": false
    }
  }
  ```

  ```json 200 (v2) — orden EC anulada: arriba la nota, abajo la factura theme={null}
  {
    "fiscal": {
      "countryCode": "EC",
      "documentNumber": "001-001-000000009",
      "status": "authorized",
      "source": "representation",
      "graphic": { "qr": "1508202604179001234500120010010000000091234567815" }
    },
    "countryData": {
      "numeroComprobante": "001-001-000000009",
      "claveAcceso": "1508202604179001234500120010010000000091234567815",
      "numeroAutorizacion": null,
      "ambiente": "PRODUCCION"
    },
    "fiscalRepresentation": {
      "documentType": "CREDIT_NOTE",
      "documentLabel": "NOTA DE CREDITO RIDE",
      "documentNumber": "001-001-000000009",
      "issuedAt": "2026-08-15T23:05:11.402Z",
      "numberingStatus": "GENERATED",
      "authorizationMode": "ONLINE",
      "authorizationLabel": "EMISION NORMAL",
      "environment": "PRODUCTION",
      "providerCode": "hio",
      "countryData": {
        "numeroComprobante": "001-001-000000009",
        "claveAcceso": "1508202604179001234500120010010000000091234567815",
        "ambiente": "PRODUCCION"
      },
      "graphic": { "qr": "1508202604179001234500120010010000000091234567815" },
      "failure": null,
      "compensates": {
        "documentNumber": "001-001-000000008",
        "issuedAt": "2026-08-15T23:02:41.237Z",
        "reason": "ORDER_CANCELLATION",
        "reasonLabel": "Anulación de pedido"
      },
      "history": [
        {
          "documentType": "SALE_INVOICE",
          "documentLabel": "FACTURA",
          "documentNumber": "001-001-000000008",
          "issuedAt": "2026-08-15T23:02:41.237Z",
          "numberingStatus": "GENERATED",
          "countryData": {
            "numeroComprobante": "001-001-000000008",
            "claveAcceso": "1508202601179001234500120010010000000081234567819",
            "ambiente": "PRODUCCION"
          },
          "graphic": { "qr": "1508202601179001234500120010010000000081234567819" },
          "compensates": null
        }
      ]
    },
    "order": {
      "orderCode": "FUEL-EC-NC-0030",
      "status": "CANCELLED",
      "isCancelled": true
    }
  }
  ```

  ```json 200 (v2) — orden CO numerada (los bloques que cambian) theme={null}
  {
    "fiscal": {
      "countryCode": "CO",
      "documentNumber": "SETP990000001",
      "authorizationProtocol": "9c4f1e… (el CUFE)",
      "authorizedAt": null,
      "pdfUrl": null,
      "xmlUrl": null,
      "status": "processing",
      "source": "representation",
      "graphic": null
    },
    "countryData": {
      "numeroComprobante": "SETP990000001",
      "cufe": "9c4f1e… (96 caracteres hexadecimales)",
      "prefijo": "SETP",
      "numeroDian": "990000001",
      "qrCode": "https://catalogo-vpfe.dian.gov.co/document/searchqr?documentkey=9c4f1e…",
      "ambiente": "PRODUCCION"
    },
    "fiscalRepresentation": {
      "documentType": "SALE_INVOICE",
      "documentLabel": "FACTURA ELECTRONICA DE VENTA",
      "documentNumber": "SETP990000001",
      "issuedAt": "2026-08-16T14:21:03.118Z",
      "numberingStatus": "GENERATED",
      "authorizationMode": "ONLINE",
      "authorizationLabel": "VALIDACION PREVIA"
    }
  }
  ```

  <Note>
    **La nota de crédito no reemplaza a la factura: la desplaza.** Arriba queda el documento
    vigente —la nota, con su propio número y su `compensates`— y la factura que el cliente se
    llevó impresa baja a `history`, con la misma forma. Para reimprimirla, la sacás de ahí.
  </Note>

  <Note>
    **El ticket se imprime antes de que el SRI conteste.** En el ejemplo de arriba
    `source: "representation"` y `authorizedAt: null`: el comprobante ya tiene su número
    —`numeroComprobante`, el que va en el papel— pero `numeroAutorizacion` sigue vacío porque
    el ente todavía no se pronunció. Cuando lo haga, el número del comprobante **no cambia**;
    se suma la autorización.
  </Note>

  ```json 401 — API key inválida theme={null}
  {
    "error": {
      "code": "unauthorized",
      "message": "Invalid or missing API key"
    }
  }
  ```

  ```json 403 — scope incorrecto theme={null}
  {
    "error": {
      "code": "forbidden",
      "message": "API key is missing the orders:read scope"
    }
  }
  ```

  ```json 404 — no encontrada / no pertenece al vendor theme={null}
  {
    "error": {
      "code": "not_found",
      "message": "Order not found"
    }
  }
  ```
</ResponseExample>

<Note>
  **Qué cambia al imprimir en Colombia**, respecto del ejemplo de Ecuador de arriba:

  * **`graphic` es `null`.** El QR es la URL del catálogo de la DIAN y viaja en
    `countryData.qrCode`. En Ecuador el QR se deriva de la clave de acceso y por eso se
    entrega aparte; acá ya viene resuelto y duplicarlo daría dos copias que pueden discrepar.
  * **Los rótulos son los de la DIAN**: `FACTURA ELECTRONICA DE VENTA` en vez de `FACTURA`,
    y `VALIDACION PREVIA` en vez de `EMISION NORMAL`.
  * **`ambiente` llega traducido igual que en Ecuador**, pero ojo con el código de origen: la
    DIAN usa `1` para producción y el SRI para pruebas. Fire lo resuelve, y por eso acá se lee
    `PRODUCCION` en los dos.
  * `authorizationProtocol` lleva el **CUFE**, que es lo que identifica el documento ante el
    ente — el equivalente de la clave de acceso ecuatoriana.

  Los bloques `store`, `company` y `order` no cambian por país, así que se omiten acá y valen
  los del ejemplo de Ecuador.
</Note>

## Patrones comunes

* **Fetch en tiempo de impresión.** Llama este endpoint al momento de imprimir/renderizar y persiste la respuesta si necesitas artefactos durables — `pdfUrl` y `xmlUrl` pueden ser URLs firmadas que expiran.
* **Flag de consumidor final.** Siempre revisa `buyer.isFinalConsumer` antes de renderizar detalles del comprador. Para consumidores anónimos en BR, `govIdNumber` es `"00000000000"` y otros campos del comprador son `null`.
* **UI específica por país.** Usa `fiscal.countryCode` para despachar al template de renderizado correcto — DANFCE para BR NFC-e, estilo DIAN para CO, SRI para EC, etc.

## Relacionado

<CardGroup cols={2}>
  <Card title="Evento order.completed" icon="receipt" href="/es/events/order-completed">
    El snapshot completo de la orden — mucho más rico que fiscal-print, usado para integraciones no-print.
  </Card>

  <Card title="Evento order.invoiced" icon="file-invoice" href="/es/events/order-invoiced">
    Solo Brasil — dispara cuando SEFAZ autoriza; lleva las mismas referencias fiscales.
  </Card>

  <Card title="Callback fiscal" icon="webhook" href="/es/api-reference/fiscal-callback">
    El endpoint inbound que tu proveedor fiscal usa para actualizar el estado fiscal.
  </Card>
</CardGroup>
