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.

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

https://sandbox.cucu.bo
SIAT Piloto — facturas de desarrollo, sin validez fiscal. Incluido en tu plan.

Producción

https://api.cucu.bo
SIAT Producción — facturas fiscalmente válidas ante el SIN.
CaracterísticaSandboxProducción
API Keysk_test_...sk_live_...
Ambiente SIATPiloto (ambiente 2)Producción (ambiente 1)
Validez fiscalNo — facturas de pruebaSí — reportadas al SIN
Certificado digitalDemo (preconfigurado)Requerido (emitido por el SIN)
PDFCon marca “SIN VALOR LEGAL”Sin marca de agua
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:
curl -X GET https://sandbox.cucu.bo/api/v1/invoices \
  -H "X-API-Key: YOUR_API_KEY"
PrefijoAmbienteValidez fiscal
sk_test_...Sandbox (SIAT Piloto)No
sk_live_...Producción (SIAT real)
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.
HTTPCódigoCausa
401UNAUTHORIZEDAPI Key ausente, inválida o revocada
403FORBIDDENKey válida pero sin permisos al recurso

Formato de Respuesta

Todas las respuestas usan el wrapper estándar ApiResponse:
{
  "success": true,
  "message": "Operación exitosa",
  "data": { },
  "error": null,
  "timestamp": "2026-02-22T12:00:00"
}
CampoTipoDescripción
successbooleantrue si la operación fue exitosa
messagestringMensaje descriptivo (puede ser null)
dataobjectDatos del recurso o resultado
errorobjectDetalle del error (null si éxito)
timestampstringFecha/hora ISO 8601

Paginación

Los endpoints de listado usan paginación basada en offset:
GET /api/v1/invoices?page=0&size=20
ParámetroTipoDefaultDescripción
pageinteger0Número de página (base 0)
sizeinteger20Elementos por página (máx 50)
{
  "success": true,
  "data": {
    "content": [ ],
    "page": 0,
    "size": 20,
    "totalElements": 150,
    "totalPages": 8,
    "first": true,
    "last": false
  }
}
CampoTipoDescripción
contentarrayElementos de la página actual
totalElementsintegerTotal de elementos en el conjunto
totalPagesintegerTotal de páginas
first / lastbooleanSi es la primera o última página