[{"slug":"llave-invalida","estado":401,"titulo":"No autenticado","codigos":["FACTO-2001"],"quienLoArregla":"integrador","queHacer":"Envia la llave en la cabecera x-api-key. Confirma que funciona con GET /v1/llaves/actual."},{"slug":"ambiente-no-corresponde","estado":403,"titulo":"No autorizado","codigos":["FACTO-2002"],"quienLoArregla":"integrador","queHacer":"La llave es de otro ambiente: usa fk_test_ contra pruebas y fk_live_ contra produccion."},{"slug":"recurso-no-encontrado","estado":404,"titulo":"Recurso no encontrado","codigos":["FACTO-2003"],"quienLoArregla":"integrador","queHacer":"Verifica la ruta y el identificador."},{"slug":"metodo-no-soportado","estado":405,"titulo":"Metodo no soportado","codigos":["FACTO-2017"],"quienLoArregla":"integrador","queHacer":"Usa uno de los metodos que lista la cabecera Allow."},{"slug":"sri-no-disponible","estado":503,"titulo":"Servicio no disponible","codigos":["FACTO-2004"],"quienLoArregla":"sri","queHacer":"Nada que corregir: espera lo que diga Retry-After y reintenta. Las emisiones encoladas reintentan solas."},{"slug":"clave-idempotencia-reutilizada","estado":422,"titulo":"La clave de idempotencia ya se uso con otro contenido","codigos":["FACTO-2010"],"quienLoArregla":"integrador","queHacer":"Una clave por intento: contenido nuevo, clave nueva."},{"slug":"peticion-en-curso","estado":409,"titulo":"Hay una peticion en curso con esta clave","codigos":["FACTO-2011"],"quienLoArregla":"integrador","queHacer":"Espera los segundos de Retry-After y repite la misma peticion: recibiras la respuesta original."},{"slug":"falta-clave-idempotencia","estado":400,"titulo":"Falta la cabecera Idempotency-Key","codigos":["FACTO-2012"],"quienLoArregla":"integrador","queHacer":"Envia un identificador unico por intento, por ejemplo un UUID, en la cabecera Idempotency-Key."},{"slug":"clave-idempotencia-invalida","estado":400,"titulo":"La clave de idempotencia no es valida","codigos":["FACTO-2015"],"quienLoArregla":"integrador","queHacer":"Maximo 255 caracteres. Un UUID es suficiente."},{"slug":"demasiadas-peticiones","estado":429,"titulo":"Demasiadas peticiones","codigos":["FACTO-2013"],"quienLoArregla":"integrador","queHacer":"Espacia las peticiones segun Retry-After. Con llave el techo por defecto es 600/min por llave; sin llave, 60 por IP."},{"slug":"contenido-no-soportado","estado":415,"titulo":"Tipo de contenido no soportado","codigos":["FACTO-2016"],"quienLoArregla":"integrador","queHacer":"Envia el cuerpo con Content-Type: application/json. Sin esa cabecera el cuerpo se ignoraria entero."},{"slug":"rol-insuficiente","estado":403,"titulo":"La llave no tiene el rol para esta operacion","codigos":["FACTO-2021"],"quienLoArregla":"integrador","queHacer":"Las rutas /v1/admin son del operador del despliegue. Emite y consulta con tu llave por las rutas normales (/v1/facturas, /v1/comprobantes)."},{"slug":"saldo-agotado","estado":402,"titulo":"El paquete de comprobantes se agoto","codigos":["FACTO-2018"],"quienLoArregla":"emisor","queHacer":"El comprobante NO se emitio y la numeracion no avanzo. Recarga un paquete con el operador del despliegue y reintenta la misma peticion."},{"slug":"paquete-vencido","estado":403,"titulo":"El paquete de comprobantes vencio","codigos":["FACTO-2019"],"quienLoArregla":"emisor","queHacer":"Los paquetes de la cuenta caducaron con saldo sin usar. Recarga un paquete con el operador del despliegue."},{"slug":"emisor-no-autorizado","estado":403,"titulo":"El RUC emisor no pertenece a esta cuenta","codigos":["FACTO-2020"],"quienLoArregla":"emisor","queHacer":"La llave usada no tiene autorizado ese RUC emisor. Verifica el RUC de la peticion; si es tuyo, pide al operador del despliegue que lo asigne a tu cuenta."},{"slug":"cuerpo-demasiado-grande","estado":413,"titulo":"El cuerpo de la peticion es demasiado grande","codigos":["FACTO-2014"],"quienLoArregla":"integrador","queHacer":"El limite es 1 MB. Divide la factura o consulta con el operador del despliegue."},{"slug":"error-interno","estado":500,"titulo":"Error interno","codigos":["FACTO-5000"],"quienLoArregla":"emisor","queHacer":"Reporta el requestId (viene en el cuerpo y en la cabecera x-request-id) al operador del despliegue."},{"slug":"http-400","estado":400,"titulo":"Peticion mal formada","codigos":["FACTO-HTTP-400"],"quienLoArregla":"integrador","queHacer":"Corrige los campos que lista errors[]; field trae la ruta completa (emisor.ruc, detalles.0.cantidad)."},{"slug":"valor-invalido","estado":422,"titulo":"Un valor no cumple el esquema del SRI","codigos":["FACTO-1001"],"quienLoArregla":"integrador","queHacer":"Corrige el campo que indica errors[].field."},{"slug":"digito-verificador-invalido","estado":422,"titulo":"El digito verificador no coincide","codigos":["FACTO-1002"],"quienLoArregla":"integrador","queHacer":"Verifica el RUC o la cedula: casi siempre es un digito transcrito mal."},{"slug":"precision-excedida","estado":422,"titulo":"La precision numerica excede lo que admite el esquema","codigos":["FACTO-1003"],"quienLoArregla":"integrador","queHacer":"Redondea antes de enviar: 2 decimales en totales, 6 en cantidades y precios unitarios."},{"slug":"fecha-inexistente","estado":422,"titulo":"La fecha no existe en el calendario","codigos":["FACTO-1004"],"quienLoArregla":"integrador","queHacer":"Corrige la fecha."},{"slug":"comprobante-no-encontrado","estado":404,"titulo":"Recurso no encontrado","codigos":["FACTO-1051"],"quienLoArregla":"integrador","queHacer":"Verifica el id. Para reconciliar estan el listado y la busqueda por clave de acceso."},{"slug":"numeracion-ya-configurada","estado":409,"titulo":"La numeracion ya estaba configurada","codigos":["FACTO-1022"],"quienLoArregla":"integrador","queHacer":"El alta no reinicia una numeracion existente. Para avanzarla usa PATCH /v1/puntos-emision; retroceder no existe."},{"slug":"destino-webhook-invalido","estado":422,"titulo":"El destino del webhook no se puede usar","codigos":["FACTO-1100"],"quienLoArregla":"integrador","queHacer":"Debe ser https hacia una direccion publica. El motivo exacto viene en errors[]."},{"slug":"certificado-de-otro-ruc","estado":422,"titulo":"El certificado es de otro contribuyente","codigos":["FACTO-1015"],"quienLoArregla":"emisor","queHacer":"Sube el certificado del contribuyente correcto."},{"slug":"certificado-vencido","estado":422,"titulo":"El certificado ya vencio","codigos":["FACTO-1016"],"quienLoArregla":"emisor","queHacer":"Renuevalo con la certificadora y subelo. Con el vencido no se puede firmar nada."},{"slug":"certificadora-no-soportada","estado":500,"titulo":"La entidad certificadora no esta soportada","codigos":["FACTO-1014"],"quienLoArregla":"emisor","queHacer":"Usa un certificado de una certificadora acreditada en Ecuador."},{"slug":"contrasena-de-certificado-incorrecta","estado":500,"titulo":"La contrasena no abre el certificado","codigos":["FACTO-1013"],"quienLoArregla":"emisor","queHacer":"Corrige la contrasena. Nunca la pases por argumentos de proceso: ps la muestra."},{"slug":"certificado-invalido","estado":500,"titulo":"El certificado de firma no se puede leer","codigos":["FACTO-1011"],"quienLoArregla":"emisor","queHacer":"El archivo esta danado o no es un .p12: vuelve a exportarlo y subirlo (runbook seccion 3)."},{"slug":"certificado-no-disponible","estado":500,"titulo":"No hay certificado de firma configurado","codigos":["FACTO-1012"],"quienLoArregla":"emisor","queHacer":"Monta el .p12 (modo archivo) o subelo por la API (modo base)."},{"slug":"regla-de-dominio","estado":422,"titulo":"No se cumple una regla del dominio fiscal","codigos":["FACTO-1010","FACTO-1020","FACTO-1021","FACTO-1030","FACTO-1031","FACTO-1040","FACTO-1050","FACTO-1052","FACTO-1060","FACTO-1070","FACTO-1071","FACTO-1072","FACTO-1080","FACTO-1090","FACTO-1091"],"quienLoArregla":"integrador","queHacer":"El detail explica la regla y el code dice cual es; el detalle de cada codigo esta en docs/operacion/errores.md."}]