crearFactura
Campos de
factura (los dominios cerrados llegan como enum en tools/list):
Salida (JSON en el texto):
documents se descarga con la API Key (documentos); para un link que una persona pueda abrir, descargarDocumento.
Errores: Error parseando JSON: <detalle> (texto) · {"success": false, "error": "[<CODIGO>] <mensaje>"} para validación y rechazos SIAT (VALIDATION_ERROR, SIAT_ERROR, SECTOR_NOT_SUPPORTED, etc.; catálogo).
Efecto: emite un documento fiscal. Tras un timeout no reintentar a ciegas: buscar primero con listarFacturas u obtenerFacturaPorCuf.
previsualizarFactura
ComocrearFactura pero sin emitir: no numera, no guarda, no toca el SIN.
Salida: JSON igual a
data de POST /api/v3/invoices/preview. Errores: Error: <mensaje> con los mismos códigos que crearFactura.
listarFacturas
Salida (texto):
Facturas (pagina P, n de T total): y una línea por factura - #<nro> | CUF: <cuf> | Estado: <estado> | Cliente: <nombre> (<doc>) | Total: <monto> Bs | Fecha: <fecha>. Sin resultados: No se encontraron facturas. Total: 0. Orden: fecha de emisión descendente.
obtenerFactura
Salida (texto):
Factura #<nro> y líneas - ID, - CUF, - Estado SIAT: <estado> (codigo: <n>, desc: <texto>), - Tipo emision, - Cliente: <nombre> (Doc: <doc>, Email: <email>), - Subtotal, - Descuento, - Total, - Literal, - Fecha emision, - QR.
Errores: Error: UUID invalido: <id> · Factura no encontrada con ID: <id> (también para facturas de otro tenant).
obtenerFacturaPorCuf
Salida: igual que
obtenerFactura. Error: Factura no encontrada con CUF: <cuf>.
anularFactura
Anula ante el SIAT una factura o una nota de crédito/débito (gemela dePOST /invoices/{id}/cancel): cada documento va al servicio del SIAT que le corresponde. Solo sobre VALIDATED/ACCEPTED.
Salida (texto):
Factura anulada exitosamente: + detalle de la factura (mismo formato que obtenerFactura).
Errores: Error: UUID invalido: <id> · [<CODIGO>] <mensaje> (p. ej. factura inexistente o en estado no anulable).
Efecto: estado CANCELLED ante el SIAT; se deshace con revertirAnulacion.
revertirAnulacion
Salida:
Anulacion revertida exitosamente: + detalle. Aplica también a facturas emitidas offline (contingencia / CAFC). Efecto: vuelve a VALIDATED.
verificarEstadoFactura
Gemela deGET /api/v3/invoices/{id}/status: sirve para facturas y notas de crédito/débito.
Salida:
Estado verificado: + detalle. Un [924] en la descripción SIAT significa que el SIN no tiene la factura (ver regularizarFacturasFueraDeEvento).
crearNotaCreditoDebito
Nota de crédito o débito contra una facturaVALIDATED. Sectores 24 (estándar, default), 47 (Descuento) y 48 (ICE).
No reenvíes las líneas originales: se clonan de la base (si no, rechazos
[1049] y [1030]). Sector 48 sin ICE: marcaIce: 2 y montos 0.
Salida (texto): Nota Credito/Debito creada exitosamente: + Nota <CREDITO|DEBITO> #<nro> con líneas - ID, - CUF, estado, montos. Errores: Error parseando JSON: ... · [<CODIGO>] <mensaje>.
Efecto: emite un documento fiscal.
resumenFacturacion
Sin parámetros. Salida (texto):=== Resumen de Facturacion === con Total facturas, Facturas este mes, Monto total este mes, Monto total este anio, Offline pendientes, Anuladas este mes, bloque --- Por estado --- (<ESTADO>: <n>) y --- Montos por mes (ultimos 6) --- (<yyyy-MM>: <monto> Bs).
descargarDocumento
Devuelve un link temporal: descarga el archivo con
GET al download_url (sin credencial) y adjúntalo.
Salida (JSON): { "success": true, "invoiceNumber", "cuf", "formato", "fileName", "mimeType", "download_url" (absoluta), "expires_at" (ISO-8601 UTC), "max_uses" }. Vence a los 300 s y admite 3 usos (link temporal).
Errores (JSON { "success": false, "error" }): Formato no soportado: <X>. Validos: … · Factura no encontrada con CUF: <cuf> · La factura no tiene documento en su estado actual (<ESTADO>).
Efecto: lectura; emite un link nuevo en cada llamada.