Qué exige Hacienda con GTI 4.4 en 2026
Hacienda Costa Rica obliga a todo contribuyente con actividad lucrativa a emitir comprobantes electrónicos firmados criptográficamente y validados contra ATV (Administración Tributaria Virtual) antes de entregar al cliente. Si tu Odoo emite con un XML mal formado o sin la firma vigente, la respuesta de Hacienda llega en segundos como rechazo y la operación no existe fiscalmente.
La versión 4.4 del esquema GTI (Gestión Tributaria Integral) endureció tres puntos respecto a 4.3:
- Firma electrónica obligatoria con certificado emitido por el SINPE o por una autoridad certificadora autorizada. El certificado caduca cada 2 años — renovar es trámite aparte con tu banco emisor.
- Validación previa en línea contra ATV. Sin respuesta positiva (estado
aceptado), el comprobante no tiene valor legal aunque el cliente ya lo tenga en mano. - Trazabilidad por secuencia — la consecutividad del comprobante (50 dígitos) y la clave numérica (50 dígitos adicionales) deben coincidir con el control interno de Hacienda. Saltos de secuencia disparan auditoría automática.
Hacienda comenzó a cruzar comprobantes contra declaraciones D-101 (renta) y D-104 (IVA). Si emitiste factura electrónica por servicios profesionales y no la declaraste en el período correspondiente, el sistema marca inconsistencia automática y tu D-150 sale con error. La sanción base es del 50% del impuesto omitido, sin importar si fue olvido o problema técnico del ERP.
Comprobantes obligatorios por tipo de operación
El esquema GTI define seis tipos de comprobantes electrónicos. No todos aplican a toda empresa: depende del tipo de contribuyente (régimen tradicional vs. simplificado) y del tipo de operación. Críticos para una PYME que opera con Odoo:
- Factura electrónica (FE) — venta a contribuyente con cédula jurídica. Genera derecho a crédito fiscal para el receptor.
- Tiquete electrónico (TE) — venta a consumidor final sin cédula. No genera crédito.
- Nota de crédito electrónica (NCE) — anula o reduce un comprobante previo. Obligatoria para devoluciones, descuentos pactados después de emisión, o correcciones.
- Nota de débito electrónica (NDE) — incrementa el monto de un comprobante previo. Típica para reajustes de precio.
- Factura electrónica de compra (FEC) — la emites tú al recibir bienes/servicios de un proveedor que no factura electrónicamente (caso menor cada año).
- Factura electrónica de exportación (FEE) — para ventas al exterior. Distinto formato XML con códigos arancelarios.
Un error frecuente en Odoo: facturar a un cliente extranjero con FE en lugar de FEE. Hacienda acepta el XML pero el cliente extranjero no puede deducir, y tú pierdes la trazabilidad para exoneración de IVA en exportaciones.
Configurar l10n_cr paso a paso
El módulo l10n_cr viene en Odoo Community y Enterprise. Lo que no viene es el conector certificado con Hacienda — eso lo añade un módulo de terceros (Vauxoo, OdooGap, ApiThemes). Antes de elegir, confirma que soporte:
- Firma XAdES-EPES sobre XML GTI 4.4 (no 4.3, que Hacienda dejó de aceptar en febrero 2025).
- Cola asíncrona para reintentos automáticos cuando ATV responde con timeout (común en cierres de mes).
- Renovación automática de token de sesión ATV — caduca cada 1 hora.
- Generación correcta de la clave numérica de 50 dígitos según especificación Hacienda.
#1. Configuración de empresa
En Contabilidad → Configuración → Empresas → Tu empresa:
- Cédula jurídica con dígito de control en el campo correcto. Error común: omitir el guion entre los bloques numéricos — Hacienda devuelve CodigoIdentificacionInvalido.
- Actividad económica principal según código CAECR (Clasificación de Actividades Económicas de Costa Rica), no según código CIIU genérico.
- Régimen tributario — Tradicional, Simplificado, o ZEE (Zona Económica Especial). Esto determina qué comprobantes puedes emitir.
#2. Certificado de firma electrónica
Cargar el certificado digital de firma (P12, con clave). Suele durar 2 años — renovar es trámite aparte con tu banco emisor o con el SINPE. Sin certificado vigente, Odoo genera el XML pero no puede firmarlo, y ATV rechaza con FirmaInvalida.
#3. Impuestos y retenciones
Activa los impuestos costarricenses desde Contabilidad → Configuración → Impuestos. Críticos:
- IVA 13%, 4%, 2%, 1%, 0% Exento (mapeados a códigos GTI).
- Retenciones de impuesto sobre la renta para servicios profesionales (10% o 15% según régimen).
- Impuesto selectivo de consumo si vendes bienes de la lista MH-2024-001.
#4. Sucursales y casas matriz
Si operas con varias sucursales bajo una misma cédula jurídica, cada sucursal necesita su propio terminal en ATV. Odoo debe poder asignar el código de sucursal al emitir, o todos los comprobantes saldrán bajo terminal 00001 y Hacienda no podrá distinguir el punto de venta.
Errores típicos al emitir
Caso anónimo: distribuidora de productos químicos del GAM, 850 facturas/mes. El 18% rebotaba en ATV. Causas, en orden de frecuencia:
- Clave numérica duplicada — el conector reusaba secuencias después de un rollback de transacción. Resultado: estado RechazadoClaveExiste. Solución: persistir la consecutividad en una tabla aparte de Odoo con bloqueo pesimista, no confiar en el campo del propio comprobante.
- Timeout de ATV en cierre de mes — Hacienda satura su backend entre el 12 y 15 de cada mes. Solución: cola asíncrona con reintentos exponenciales (1s, 3s, 10s, 30s).
- Firma con certificado caducado — nadie monitoreó la fecha de vencimiento. Solución: alerta de cron 30 días antes del vencimiento, con destinatario fiscal real, no contabilidad genérica.
- Receptor sin cédula válida — Odoo permitía guardar contactos con cédula mal formateada. Hacienda valida formato antes de aceptar. Solución: regex de validación en el modelo
res.partnery bloqueo de emisión si falla. - Monto total que no cuadra con líneas — diferencia de 1 colón por redondeo. Hacienda rechaza con TotalNoCoincide. Solución: parchar el connector para usar redondeo bancario (banker's rounding) consistente entre líneas y total.
Después del ajuste, la tasa de rechazo cayó de 18% a 1,1%. El costo de NO ajustar: 153 facturas/mes que no se cobraban hasta refacturación manual — aprox. ₡21M CRC en cartera congelada cada mes.
Latencia típica: 2–6 segundos por comprobante. Si tu Odoo no maneja reintentos asíncronos, vas a tener falsos negativos en cierre de mes — comprobantes que la operación considera emitidos pero Hacienda nunca recibió.
Caso: PYME de servicios en Heredia
Bufete de consultoría tributaria, 14 empleados, 280 comprobantes/mes (mezcla FE y TE). Migraron de un sistema propietario costarricense a Odoo 17 Community con conector Vauxoo.
«La promesa era ahorrar ₡600K/mes en licencia. Lo que descubrimos: si no automatizas la conciliación entre Odoo y ATV diariamente, te llevas 3 días al cierre identificando qué comprobantes están en limbo. Eso son 24 horas-persona del contador, que cuestan más que la licencia que ahorramos.»
La solución no fue volver al sistema propietario sino construir un cron diario que cruza el reporte de Hacienda (descargable desde ATV) contra los comprobantes emitidos en Odoo, marcando discrepancias antes de que el contador llegue a la oficina. Tiempo de cierre: de 3 días a 4 horas.
Cuándo necesitas un partner certificado
Odoo tiene partners oficiales en Costa Rica (Vauxoo regional, OdooGap, ApiThemes). No siempre necesitas uno. Señales claras de que sí:
- Operas en más de un régimen (Tradicional + Simplificado, o Tradicional + ZEE).
- Emites más de 1000 comprobantes/mes — la cola asíncrona y monitoreo se vuelven críticos.
- Tienes operación internacional (FEE) y exoneraciones de IVA.
- Necesitas integración con bancos costarricenses (BCR, BAC, BN) para conciliación de pagos.
- Tu equipo contable no quiere tocar XML ni leer respuestas de Hacienda.
Para una PYME de menos de 500 comprobantes/mes en régimen Tradicional sin exportaciones, el conector estándar más una persona técnica interna suele ser suficiente. La auditoría inicial de 5 días contra Hacienda, sí — recomendable antes de pasar a producción.
Preguntas frecuentes
¿Es obligatorio usar conector certificado o puedo emitir directamente desde Odoo?
Odoo Community/Enterprise no incluye conector ATV en su distribución base. Puedes implementar tu propio módulo siguiendo la especificación Hacienda, pero en la práctica nadie lo hace porque la firma XAdES-EPES, la renovación de token y el manejo de excepciones GTI son trabajo de meses. Los conectores certificados (Vauxoo, OdooGap, ApiThemes) cuestan ₡150-300K/año pero te ahorran ese trabajo.
¿Cuánto se demora ATV en responder un comprobante?
Validación previa: 2–6 segundos en condiciones normales. En picos (cierre de mes, último día hábil de impuestos) puede ir a 30–60 segundos. Por eso el procesamiento asíncrono es obligatorio en operación real — bloquear el thread HTTP del usuario durante la emisión es mala práctica.
¿Qué pasa si Hacienda rechaza un comprobante después de entregarlo al cliente?
Legalmente el comprobante no existe, así que la operación no genera derecho a crédito fiscal para el receptor ni constituye soporte de gasto. Tienes que emitir nota de crédito electrónica que anule el comprobante (aunque haya sido rechazado) y reemitir con la corrección. El cliente debe descartar el comprobante original.
¿Cómo configuro la consecutividad en Odoo para que no choque con la clave numérica?
La consecutividad (50 dígitos: terminal + tipo + secuencia) y la clave numérica (50 dígitos: país + día + cédula + sucursal + terminal + tipo + secuencia + situación + código seguridad) son campos distintos pero relacionados. En Odoo configúralos en dos secuencias separadas en Contabilidad → Configuración → Secuencias, ambas con bloqueo pesimista. La clave numérica se genera al momento de firmar, no al guardar el documento.
¿Necesito firma electrónica para emitir tiquete electrónico (TE)?
Sí. Todos los comprobantes electrónicos en Costa Rica requieren firma XAdES-EPES con certificado vigente. El TE no genera crédito fiscal, pero sigue siendo un comprobante con valor legal — y por eso necesita estar firmado y aceptado por ATV antes de entregarlo al consumidor final.
¿Cuándo debo declarar ante Hacienda los comprobantes emitidos por Odoo?
El D-104 (IVA) es mensual, plazo el día 15 del mes siguiente. El D-101 (renta) es anual, plazo el 15 de marzo. Tu Odoo debe poder exportar a partir de los comprobantes ya aceptados por ATV un libro de ventas y un libro de compras en el formato que el contador necesita para llenar las declaraciones. Cruzar Odoo vs. ATV antes de declarar te evita sanciones por inconsistencia.
¿Puedo emitir comprobantes en colones y dólares con el mismo Odoo?
Sí, GTI 4.4 soporta múltiples monedas. El XML debe llevar el código ISO 4217 (CRC, USD) y el tipo de cambio del día de emisión según el publicado por el BCCR. Odoo l10n_cr lo maneja si activas multidivisa en la compañía y configuras la tasa diaria con un job de cron contra el endpoint del BCCR.
