Factura Electrónica de Contingencia

Instrucciones para Facturar en Modo Contingencia (Costa Rica)

En caso de ocurrir una situación imprevista que no permita crear facturas electrónicas (como una avería en el servicio de internet, o si el sistema del Ministerio de Hacienda no está disponible) deberá hacer uso de métodos de contingencia.

Opción para Personas Físicas y Jurídicas:

Emitir comprobantes pre-impresos emitidos por una imprenta debidamente autorizada por la Dirección General de Tributación de Costa Rica y cumpliendo con las características del artículo 15 de la Resolución DGT-R-48-2016.

Estos comprobantes no sustituyen a los electrónicos, y serás solamente temporales mientras tanto no se haya podido emitir el documento electrónico correspondiente.

Una vez superada la contingencia, se debe crear la factura electrónica correspondiente la cual debe tener información de referencia al comprobante de contingencia que sustituye. Por ley, esta factura deberá ser emitida en un plazo máximo de dos días a partir de que el sistema esté habilitado.

 

Opción alterna para Personas Jurídicas:

Utilizando el mismo número de cédula con el que se han venido facturando, las empresas pueden solicitar un Certificado de Sello Electrónico ante el SINPE del Banco Central (costo CRC 10,000 con validez de 4 años), el cual ofrece un servicio de "Certificados no custodiados".

El banco entregará un certificado "no custodiado" estándar el cual se puede convertir en una llave criptográfica, los pasos para solicitarlo están en esta guía: 

https://www.bccr.fi.cr/firma-digital/certificados-de-persona-jur%C3%ADdica/solicitud-de-certificados-de-sello-o-agente-no-custodiados

Correcciones a la guía:

1. En la Guía del BCCR deben seguirse los pasos que apliquen de "Sello Electrónico" (los exclusivos de agente electrónico deben omitirse, excepto en el punto "e" -el cual si debe realizarse)

2. En la línea "Para un request de Sello o Agente Electrónico: subjectkeyIdentifier = hash, la palabra subjectkeyIdentifier debe corregirse para tener la "K" mayúscula: subjectKeyIdentifier = hash

3. No olvide desactivar la línea basicConstraints=CA:FALSE de la sección [ v3_req ] colocando un # al inicio de la línea.

4. Saltarse todo el paso 5, ya que no aplica para el caso de fichero de llave privada. En su lugar, generar un sistema de llave RSA en fichero mediante el comando: openssl genrsa -out llave.key

Ese fichero << llave.key >> generado hay que conservarlo hasta que se haya generado el .p12 en el último paso, no debe ejecutarse este comando de nuevo porque generará una llave diferente, sobrescribiría el fichero y la llave no coincidiría con la del certificado generado posteriormente.

 

5. La línea "2.3 Si desea generar un request..." deben eliminar los parámetros que indican el uso del dispositivo hardware (-engine pkcs11 y -keyform engine) y reemplazar (id_01) con el nombre del fichero generado previamente (llave.key)

 

 

Ejemplo:

openssl req -new -key llave.key -subj "/2.5.4.5=CPJ-3-101-999999/CN=PRUEBA SOCIEDAD ANONIMA (SELLO ELECTRONICO)/O=PERSONA JURIDICA/C=CR" -out requestSello.req

Tras generarse el fichero requestSello.req, si todo fue exitoso tras haber realizado la firma y el pago podrá descargar el fichero de certificado .cer para finalmente ensamblar el .p12 con un comando como este (aquí se utiliza el llave.key conservado previamente, que será exclusivo para el certificado generado):

openssl pkcs12 -export -out llavero.p12 -inkey llave.key -in "Certificado PRUEBA SOCIEDAD ANONIMA (SELLO ELECTRONICO).cer"

En algunas versiones de openssl puede mostrar un mensaje “unable to load certificate” cuando el fichero de certificado está en formato DER. Si fuera el caso, debe convertirse a formato PEM con el comando openssl x509 -inform DER -outform PEM -in "Certificado en formato DER.cer" -out "Certificado en formato PEM.cer” y volver a intentar el comando del párrafo anterior.