by DojoCodingLabs
Generate, sign, send, and query Costa Rica electronic invoices directly from code, the terminal, or an AI assistant.
Hacienda CR provides an open‑source toolkit written in TypeScript to work with the Costa Rican Ministry of Finance (Hacienda) electronic‑invoice specifications (v4.4). It includes a programmatic SDK, a command‑line interface, and an MCP server so developers can create, sign (XAdES‑EPES), submit, and monitor electronic invoices, credit/debit notes, tickets, receipts and receiver messages.
npm install @dojocoding/hacienda-sdknpm install -g @dojocoding/hacienda-clinpx -y @dojocoding/hacienda-mcpHACIENDA_USERNAME, HACIENDA_PASSWORD, and optionally HACIENDA_P12_PATH / HACIENDA_P12_PIN in the environment or via the CLI profile stored in ~/.hacienda-cr/config.toml.client.authenticate(), CLI: hacienda auth login).HaciendaClient methods such as buildClave, buildFacturaXml, and the signing helpers.hacienda draft, hacienda validate, hacienda submit.draft_invoice) and receive JSON drafts that can later be signed with the SDK or CLI.hacienda lookup (CLI) or SDK’s client.getDocumentStatus.--json, and generate reports..p12 certificate and its PIN are required for signing and submitting documents.sdk, cli, mcp) is versioned independently using Changesets.docs/ folder, including sandbox‑guide, production‑integration, and full reference markdown files.Facturación electrónica para Costa Rica, desde tu código, tu terminal o tu asistente de IA.
Toolkit open-source en TypeScript para trabajar con comprobantes electrónicos v4.4 del Ministerio de Hacienda: autenticación OAuth2, generación de XML, firma XAdES-EPES, cálculo de IVA y consulta de estados.
Casos de uso · Empezar · Documentación · Contribuir · Reportar un problema
La versión 0.7.0 está publicada y verificada en los cuatro paquetes. El registro del release conserva versiones, integridades, procedencia y recuperación de la publicación, junto con los avisos de seguridad pendientes. Publicar el SDK no activa una integración fiscal ni adopta la versión en una aplicación. La preparación 0.8.0 es un PR de versiones para corregir el contrato de historial; todavía no representa publicación ni adopción.
Que cada venta pueda convertirse en un comprobante electrónico desde el mismo lugar donde ocurre. Un checkout, una caja, un sistema de gestión o una conversación con un asistente pueden ser el punto de partida.
Hacienda CR aporta una base común para construir esos flujos: tu aplicación define la experiencia, conecta sus datos y usa el toolkit para generar, firmar, enviar y consultar comprobantes. La integración con Hacienda pasa a formar parte de tu producto, con código abierto que podés inspeccionar y adaptar.
La visión es una infraestructura abierta de facturación electrónica para Costa Rica: que más equipos puedan lanzar productos con facturación integrada y dedicar su esfuerzo a las necesidades de sus clientes.
Para equipos que desarrollan software de gestión o servicios por suscripción. Al cerrar una orden o registrar un cobro, tu backend toma los datos del cliente, calcula los impuestos y genera el comprobante. Tu panel muestra si Hacienda lo aceptó o rechazó, junto con el motivo.
Valor para tu cliente: gestionar su operación y su facturación en una misma experiencia. Usá el SDK; tu aplicación administra las empresas, sus credenciales, los cobros y la programación de renovaciones.
Para ecommerce y plataformas de ventas. Cuando tu sistema confirma el pago de un pedido, podés iniciar el flujo de factura electrónica con el SDK y asociar la clave y el estado al pedido. Ante una devolución, podés construir una nota de crédito referenciada al comprobante original.
Valor para tu negocio: evitar volver a digitar una venta para facturarla. Tu tienda conecta su proveedor de pagos y decide cuándo emitir y cómo entregar el comprobante al comprador.
Para productos de caja, restaurantes y comercios. Al cerrar una venta, tu aplicación puede generar una factura o un tiquete, calcular el IVA y enviar el XML firmado mediante el SDK. Para un ajuste posterior, puede generar la nota de crédito o débito correspondiente.
Valor para el comercio: convertir la facturación en un paso del flujo de caja, usando los datos que ya capturó el negocio.
Para equipos que integran ventas, compras y contabilidad. Podés conectar una orden con su factura, consultar el estado en Hacienda y construir mensajes de receptor para aceptar o rechazar comprobantes recibidos. Tu sistema conserva la relación entre la operación y sus documentos.
Valor para el equipo administrativo: seguir cada comprobante desde su sistema de gestión. Usá el SDK para la integración y la CLI para consultas y validaciones operativas.
Para desarrolladores que apoyan a contadores o administran varias empresas. Un script puede usar perfiles de la CLI para validar archivos, consultar comprobantes y devolver resultados con --json. Antes de enviar una factura, --dry-run permite revisar el XML generado.
Valor para el despacho: transformar tareas repetidas en flujos reproducibles y detectar errores antes del envío. El equipo define los datos de entrada y revisa los resultados.
Para productos con asistentes de IA y equipos que usan clientes MCP. Una persona describe el servicio, el cliente y el monto; el asistente usa el servidor MCP para preparar el borrador, consultar al contribuyente y generar XML sin firmar. Después, tu flujo permite revisar los datos y completar la firma y el envío con el SDK o la CLI.
Valor para quien factura: pasar de una conversación a un documento estructurado, con una etapa de revisión antes de emitirlo.
Elegí un flujo y probalo en sandbox: empezá con una operación de tu producto, generá su comprobante y consultá la respuesta de Hacienda. Los ejemplos de abajo te dan el punto de entrada para cada herramienta.
| Paquete | Para qué usarlo | Documentación |
|---|---|---|
@dojocoding/hacienda-sdk |
Integrar autenticación, XML, firma y API en tu aplicación. | SDK |
@dojocoding/hacienda-cli |
Crear borradores, validar, firmar, enviar y consultar desde la terminal. | CLI |
@dojocoding/hacienda-mcp |
Generar borradores y XML con asistentes que soportan MCP. | MCP |
El SDK y la CLI permiten trabajar en sandbox y producción. El servidor MCP genera XML sin firmar; completá la firma y el envío con el SDK o la CLI.
Necesitás Node.js 22+. Para autenticarte, usá tus credenciales del IDP de Hacienda del ambiente elegido. Para firmar y enviar comprobantes, necesitás además un certificado .p12 y su PIN.
npm install @dojocoding/hacienda-sdk
Definí HACIENDA_USERNAME y HACIENDA_PASSWORD en tu entorno y ejecutá este ejemplo en un módulo TypeScript:
import {
HaciendaClient,
Environment,
IdType,
DocumentType,
Situation,
} from "@dojocoding/hacienda-sdk";
const client = new HaciendaClient({
environment: Environment.Sandbox,
credentials: {
idType: IdType.PersonaJuridica,
idNumber: "3101234567", // Reemplazá por tu cédula jurídica.
username: process.env.HACIENDA_USERNAME!, // Full issued IDP username.
password: process.env.HACIENDA_PASSWORD!,
},
});
await client.authenticate();
const clave = client.buildClave({
date: new Date(),
taxpayerId: "3101234567",
documentType: DocumentType.FACTURA_ELECTRONICA,
sequence: 1, // Asigná un consecutivo único para cada comprobante.
situation: Situation.NORMAL,
});
console.log(clave); // Clave numérica de 50 dígitos.
Continuá con creación de documentos, firma digital y envío y consulta. HaciendaClient gestiona autenticación y claves; las operaciones de XML, firma y envío se usan como funciones del SDK.
npm install -g @dojocoding/hacienda-cli
# Definí HACIENDA_USERNAME y HACIENDA_PASSWORD antes de autenticarte.
hacienda auth login --cedula-type 02 --cedula 3101234567 --environment sandbox
# Creá y validá un borrador.
hacienda draft --interactive --output factura.json
hacienda validate factura.json
# Revisá el XML antes de enviarlo.
hacienda submit factura.json --dry-run
# Consulta pública, sin autenticación.
hacienda lookup 3101234567
Para enviar, configurá el certificado y el PIN según la referencia de la CLI. Los comandos admiten --json para automatización.
Agregá este servidor a la configuración MCP de tu cliente (por ejemplo, Claude Desktop):
{
"mcpServers": {
"hacienda-cr": {
"command": "npx",
"args": ["-y", "@dojocoding/hacienda-mcp"]
}
}
}
Probá: “Generá un borrador de factura por dos horas de consultoría a ₡50.000 cada una con IVA del 13%.”
Herramientas: draft_invoice, create_invoice, lookup_taxpayer, check_status, list_documents y get_document. Consultá configuración, parámetros y recursos MCP.
| Comprobante | Builder del SDK |
|---|---|
| Factura Electrónica | buildFacturaXml() |
| Nota de Débito Electrónica | buildNotaDebitoXml() |
| Nota de Crédito Electrónica | buildNotaCreditoXml() |
| Tiquete Electrónico | buildTiqueteXml() |
| Factura Electrónica de Compra | buildFacturaCompraXml() |
| Factura Electrónica de Exportación | buildFacturaExportacionXml() |
| Recibo Electrónico de Pago | buildReciboPagoXml() |
| Mensaje Receptor (aceptación o rechazo) | buildMensajeReceptorXml() |
| Variable | Uso |
|---|---|
HACIENDA_USERNAME |
Usuario IDP completo emitido por Hacienda; conserva guiones y dominio. |
HACIENDA_PASSWORD |
Contraseña del IDP de Hacienda. |
HACIENDA_P12_PATH |
Ruta al certificado .p12 para los comandos que la admiten. |
HACIENDA_P12_PIN |
PIN del certificado .p12. |
Los perfiles se guardan en ~/.hacienda-cr/config.toml. Las contraseñas y PINs se suministran por variables de entorno y no se guardan en los perfiles. Empezá con sandbox antes de usar credenciales de producción.
El contador suma las descargas de SDK, CLI, MCP y shared, desde la creación de cada paquete hasta el último día disponible en npm. Son descargas del registro, incluyendo CI y dependencias transitivas; no representan instalaciones únicas ni personas.
Ver totales por paquete y fecha de corte. El workflow de actualización recalcula el total diariamente y también puede ejecutarse manualmente. Consulta el historial en bloques de hasta 365 días para respetar los límites de la API de npm. Si una consulta falla, conserva el último contador publicado.
Usá Node.js 22+ y la versión de pnpm declarada en package.json.
git clone https://github.com/DojoCodingLabs/hacienda-cr.git
cd hacienda-cr
pnpm install
pnpm verify
packages/sdk/ Autenticación, XML, firma digital, impuestos y API
packages/cli/ Binario hacienda
packages/mcp/ Servidor MCP con transporte stdio
shared/ Tipos, esquemas y constantes compartidos
docs/ Referencia, banner y métricas de npm
Para trabajar en un paquete: pnpm --filter @dojocoding/hacienda-sdk test.
Encontrá trabajo en Issues, abrí un issue con pasos para reproducir un error o proponé una mejora. Para contribuir código, hacé un fork, creá una rama, agregá los tests correspondientes y ejecutá los checks anteriores antes de abrir un pull request. Usamos Changesets para versionar los paquetes.
Gracias a CRLibre/API_Hacienda y CRLibre/fe-hacienda-cr-misc por sus referencias y recursos para la comunidad de facturación electrónica costarricense.
MIT. Construido por Dojo Coding para la comunidad de desarrolladores de Costa Rica 🇨🇷.
Guías para contribuidores: desarrollo y pruebas y versionado y publicación.
The additive exact decimal ordinary FE API preserves supported financial strings through BigInt calculation, JSON and XML; legacy numeric APIs are unchanged. Its explicit IVA13/full-payment scope does not imply all domestic fiscal cases or external acceptance.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by stripe
Provides SDKs and tools to integrate Stripe's billing and API services with large language models, agent frameworks, and token‑metering for AI‑powered products and businesses.
by goat-sdk
Enables AI agents to send and receive payments, purchase goods and services, execute investment strategies, tokenize assets, and obtain financial insights by leveraging blockchains, stablecoins, and wallets.
by financial-datasets
Provides access to income statements, balance sheets, cash flow statements, stock prices, market news, and cryptocurrency data through MCP tools for AI assistants.
by openaccountants
Provides open‑source, accountant‑reviewed tax guides that AI models can cite when answering tax‑related queries, ensuring answers are backed by current jurisdictional rules and credited experts.
by alpacahq
Enables large language models to trade stocks and options, retrieve real‑time and historical market data, and manage portfolios using plain English commands through a local or remote MCP server.
by twjackysu
Provides real‑time stock quotes, financial statements, ESG data, and advanced market analysis for Taiwan securities markets via a Model Context Protocol server.
by stefanoamorelli
Provides an MCP server that connects AI models to SEC EDGAR filings, enabling real‑time retrieval of company filings, financial statements, and insider‑trading data with exact XBRL precision and verifiable filing references.
by imbenrabi
Provides AI assistants with direct access to Financial Modeling Prep data, including real‑time stock quotes, company fundamentals, financial statements, market indexes, news, and alternative data sets via the Model Context Protocol.
by ariadng
Enables AI LLMs to execute trades on the MetaTrader 5 platform through the Model Context Protocol.
{
"mcpServers": {
"hacienda-cr": {
"command": "npx",
"args": [
"-y",
"@dojocoding/hacienda-mcp"
],
"env": {}
}
}
}claude mcp add hacienda-cr npx -y @dojocoding/hacienda-mcp