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

# SLC error list

> Look up the Lerian SLC error codes, the HTTP status each one carries, and the Nuclea rejection codes that reach you on a settlement operation.

**Error format**

Lerian SLC returns errors as RFC 9457 problem details with the `application/problem+json` media type:

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

**Field definitions**

* **`type`** – A URI that identifies the error in the Lerian error catalog, built as `https://errors.lerian.studio/v1/<code>`.
* **`title`** – The HTTP status text, for example `Conflict` or `Unprocessable Entity`. It comes from the status, not from the name of the error.
* **`status`** – The HTTP status code, repeated from the response status line.
* **`detail`** – An explanation specific to this occurrence. A response with status 500 or above carries the fixed text `internal error`, so branch on `code` instead of parsing this field.
* **`code`** – The stable machine identifier, in the form `SLC-NNNN`. Branch on this field.
* **`errors`** – A list of per-field details, each with a `location`, a `message`, and the offending `value`. A schema validation failure lists one entry per field.

## Platform and request errors

***

These codes can arrive from any endpoint. Each one describes the request, the credential, or the availability of the service rather than the settlement operation itself.

| `code`   | Description                                                                                                          | Status |
| -------- | -------------------------------------------------------------------------------------------------------------------- | ------ |
| SLC-0001 | The request is malformed. A payload, a filter, or a path value failed validation.                                    | 400    |
| SLC-0002 | The service met an unexpected condition. The `detail` reads `internal error`.                                        | 500    |
| SLC-0003 | The request reached a protected route without a valid bearer token.                                                  | 401    |
| SLC-0004 | The credential is authenticated but lacks the permission the route requires.                                         | 403    |
| SLC-0005 | The requested resource does not exist.                                                                               | 404    |
| SLC-0006 | The request is well formed, and a business rule refuses it.                                                          | 422    |
| SLC-0007 | The resource sits in a state that forbids the action, such as a replay of a webhook delivery that already went out.  | 409    |
| SLC-0008 | A transport or a dependency is unavailable. The condition clears by itself, so retry the request.                    | 503    |
| SLC-0010 | The request body is above the accepted size.                                                                         | 413    |
| SLC-0011 | A 4xx condition without a more specific code. A `405 Method Not Allowed` keeps its own status and carries this code. | 4xx    |
| SLC-0012 | The route is mounted, and your deployment configuration does not make it available.                                  | 501    |

## Settlement operation errors

***

These codes come from the operations domain. They describe the settlement instruction you submitted, the original operation a cancellation targets, or the answer a reconcile received from the counterparty.

| `code`   | Description                                                                                                                                                                         | Status |
| -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------ |
| SLC-0102 | An ISPB in the request body is absent or is not eight digits. It covers the creditor, domicile, and settlement ISPBs, the counterparty registration, and the reconcile participant. | 422    |
| SLC-0103 | The `operationType` is a recognised value that is not enabled for submission.                                                                                                       | 422    |
| SLC-0104 | The `externalId` already belongs to another operation.                                                                                                                              | 409    |
| SLC-0105 | The operation sits in a state that does not permit the transition you asked for.                                                                                                    | 409    |
| SLC-0106 | The operation the request names does not exist.                                                                                                                                     | 404    |
| SLC-0107 | The NDJSON batch carries more lines than the configured cap.                                                                                                                        | 413    |
| SLC-0108 | The NUliquid you supplied is not 21 positions. The format check runs before any lookup.                                                                                             | 422    |
| SLC-0109 | The `participantId` is not registered.                                                                                                                                              | 422    |
| SLC-0110 | The retry chain of the operation reached its limit.                                                                                                                                 | 409    |
| SLC-0111 | An advance arrived without the justification it requires. The advance is audited, so the reason and the evidence are mandatory.                                                     | 400    |
| SLC-0112 | A live operation already exists for the same `externalId`. Converge on that operation instead of creating a second instruction.                                                     | 409    |
| SLC-0113 | The original operation no longer accepts a cancellation. It is already cancelled, in settlement, settled, or confirmed on D+1.                                                      | 409    |
| SLC-0114 | The `originalOperationId` a cancellation references does not exist.                                                                                                                 | 422    |
| SLC-0115 | The original operation carries a type that does not accept a cancellation. Only CREDIT and DEBIT movements are cancellable.                                                         | 422    |
| SLC-0116 | Nuclea has not accepted the original operation yet, so it holds no NUliquid and the cancellation has no movement to block.                                                          | 409    |
| SLC-0117 | A cancellation is already in progress for the same original operation.                                                                                                              | 409    |
| SLC-0118 | The retry targets a rejected operation whose money already settled.                                                                                                                 | 409    |
| SLC-0119 | The operation holds no NUliquid, so the reconcile has no key to query with. The `detail` names the recovery that suits the current state.                                           | 409    |
| SLC-0120 | The NUliquid of the operation falls outside the 30-day online query horizon. A retry does not help, because the horizon moves further away.                                         | 409    |
| SLC-0121 | The counterparty answered a settlement status outside the mapped vocabulary, and the reconcile recorded nothing. The `detail` quotes the token so you can raise it with Nuclea.     | 409    |
| SLC-0122 | The counterparty answered about a different NUliquid from the one queried, so the answer describes another operation and the reconcile recorded nothing.                            | 409    |
| SLC-0123 | The settlement query produced no answer about the operation because of a condition on the channel. The `detail` names the condition.                                                | 409    |
| SLC-0150 | A cancellation arrived without the numeric reason category the Nuclea layout requires.                                                                                              | 422    |

## Nuclea rejection codes

***

Nuclea, the clearing house that operates the SLC, answers a submission or a return file with its own business error codes, in the form `ESLCNNNN`. Lerian SLC records them against the operation and hands them back unchanged. The operation detail response carries `eslcErrors`, an array of the recorded codes that is empty when the operation has none, and `lastError`, the recorded codes joined into one string. Each code value arrives verbatim from the network, so read it as Nuclea vocabulary rather than a Lerian code.

Nuclea defines 85 of these codes in its SLC layout manual. The table below covers the ones that change what you do next.

| `code`   | Description                                                                                       | What to do                                                                                                                                                                                 |
| -------- | ------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| ESLC0006 | The date is invalid.                                                                              | Correct the date and submit again.                                                                                                                                                         |
| ESLC0007 | The CPF or CNPJ is invalid.                                                                       | Correct the document number and submit again.                                                                                                                                              |
| ESLC0029 | The request arrived outside the scheduled window.                                                 | Submit in the next window. Lerian SLC queues an operation submitted outside its window and dispatches it when the window opens. See [SLC operations](/en/rails/native/slc/slc-operations). |
| ESLC0042 | An enrolment for this feature does not exist.                                                     | Complete the enrolment with Nuclea, then submit again.                                                                                                                                     |
| ESLC0097 | The settlement number is not registered.                                                          | Check the NUliquid the request references.                                                                                                                                                 |
| ESLC0119 | The administered participant is not administered by the principal participant.                    | Correct the participant registration with Nuclea. The same file succeeds once the registration matches.                                                                                    |
| ESLC0123 | The participant did not enrol in the feature.                                                     | Complete the enrolment with Nuclea. The same file succeeds afterwards.                                                                                                                     |
| ESLC0140 | The arrangement institutor code is not permitted for the file type sent.                          | Correct the arrangement registration, then submit again.                                                                                                                                   |
| ESLC0161 | An administered participant may not submit over HTTP.                                             | Submit through the transport registered for that participant.                                                                                                                              |
| ESLC0163 | The payment date is not permitted for a cancellation.                                             | Cancel inside the date range the original operation permits.                                                                                                                               |
| ESLC0164 | The record is already cancelled, settled, or in settlement, so it does not accept a cancellation. | Stop the cancellation. Lerian SLC refuses the same condition locally with `SLC-0113`.                                                                                                      |
| ESLC1017 | The settlement numbers for a cancellation on the date given were not found.                       | Check the date and the settlement numbers the request references.                                                                                                                          |

<Note>
  Four of these codes reach you on a synchronous refusal of a file submission: `ESLC0119`, `ESLC0123`, `ESLC0140`, and `ESLC0161`. They arrive on the `operation.forward_rejected` event, in `rejectionCode`, rather than on the return file. Each one is a registration or enrolment condition that applies to every file the participant sends, and a registration change at Nuclea clears it. The file itself needs no edit.
</Note>

**The remaining codes**

The rest of the catalog describes the submitted record or the participant registration. The largest families are:

* **Field domain and format** – A value sits outside the domain the layout permits, or a segment carries the wrong format. Currency codes, person types, arrangement institutors, and occurrence codes appear here.
* **Registration and enrolment** – A CNPJ, an ISPB, or a participant relationship differs from what Nuclea holds for the acquirer.
* **Duplicate control numbers** – A control number or a file name repeats one Nuclea already registered.
* **Dates and reporting periods** – A payment date, a reference date, or a report range sits outside what the product type permits.
* **Record state and occurrence codes** – The occurrence code does not suit the current state of the record, such as a settled record or a cancelled one.
* **Return periods** – The record sits inside a return period, and Nuclea names the file type that carries the correction.
* **Limits and volumes** – A payment amount, a file count, or a record count sits above the accepted maximum.

A code from any of these families reaches you on the return file, through `eslcErrors` on the operation. Quote the code when you raise the case with Nuclea, because it is the identifier Nuclea support works from.
