Plataforma · API

Si tu sistema ya vende, Inari factura.

Una API REST con llaves por alcance y webhooks firmados. El comercio electrónico, el punto de venta o el sistema propio emiten a través de Inari sin que nadie retipee nada.

AuthLlaves ik_live_ con alcances
RecursosFacturas y clientes
Eventosinvoice.created · invoice.paid · payment.created · client.created
FirmaHMAC-SHA256 con marca de tiempo

contratoeventoestado

SolicitudPOST /api/v1/invoices
curl https://app.inarihq.com/api/v1/invoices \
  -H "Authorization: Bearer ik_live_9f2c…" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "cli_8f2a",
    "condition": "credito_30",
    "lines": [
      { "service_id": "srv_11", "qty": 1,
        "unit_price": "1250000.00" }
    ]
  }'
Respuesta201 Created
{
  "id": "inv_0000000123",
  "consecutivo": "00100001010000000123",
  "clave": "50608242026310123456700…",
  "status": "enviada",
  "total": "1412500.00",
  "currency": "CRC"
}
El problema

El integrador que factura a mano

Muchas tiendas en línea terminan con una persona copiando pedidos al facturador. Es el punto exacto donde el volumen deja de escalar y donde aparecen los errores de digitación.

Cómo funciona

El contrato, paso a paso.

Lo que un equipo técnico necesita saber antes de escribir la primera línea de integración.

01

Se crea una llave con alcance

Cada llave declara qué puede hacer. La llave se muestra una sola vez y se guarda como hash: no se puede recuperar, se rota.

  • Prefijoik_live_ para producción
  • AlmacenamientoHash SHA-256, nunca en claro
SolicitudPOST /api/v1/invoices
curl https://app.inarihq.com/api/v1/invoices \
  -H "Authorization: Bearer ik_live_9f2c…" \
  -H "Content-Type: application/json" \
  -d '{
    "client_id": "cli_8f2a",
    "condition": "credito_30",
    "lines": [
      { "service_id": "srv_11", "qty": 1,
        "unit_price": "1250000.00" }
    ]
  }'
Respuesta201 Created
{
  "id": "inv_0000000123",
  "consecutivo": "00100001010000000123",
  "clave": "50608242026310123456700…",
  "status": "enviada",
  "total": "1412500.00",
  "currency": "CRC"
}
02

Se emite por API

El mismo motor que usa la interfaz: se calculan los totales en el servidor, se firma, se envía a Hacienda y se escribe el asiento.

03

Y el sistema se entera por webhook

Cada evento se firma con HMAC-SHA256 y una marca de tiempo, para que el receptor pueda verificar el origen y descartar reenvíos.

Webhookinvoice.paid · firma HMAC-SHA256
POST https://tu-servidor.com/hooks/inari
Inari-Signature: t=1755180198,
  v1=8c1f0a2b9d4e…

{
  "event": "invoice.paid",
  "created_at": "2026-08-18T14:03:18Z",
  "data": {
    "invoice_id": "inv_0000000123",
    "amount": "1412500.00",
    "method": "transferencia"
  }
}
Detalle

Contrato y controles

AlcancesMínimo privilegio

Una llave de lectura no puede emitir. Una llave de emisión no puede ver la configuración de la empresa.

RotaciónSin interrupción

Se pueden tener varias llaves activas para rotar sin caída de servicio.

ReintentosCon espera creciente

Un webhook que falla se reintenta con backoff. Los intentos quedan registrados.

IdempotenciaEn la emisión

Reenviar la misma solicitud no produce dos facturas ni dos consecutivos.

AislamientoLa llave pertenece a una empresa

No existe una llave que cruce empresas; el aislamiento es el mismo que el de la interfaz.

Disponibilidad

Qué incluye cada plan

La escalera es de complejidad, no de volumen. Los límites de documentos son un detalle operativo y están en la comparación completa.

Ver precios y comparación

ProNo incluido · portal del cliente disponible
PymeNo incluido · portal del cliente disponible
BusinessAPI REST completa y webhooks
CorporateAñade límites elevados, SLA y soporte de integración

Mirá api con tus propios datos.

Agendá una demo de 30 minutos y lo recorremos con tu caso real. La migración desde Excel o tu facturador actual está incluida, y el contador entra sin costo.

Sin permanencia. El contador entra sin costo en todos los planes.