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

# Lista de errores de SLC

> Consulta los códigos de error de Lerian SLC, el estado HTTP que lleva cada uno y los códigos de rechazo de Nuclea que recibes en una operación de liquidación.

**Formato de error**

Lerian SLC devuelve los errores como problem details de RFC 9457 con el tipo de medio `application/problem+json`:

<CodeGroup>
  ```json JSON theme={null}
  {
    "type": "https://errors.lerian.studio/v1/SLC-0105",
    "title": "Conflict",
    "status": 409,
    "detail": "operation is not in a state that permits this transition",
    "code": "SLC-0105"
  }
  ```
</CodeGroup>

**Definiciones de campos**

* **`type`** – Un URI que identifica el error en el catálogo de errores de Lerian, construido como `https://errors.lerian.studio/v1/<code>`.
* **`title`** – El texto del estado HTTP, por ejemplo `Conflict` o `Unprocessable Entity`. Proviene del estado, no del nombre del error.
* **`status`** – El código de estado HTTP, repetido de la línea de estado de la respuesta.
* **`detail`** – Una explicación específica de esta ocurrencia. Una respuesta con estado 500 o superior lleva el texto fijo `internal error`, así que usa `code` para decidir la rama en lugar de analizar este campo.
* **`code`** – El identificador estable para máquinas, con el formato `SLC-NNNN`. Usa este campo para decidir la rama.
* **`errors`** – Una lista de detalles por campo, cada uno con una `location`, un `message` y el `value` que causó el problema. Un fallo de validación de esquema lista una entrada por campo.

## Errores de plataforma y de solicitud

***

Estos códigos pueden llegar desde cualquier endpoint. Cada uno describe la solicitud, la credencial o la disponibilidad del servicio, no la operación de liquidación en sí.

| `code` | Descripción | Estado |
| - | - | - |
| SLC-0001 | La solicitud está mal formada. Un payload, un filtro o un valor de la ruta no pasó la validación. | 400 |
| SLC-0002 | El servicio encontró una condición inesperada. El `detail` muestra `internal error`. | 500 |
| SLC-0003 | La solicitud llegó a una ruta protegida sin un token bearer válido. | 401 |
| SLC-0004 | La credencial está autenticada, pero carece del permiso que exige la ruta. | 403 |
| SLC-0005 | El recurso solicitado no existe. | 404 |
| SLC-0006 | La solicitud está bien formada, y una regla de negocio la rechaza. | 422 |
| SLC-0007 | El recurso está en un estado que prohíbe la acción, como la repetición de una entrega de webhook que ya se envió. | 409 |
| SLC-0008 | Un transporte o una dependencia no está disponible. La condición se resuelve sola, así que reintenta la solicitud. | 503 |
| SLC-0010 | El cuerpo de la solicitud supera el tamaño aceptado. | 413 |
| SLC-0011 | Una condición 4xx sin un código más específico. Un `405 Method Not Allowed` conserva su propio estado y lleva este código. | 4xx |
| SLC-0012 | La ruta está montada, y la configuración de tu despliegue no la deja disponible. | 501 |

## Errores de operación de liquidación

***

Estos códigos provienen del dominio de operaciones. Describen la instrucción de liquidación que enviaste, la operación original a la que apunta una cancelación, o la respuesta que recibió una conciliación de la contraparte.

| `code` | Descripción | Estado |
| - | - | - |
| SLC-0102 | Un ISPB en el cuerpo de la solicitud está ausente o no tiene ocho dígitos. Esto abarca los ISPB del acreedor, del domicilio y de la liquidación, el registro de la contraparte y el participante de la conciliación. | 422 |
| SLC-0103 | El `operationType` es un valor reconocido que no está habilitado para el envío. | 422 |
| SLC-0104 | El `externalId` ya pertenece a otra operación. | 409 |
| SLC-0105 | La operación está en un estado que no permite la transición que solicitaste. | 409 |
| SLC-0106 | La operación que nombra la solicitud no existe. | 404 |
| SLC-0107 | El lote NDJSON lleva más líneas que el límite configurado. | 413 |
| SLC-0108 | El NUliquid que suministraste no tiene 21 posiciones. La verificación de formato se ejecuta antes de cualquier búsqueda. | 422 |
| SLC-0109 | El `participantId` no está registrado. | 422 |
| SLC-0110 | La cadena de reintentos de la operación alcanzó su límite. | 409 |
| SLC-0111 | Un anticipo llegó sin la justificación que exige. El anticipo se audita, así que el motivo y la evidencia son obligatorios. | 400 |
| SLC-0112 | Ya existe una operación activa para el mismo `externalId`. Converge en esa operación en lugar de crear una segunda instrucción. | 409 |
| SLC-0113 | La operación original ya no acepta una cancelación. Ya está cancelada, en liquidación, liquidada o confirmada en D+1. | 409 |
| SLC-0114 | El `originalOperationId` al que hace referencia una cancelación no existe. | 422 |
| SLC-0115 | La operación original lleva un tipo que no acepta cancelación. Solo los movimientos CREDIT y DEBIT se pueden cancelar. | 422 |
| SLC-0116 | Nuclea todavía no aceptó la operación original, así que no tiene NUliquid y la cancelación no tiene movimiento que bloquear. | 409 |
| SLC-0117 | Ya hay una cancelación en curso para la misma operación original. | 409 |
| SLC-0118 | El reintento apunta a una operación rechazada cuyo dinero ya se liquidó. | 409 |
| SLC-0119 | La operación no tiene NUliquid, así que la conciliación no tiene una clave con la cual consultar. El `detail` nombra la recuperación adecuada para el estado actual. | 409 |
| SLC-0120 | El NUliquid de la operación queda fuera del horizonte de consulta en línea de 30 días. Reintentar no ayuda, porque el horizonte se aleja cada vez más. | 409 |
| SLC-0121 | La contraparte respondió con un estado de liquidación fuera del vocabulario mapeado, y la conciliación no registró nada. El `detail` cita el token para que puedas plantearlo con Nuclea. | 409 |
| SLC-0122 | La contraparte respondió sobre un NUliquid distinto del consultado, así que la respuesta describe otra operación y la conciliación no registró nada. | 409 |
| SLC-0123 | La consulta de liquidación no produjo respuesta sobre la operación debido a una condición en el canal. El `detail` nombra la condición. | 409 |
| SLC-0150 | Una cancelación llegó sin la categoría numérica de motivo que exige el layout de Nuclea. | 422 |

## Códigos de rechazo de Nuclea

***

Nuclea, la cámara de compensación que opera la SLC, responde a un envío o a un archivo de retorno con sus propios códigos de error de negocio, con el formato `ESLCNNNN`. Lerian SLC los registra contra la operación y los devuelve sin cambios. La respuesta de detalle de la operación lleva `eslcErrors`, un arreglo de los códigos registrados que está vacío cuando la operación no tiene ninguno, y `lastError`, los códigos registrados unidos en una sola cadena. Cada valor de código llega textual desde la red, así que interprétalo como vocabulario de Nuclea y no como un código de Lerian.

Nuclea define 85 de estos códigos en su manual de layout de SLC. La siguiente tabla cubre los que cambian lo que debes hacer a continuación.

| `code` | Descripción | Qué hacer |
| - | - | - |
| ESLC0006 | La fecha no es válida. | Corrige la fecha y envía de nuevo. |
| ESLC0007 | El CPF o el CNPJ no es válido. | Corrige el número de documento y envía de nuevo. |
| ESLC0029 | La solicitud llegó fuera de la ventana programada. | Envíala en la siguiente ventana. Lerian SLC pone en cola una operación enviada fuera de su ventana y la despacha cuando la ventana se abre. Consulta [Operaciones de SLC](/es/rails/slc/slc-operations). |
| ESLC0042 | No existe una inscripción para esta función. | Completa la inscripción con Nuclea y luego envía de nuevo. |
| ESLC0097 | El número de liquidación no está registrado. | Verifica el NUliquid al que hace referencia la solicitud. |
| ESLC0119 | El participante administrado no está administrado por el participante principal. | Corrige el registro del participante con Nuclea. El mismo archivo tiene éxito en cuanto el registro coincide. |
| ESLC0123 | El participante no se inscribió en la función. | Completa la inscripción con Nuclea. El mismo archivo tiene éxito después. |
| ESLC0140 | El código de instituidor del arreglo no está permitido para el tipo de archivo enviado. | Corrige el registro del arreglo y luego envía de nuevo. |
| ESLC0161 | Un participante administrado no puede enviar por HTTP. | Envía a través del transporte registrado para ese participante. |
| ESLC0163 | La fecha de pago no está permitida para una cancelación. | Cancela dentro del rango de fechas que permite la operación original. |
| ESLC0164 | El registro ya está cancelado, liquidado o en liquidación, así que no acepta una cancelación. | Detén la cancelación. Lerian SLC rechaza la misma condición localmente con `SLC-0113`. |
| ESLC1017 | No se encontraron los números de liquidación para una cancelación en la fecha indicada. | Verifica la fecha y los números de liquidación a los que hace referencia la solicitud. |

<Note>
  Cuatro de estos códigos te llegan en un rechazo síncrono del envío de un archivo: `ESLC0119`, `ESLC0123`, `ESLC0140` y `ESLC0161`. Llegan en el evento `operation.forward_rejected`, en `rejectionCode`, en lugar de en el archivo de retorno. Cada uno es una condición de registro o de inscripción que se aplica a todos los archivos que envía el participante, y un cambio de registro en Nuclea la resuelve. El archivo en sí no necesita ninguna edición.
</Note>

**Los códigos restantes**

El resto del catálogo describe el registro enviado o el registro del participante. Las familias más grandes son:

* **Dominio y formato de campo** – Un valor está fuera del dominio que permite el layout, o un segmento lleva el formato incorrecto. Aquí aparecen los códigos de moneda, los tipos de persona, los instituidores de arreglo y los códigos de ocurrencia.
* **Registro e inscripción** – Un CNPJ, un ISPB o una relación de participante difiere de lo que Nuclea tiene registrado para el adquirente.
* **Números de control duplicados** – Un número de control o un nombre de archivo repite uno que Nuclea ya registró.
* **Fechas y períodos de reporte** – Una fecha de pago, una fecha de referencia o un rango de reporte está fuera de lo que permite el tipo de producto.
* **Estado del registro y códigos de ocurrencia** – El código de ocurrencia no corresponde al estado actual del registro, como un registro liquidado o uno cancelado.
* **Períodos de retorno** – El registro está dentro de un período de retorno, y Nuclea indica el tipo de archivo que lleva la corrección.
* **Límites y volúmenes** – Un monto de pago, una cantidad de archivos o una cantidad de registros supera el máximo aceptado.

Un código de cualquiera de estas familias te llega en el archivo de retorno, a través de `eslcErrors` en la operación. Cita el código cuando plantees el caso con Nuclea, porque es el identificador con el que trabaja el soporte de Nuclea.
