<!-- source_url: https://docsapi.ecuafact.com/v1/guias/cli-emision | last_updated: 2026-10-19 -->

# Emitir con el CLI

Emite uno o muchos comprobantes desde archivos JSON con `ecuafact emitir` y sigue cada uno hasta que el SRI responde.

Con `ecuafact emitir` puedes emitir un comprobante, un lote de comprobantes o
una carpeta entera, y ver el resultado de cada uno. Cada archivo
lleva la misma estructura de
[comprobante](/v1/guias/glosario#comprobante-electronico) que recibe la API, que
se explica en [Emisión de comprobantes](/v1/guias/emision), así que puedes
reutilizar los JSON que ya genera tu sistema.

En esta página verás cómo emitir y validar antes de enviar, qué significa cada
estado que muestra el CLI, cómo reanudar un lote que se cortó y cómo consultar,
descargar y reenviar lo que ya emitiste.

> [!IMPORTANT]
> Ambiente de pruebas: sin validez fiscal. Los ejemplos usan el entorno
> `sandbox` configurado en tu perfil, como se explica en el
> [inicio rápido del CLI](/v1/guias/cli#inicio-rapido).

## Emitir

```bash
ecuafact emitir factura.json
ecuafact emitir lote.json ventas.jsonl
ecuafact emitir ./pendientes -r
ecuafact emitir factura.json --esperar --descargar ride,xml
mi-erp exportar | ecuafact emitir -
```

`emitir` acepta archivos `.json` con un comprobante o con un array de
comprobantes, archivos `.jsonl`, carpetas y la entrada estándar si escribes
`-`. Si tus datos están en un CSV o un Excel, sigue la guía
[Emitir desde CSV o Excel](/v1/guias/cli-csv-excel).

Cuando un comprobante del lote tiene errores, el CLI no envía ninguno. Corrige el comprobante y vuelve a ejecutar el
comando, o agrega `--continuar-con-errores` si prefieres enviar los válidos.

Puedes reenviar el mismo comprobante sin duplicarlo, porque el CLI lo reconoce por su
`origenReferencia` y su
[referenciaExterna](/v1/guias/glosario#referencia-externa). Por eso, cuando
quieras emitir un comprobante nuevo o una versión corregida de uno rechazado,
dale otra `referenciaExterna`.

Antes de emitir puedes revisar el comprobante sin enviar nada. `validar` busca
errores en el archivo, y `--dry-run` hace lo mismo y además comprueba con la
API que tu RUC esté habilitado.

```bash
ecuafact validar factura.json
ecuafact emitir factura.json --dry-run
```

Todas las opciones de `emitir` están en la
[referencia](/v1/guias/cli-referencia#ecuafact-emitir).

## Resultado de cada comprobante

Al terminar, el CLI muestra una fila por comprobante con su estado. Esta tabla
dice qué significa cada uno y qué hacer.

| Estado | Qué hacer |
|---|---|
| `autorizado` | No hagas nada. En `produccion` tiene validez fiscal. |
| `enviado` | La API lo recibió y aún no hay resultado del SRI. Usa `--esperar` o consulta con `ecuafact estado <idOperacion>`. |
| `en_proceso` | Seguía sin resultado al terminar la espera. Consulta más tarde y no lo emitas con otra `referenciaExterna`, porque lo duplicarías. |
| `rechazado` | El SRI no lo autorizó. Corrígelo y emítelo con una `referenciaExterna` nueva. |
| `invalido`, `error` | Tiene errores y no llegó al SRI. Corrígelo según el mensaje. |
| `no_enviado` | No se envió porque otro comprobante del lote tiene errores. |
| `pendiente` | No se confirmó el envío. Reanuda el lote. |
| `cancelado` | No se emitió. Emítelo con una `referenciaExterna` nueva. |

Si necesitas conservar el resultado, agrega `--reporte resultado.csv` (o
`.json`). El CLI guarda una fila por comprobante, con su `idOperacion` y su
[clave de acceso](/v1/guias/glosario#clave-de-acceso).

## Lotes

Cada ejecución de `emitir` queda registrada como un lote, así que si se corta a
la mitad, por ejemplo porque se cayó la conexión, puedes reanudarlo en el mismo
entorno en el que lo empezaste sin duplicar los comprobantes que ya se
enviaron.

```bash
ecuafact lote listar
ecuafact lote estado 20261017-093012-0a66
ecuafact lote reanudar 20261017-093012-0a66 --esperar
```

## Seguimiento y consultas

Para saber en qué quedó una emisión, consulta su operación con `estado`. Para
revisar lo que emitiste en un período, usa `comprobantes listar`, que también
puede exportar el listado a un CSV.

```bash
ecuafact estado 3f1c8c1e-6f2a-4b7e-9c3d-2a1b0c9d8e7f
ecuafact comprobantes listar --desde 2026-10-01 --hasta 2026-10-15 --tipo 01 --todas
ecuafact comprobantes listar --todas --salida csv > emitidos.csv
```

## Descargar y reenviar

`descargar` baja el RIDE y el XML de los comprobantes autorizados, y
`correo reenviar` vuelve a enviar un comprobante por correo a las direcciones
que indiques.

```bash
ecuafact descargar 0710202601012345678900110010010000001231234567811 --tipo ride,xml
ecuafact descargar --desde 2026-10-01 --hasta 2026-10-31 --destino ./octubre
ecuafact correo reenviar 0710202601012345678900110010010000001231234567811 --a cliente@correo.com
```

Si llamas a `descargar` sin claves de acceso, descarga todos los comprobantes
autorizados del período que indiques.

## Errores frecuentes

| Mensaje | Qué hacer |
|---|---|
| `Credenciales invalidas.` | Ejecuta `ecuafact doctor` y revisa la API Key del entorno y que tu IP esté registrada. |
| `El RUC ... no esta habilitado para esta API Key en este entorno.` | Usa uno de tus RUC, que puedes ver con `ecuafact cuenta`, y revisa el entorno. |
| `Cupo insuficiente: ...` | Revisa tu cupo con `ecuafact consumo`. |
| `Operacion en PRODUCCION sin confirmar` | En un script, agrega `--confirmar produccion`. |
| `El lote es del entorno '...'` | Reanuda el lote con el mismo `--entorno` con el que lo emitiste. |

## Siguientes pasos

- [Emitir desde CSV o Excel](/v1/guias/cli-csv-excel): emite desde las filas de tu archivo sin escribir JSON.
- [Vigilar una carpeta](/v1/guias/cli-vigilar): emite automáticamente los archivos que deja tu ERP.
- [Referencia de comandos](/v1/guias/cli-referencia): consulta todas las opciones y los códigos de salida.
