# mode_mismatch (/docs/errores/mode_mismatch)

Una credencial real nombró una empresa de prueba, o al revés.

|                    |                                                      |
| ------------------ | ---------------------------------------------------- |
| **Código**         | `mode_mismatch`                                      |
| **Tipo**           | `permission_error` — Credencial válida, no permitida |
| **HTTP**           | `403`                                                |
| **¿Reintentable?** | No                                                   |

## Qué hacer [#qué-hacer]

El modo lo da el prefijo de la llave y la empresa es de un tipo o del otro; §4.2 las hace invisibles entre sí en LOS DOS SENTIDOS. Una llave `sk_test_` opera un sandbox completamente simulado, así que solo puede dirigirse a una empresa de prueba — contra una real la puerta aceptaría un documento simulado que el motor después rechaza. La unicidad es por modo, así que el mismo RUT puede tener a la vez una empresa de prueba y una real: crea la copia de prueba, o usa la llave que corresponde. `ambiente` es otro eje y lo da la empresa (§4.1).

> **Advertencia**
>
> Reintentar el mismo request va a fallar igual. Cambia el request, no la frecuencia.

## El sobre [#el-sobre]

```json
{
  "error": {
    "type": "permission_error",
    "code": "mode_mismatch",
    "message": "…",
    "hint": "Mode comes from the key prefix and the empresa is one or the other; §4.2 makes them invisible to each other in BOTH directions. An `sk_test_` key drives a fully mocked sandbox, so it may only address a sandbox empresa — against a live one the door would accept a mocked document that the engine then refuses. Uniqueness is per mode, so the same RUT can hold a sandbox empresa and a live one at once: create the sandbox copy, or use the key that matches. `ambiente` is a separate axis and comes from the empresa (§4.1).",
    "retriable": false,
    "doc_url": "https://docs.facturia.cl/errors/mode_mismatch",
    "request_id": "req_01K2R7Q9M4T2VB"
  }
}
```

Programa contra `code`, nunca contra `message` — la prosa se puede reescribir, el código no (§5.8).

`hint` y `retriable` llegan en la respuesta, con estos mismos valores: son función del `code` y salen del mismo diccionario que sirve `GET /v1/error_codes`, así que el sobre y el diccionario no pueden discrepar. `hint` va en inglés a propósito — el español de este código es esta ficha. Más en [El sobre de error](/docs/errores).

## También [#también]

- [Todos los códigos](/docs/errores/codigos): La tabla completa, agrupada por dónde te la vas a encontrar.

- [El sobre de error](/docs/errores): Los nueve tipos, el request_id y cómo manejarlos en la práctica.

La copia legible por máquina de esta ficha vive en `GET /v1/error_codes`, sin autenticación.
