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

# Inutilizar numeración

> Declarar rangos de números como no usados, o liberar el número de un DE rechazado.

La **inutilización** es un evento SIFEN que marca números de comprobante como **no utilizados**. A diferencia de la [cancelación](/tutoriales/cancelar-de), no opera sobre un DE aprobado — opera sobre **numeración** que querés cerrar oficialmente.

Hay dos variantes:

1. **Inutilizar un rango** — declarar un rango contiguo (`numero_desde` a `numero_hasta`) como no emitido. Útil al migrar, en gaps secuenciales, o para cerrar números "quemados" en pruebas.
2. **Inutilizar el número de un DE rechazado** — atajo para el caso común: después de un rechazo SIFEN (`R`), liberás ese número.

## Variables del ejemplo

```bash theme={null}
export EMITI_BASE_URL="https://api.emiti.fravelabs.com"
export EMITI_API_KEY="emiti_k_xxxxxxxxxxxxxxxxxxxxxxxx"
```

## Caso 1 — Inutilizar el número de un DE rechazado

Tu DE con CDC `01548...678X` fue rechazado por SIFEN. Querés liberar ese número y emitir el siguiente con `numero` automático:

```bash theme={null}
export CDC="01548730457001001000000112026061712345678X"

curl -s "$EMITI_BASE_URL/v1/de/$CDC/inutilizar-numero" \
  -X POST \
  -H "Authorization: ApiKey $EMITI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "motivo": "DE rechazado — número liberado para evitar gap" }'
```

El endpoint extrae establecimiento, punto, tipo y número del CDC automáticamente. Solo funciona si el DE está en estado `R`.

## Caso 2 — Inutilizar un rango durante migración

Migrás de un sistema legacy y los números 1000 a 1050 quedaron sin usar. Los declarás como inutilizados todos juntos:

```bash theme={null}
curl -s "$EMITI_BASE_URL/v1/de/inutilizar" \
  -X POST \
  -H "Authorization: ApiKey $EMITI_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "establecimiento": "001",
    "punto": "001",
    "tipo_de": 1,
    "numero_desde": 1000,
    "numero_hasta": 1050,
    "motivo": "Migración de sistema legacy — números no emitidos"
  }'
```

* `numero_desde` ≤ `numero_hasta` (puede ser el mismo si es un único número).
* El rango no puede solapar con números ya emitidos ni con rangos previamente inutilizados.
* `motivo` es **obligatorio para SIFEN** y debe ser descriptivo.

## Listar inutilizaciones previas

Antes de inutilizar un rango nuevo, podés revisar los ya declarados para evitar solapes:

```bash theme={null}
curl -s "$EMITI_BASE_URL/v1/de/inutilizaciones" \
  -H "Authorization: ApiKey $EMITI_API_KEY" | jq
```

Devuelve la lista con `establecimiento`, `punto`, `tipo`, `numero_desde`, `numero_hasta`, `motivo`, `created_at` y `protocolo` SIFEN.

## Errores típicos

| Código / status | Causa                                                      | Acción                                                                 |
| --------------- | ---------------------------------------------------------- | ---------------------------------------------------------------------- |
| `400`           | El rango solapa con números ya emitidos o ya inutilizados. | Listar inutilizaciones previas + verificar el último `numero` emitido. |
| `400`           | El DE no está en estado `R` (variante atajo).              | Verificar estado del DE.                                               |
| `409`           | El número ya fue inutilizado previamente.                  | No es necesario reintentar.                                            |
| `SIFEN_RECHAZO` | SIFEN rechazó el evento.                                   | Revisar `extra.codigo_sifen` — frecuentemente por `motivo` inadecuado. |

## Inutilización vs. cancelación

|                 | Cancelar                               | Inutilizar                                 |
| --------------- | -------------------------------------- | ------------------------------------------ |
| Opera sobre     | CDC de un DE **aprobado**              | Numeración (con o sin CDC)                 |
| Plazo           | 48 horas                               | Sin límite                                 |
| Estados destino | `A` → `C`                              | Reserva el número en SIFEN como "no usado" |
| Tutorial        | [cancelar-de](/tutoriales/cancelar-de) | (este)                                     |
