$5 /mes
Factura desde tu teléfono, sin computadora.
- 1,000 DTE/mes, luego $0.01 por DTE
- Facturas desde WhatsApp
- Panel: documentos, clientes y productos
- Envío por correo con el PDF y el JSON
- 1 empresa
Emite DTE ante Hacienda con una sola API: desde tu código, tu terminal o tu agente de IA.
POST /api/v1/dte · ambiente de pruebas
curl https://app.openfactura.co/api/v1/dte \
-H "Authorization: Bearer $OPENFACTURA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-1042" \
-d '{
"tipoDte": "01",
"datos": {
"items": [
{ "descripcion": "Servicio", "cantidad": 2, "precioUni": 11.3 }
]
}
}'
tipos de DTE: factura, crédito fiscal, notas y más
eventos, como invalidar o emitir en contingencia
API de código abierto
la normativa vigente de Hacienda
Hicimos nuestras propias pruebas ante Hacienda con Open Factura y lo logramos sin complicaciones. En horas, no semanas.
Tu primer DTE de prueba en 2 minutos, sin trámites.
const r = await fetch('https://app.openfactura.co/api/v1/dte', { method: 'POST',
headers: { Authorization: `Bearer ${process.env.OPENFACTURA_KEY}`, 'Content-Type': 'application/json' },
body: JSON.stringify({ tipoDte: '01', datos: { items: [{ descripcion: 'Café', cantidad: 2, precioUni: 3.5 }] } }) })
npx @openfactura/cli login --url https://app.openfactura.co
npx @openfactura/cli dte emitir factura.json
POST /api/v1/dte
De vuelta a tu sistema: el sello, el PDF y el webhook dte.procesado.
Lo que tu código necesita para emitir, enterarse y reintentar sin sorpresas.
Factura, Crédito Fiscal, remisión, notas de crédito y débito, retención, exportación y sujeto excluido. Validación contra el esquema del MH, firma JWS, transmisión y sello.
Un aviso con HMAC-SHA256 cuando un documento cambia de estado. Reintentos con espera creciente e historial de entregas.
Si la red falla, repite la petición con la misma Idempotency-Key: recibes el resultado original y nada se emite dos veces.
Servidor MCP remoto y por stdio, y skills para agentes. Cada herramienta exige el mismo permiso que su ruta REST.
Una clave of_test_ nunca toca producción. Credenciales del MH cifradas con AES-256-GCM y nunca devueltas por la API.
Documentación, mensajes y el vocabulario de Hacienda en español. Códigos de error estables, OpenAPI 3.1 y límites con cabeceras RateLimit.
Una API, una CLI y un agente. Cada operación existe en REST, en la CLI y como herramienta MCP, con los mismos permisos.
@openfactura/cli con licencia MITcurl https://app.openfactura.co/api/v1/dte \
-H "Authorization: Bearer $OPENFACTURA_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: pedido-1042" \
-d '{
"tipoDte": "01",
"datos": {
"items": [
{ "descripcion": "Servicio", "cantidad": 2, "precioUni": 11.3 }
]
}
}'
{
"codigoGeneracion": "0862382B-0BB8-42A0-BB6B-B42DCCDF1EA4",
"numeroControl": "DTE-01-M001P001-000000000000001",
"estado": "procesado",
"total": 22.6,
"selloRecibido": "20265EE94C1B2C4CBB56F56121E37F5AC8CA7D27"
}
npm i -g @openfactura/cli
openfactura login --url https://app.openfactura.co # pide la clave sin mostrarla
openfactura dte validar factura.json # sin número de control, sin firmar
openfactura dte emitir factura.json
openfactura dte pdf 0862382B-0BB8-42A0-BB6B-B42DCCDF1EA4 -o factura.pdf
claude mcp add --transport http openfactura https://openfactura.co/mcp \
--header "Authorization: Bearer of_test_…"
claude mcp add openfactura \
--env OPENFACTURA_API_KEY=of_test_… \
--env OPENFACTURA_URL=https://app.openfactura.co \
-- npx -y @openfactura/cli mcp
Pídele «Emite una factura de consumidor final por 2 servicios de $11.30, IVA incluido». El asistente valida, te muestra el resumen y emite cuando confirmas.
npx skills add xaviigna/openfactura
Cuatro skills para Claude Code, Cursor y otros agentes: openfactura-conectar, openfactura-facturar, openfactura-errores y openfactura-webhooks. Ver en skills.sh.
Un POST firmado a tu sistema cuando un documento cambia de estado. Verifica la firma con WebCrypto en Node, Workers, Deno o Bun.
OpenFactura-Signatureconst enc = new TextEncoder()
export async function POST(req: Request) {
const cuerpo = await req.text() // crudo, antes de JSON.parse
const cabecera = req.headers.get('OpenFactura-Signature') ?? ''
const { t, v1 = '' } = Object.fromEntries(
cabecera.split(',').map((p) => p.split('=')),
)
if (!(Math.abs(Date.now() / 1000 - Number(t)) <= 300))
return new Response('expirado', { status: 400 })
const llave = await crypto.subtle.importKey(
'raw', enc.encode(process.env.OPENFACTURA_WEBHOOK_SECRET),
{ name: 'HMAC', hash: 'SHA-256' }, false, ['verify'],
)
const firma = Uint8Array.from(v1.match(/../g) ?? [],
(h) => Number.parseInt(h, 16))
const ok = await crypto.subtle.verify(
'HMAC', llave, firma, enc.encode(`${t}.${cuerpo}`),
)
if (!ok) return new Response('firma inválida', { status: 400 })
const aviso = JSON.parse(cuerpo) // { id, evento, ambiente, datos }
return new Response(null, { status: 204 })
}
Para agentes
Pídelo en español. Tu agente busca al cliente, valida contra el esquema del MH y emite el DTE por MCP, con los permisos de la clave que le des.
npx @openfactura/cli mcp install --todos
Cada documento procesado tiene su representación gráfica con el formato sugerido por Hacienda, junto al JSON oficial firmado.
openfactura dte pdf) o el panel| Cant. | Descripción | Precio | Total |
|---|---|---|---|
| 2 | Servicio | $11.30 | $22.60 |
Total a pagar$22.60
Todos los planes traen el panel, WhatsApp y el ambiente de pruebas sin límite; desde Emprendedor, también la API, el MCP, la CLI y los webhooks. Cada DTE extra cuesta $0.01 y nunca detenemos tu emisión.
$5 /mes
Factura desde tu teléfono, sin computadora.
Todo incluido
$9 /mes
Todo incluido: el panel, WhatsApp y las herramientas para desarrolladores.
$19 /mes
Para negocios que facturan todos los días.
$99 /mes
Para software houses, agencias y contadores.
Complemento: alta ante Hacienda acompañada, $49 pago único.
¿Más volumen o un SLA? Hablemos
Precios en dólares, IVA no incluido. El ambiente de pruebas es ilimitado y no cuenta. Facturar ante Hacienda no tiene costo: pagas por la plataforma.
El núcleo es de código abierto: puedes instalarlo tú. La nube agrega lo que te ahorra el trabajo.
| Qué | Open Factura Cloud | Autoalojado |
|---|---|---|
| Precio | Desde $5 al mes | Gratis, más tu plan de Cloudflare Workers |
| Panel web | Sí | No: API, CLI y MCP |
| Facturar desde WhatsApp | Sí | No |
| Envío al cliente por correo (PDF y JSON) | Automático | Lo armas tú |
| Alta guiada y certificación ante Hacienda | Automáticas | Las haces tú con la API |
| Actualizaciones y respaldos | Automáticos, recuperación de 30 días | Los operas tú |
| Puesta en marcha | Minutos | Una tarde: Cloudflare, base de datos y secretos |
| Soporte | Por correo | Comunidad en GitHub |
| Licencia | Servicio | AGPL-3.0; SDK y CLI MIT |
Crea tu cuenta, genera una clave of_test_ y emite tu primer DTE de prueba hoy. Si tienes dudas, la documentación y el repositorio están abiertos.