Skip to main content

Facturación Electrónica

Bolivia implementó la facturación electrónica a través del SIAT (Sistema Integrado de Administración Tributaria) del SIN (Servicio de Impuestos Nacionales). Toda factura emitida debe validarse en tiempo real por el SIAT antes de tener validez fiscal. El proceso involucra:
  • Firma digital con certificado emitido por el SIN
  • Generación del CUF (Código Único de Facturación)
  • Validación en línea contra el SIAT
  • Generación de PDF y XML firmado
CUCU abstrae toda esta complejidad en una sola API REST:

Emite facturas

Un solo POST /api/v1/invoices. CUCU firma, valida con el SIAT, genera CUF, PDF, XML y envía el email al cliente.

15 tipos de documento

Compra-venta, exportación, zona franca, educación, salud, hoteles, aerolíneas y más. Mismo endpoint, distinto invoiceType.

Notas de crédito/débito

Documentos de ajuste fiscal con cálculo automático de montos contra la factura original.

Contingencia offline

Cuando el SIAT no está disponible, CUCU emite con CUF offline y sincroniza al reconectarse.

Webhooks en tiempo real

Suscríbete a invoice.*, contingency.* y eventos de conexión SIAT. Entrega firmada (HMAC-SHA256) con reintentos automáticos.

URL Base

CUCU opera en dos ambientes completamente aislados. Mismo formato de respuesta, mismas validaciones, misma lógica. La única diferencia es la conexión al SIAT.

Sandbox

SIAT Piloto — facturas de desarrollo, sin validez fiscal. Incluido en tu plan.

Producción

SIAT Producción — facturas fiscalmente válidas ante el SIN.
Cambiar de ambiente requiere solo dos variables: la URL base y la API Key. Todos los endpoints, request bodies y response formats son idénticos.
Si tu integración funciona en sandbox, funciona en producción con solo cambiar la URL y la key.

Autenticación

Todas las llamadas autenticadas requieren el header X-API-Key:
Las keys sk_live_ nunca deben exponerse en código frontend, repos públicos ni apps móviles. Solo en tu backend, vía variables de entorno o secret manager.

Formato de Respuesta

Todas las respuestas usan el wrapper estándar ApiResponse:

Paginación

Los endpoints de listado usan paginación basada en offset:

Flujo completo

Cuando creas una factura a traves de la API, este es el proceso interno:
Cada cambio de estado de la factura (y eventos de contingencia SIAT) dispara un webhook si tienes un endpoint suscrito. Ver Webhooks para el catálogo completo de eventos, la verificación de firma y la política de reintentos.

1. Validacion de datos

La API valida:
  • Campos requeridos: NIT, razon social, metodo de pago, detalles
  • Formato de NIT: 7-15 digitos, algoritmo de verificacion SIN
  • Codigos SIAT: Actividad economica, producto SIN, unidad de medida
  • Montos: Positivos y coherentes (subtotal = cantidad x precio - descuento)
Si la validacion falla, se retorna HTTP 400 con detalle del error.

Estados de una factura

Puedes consultar el estado actual de cualquier factura con GET /api/v1/invoices/{id}/status. Ver Estado de factura.