facturaBoNota
Descripción
Sección titulada «Descripción»Emite una nota de crédito o débito. «Desde la factura» es lo más sencillo: indicas el CUF y qué líneas y cantidades se devuelven, y factura.bo calcula la nota (sector 24 o 47). «Manual» envía todos los datos tú (sectores 24, 47 o 48 con ICE): líneas en pares (1 = copia de la original, 2 = ajuste) y el nodo calcula los montos. También consulta las cantidades que aún se pueden devolver.
Forma parte del Hub Fiscal de Bolivia como alternativa a la conexión directa con el SIAT: factura.bo (SimplifyIT S.R.L.) es un proveedor que construye y firma el XML y lo envía al SIN. Nodo: «Nota de crédito/débito».
Configuración
Sección titulada «Configuración»| Campo | Tipo | Requerido | Descripción |
|---|---|---|---|
| credentials_id | credentials | Sí | Credencial facturabo |
| operation | select | Sí | Operación — from_invoice, available, manual |
| cuf | text | No | CUF — Código Único de Factura (lo devuelve la emisión) |
| note_sector | select | No | Sector de la nota — "", 24, 47, 48 |
| returned_items | json | No | Líneas devueltas (JSON, desde factura) — nro_item_original = número de línea en la factura original; cantidad se normaliza a 2 decimales |
| branch_code | number | No | Sucursal (código SIAT) — 0 = casa matriz. Vacío = la sucursal por defecto de la credencial |
| point_of_sale_code | number | No | Punto de venta (código SIAT) — 0 = punto principal. Vacío = el de la credencial |
| user | text | No | Usuario / cajero |
| external_reference | text | No | Referencia externa — Hasta 200 caracteres |
| reason | text | No | Motivo — Hasta 500 caracteres |
| client_document_type | select | No | Tipo de documento del cliente — 5, 1, 2, 3, 4 |
| client_document_number | text | No | Documento del cliente (manual) |
| client_business_name | text | No | Razón social (manual) |
| client_email | text | No | Email del cliente (manual) |
| original_invoice_number | number | No | Número de la factura original (manual) |
| original_issue_date | text | No | Fecha de la factura original (manual) |
| original_total | number | No | Total de la factura original (manual) |
| items | json | No | Líneas de la nota (JSON, manual) — Por cada ítem ajustado, una línea con codigo_detalle_transaccion 1 (idéntica a la original) y otra con 2 (el ajuste). Mínimo 2 líneas |
| returned_total | number | No | Monto devuelto (manual, opcional) — Vacío = suma de las líneas de tipo 2 |
| credit_debit_amount | number | No | Importe fiscal de la nota (manual, opcional) — Vacío = 13 % del monto devuelto |
| credit_debit_discount | number | No | Prorrateo del descuento (manual, opcional) |
| payment_method_code | number | No | Método de pago (manual) |
| idempotency_mode | select | No | Protección contra duplicados — Con clave, un reintento tras un corte no duplica la factura: la API devuelve la ya emitida (las claves se recuerdan 30 días). Para dos facturas idénticas en un bucle usa una clave manual (p. ej. el id del pedido) · auto, manual, off |
| idempotency_key | text | No | Clave de idempotencia — 1–128 caracteres visibles, sin espacios. Recomendado: el id de la venta |
| output_key | text | No | Clave de salida — El resultado se añade a data[clave] sin perder el resto de datos |
Credenciales
Sección titulada «Credenciales»Este módulo requiere una credencial de tipo facturabo con los campos:
- API key: se obtiene en app.factura.bo → Más → API Key
- Entorno: pruebas (sandbox, SIAT piloto) o producción; la clave no lo delata, lo eliges tú
- NIT y código de sistema del SIAT: para sincronizar CUIS/CUFD y catálogos
- Sucursal y punto de venta por defecto: 0 = casa matriz / punto principal
- Secreto de webhooks (
whsec_…): para verificar la firma de los eventos
{ "success": true, "operation": "from_invoice", "original_cuf": "2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74", "note": { "cuf": "NOTACUF…", "invoice_number": 3, "state": "EMITIDA", "issued_at": "2026-10-26T10:00:00", "url_public": "https://api.factura.bo/f/2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74", "url_pdf": "https://…/pdf", "url_xml": "https://…/xml", "url_ticket": "https://…/ticket", "siat_response": { "codigoEstado": 908 } }, "urls": { "verify": "https://api.factura.bo/f/2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74", "pdf": "https://api.factura.bo/f/2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74/pdf", "ticket": "https://api.factura.bo/f/2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74/ticket", "xml": "https://api.factura.bo/f/2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74/xml" }, "idempotency": { "key": "floogos-exec-1-node-1-8c21…", "mode": "auto" }, "warnings": [], "environment": "production"}La salida se guarda en la clave configurada (output_key, por defecto facturabo) y se conserva el resto de data. En error: error.message, error.type y, si aplica, status y siat_code.
Ejemplo de Uso
Sección titulada «Ejemplo de Uso»{ "credentials_id": "cred-facturabo", "operation": "from_invoice", "cuf": "2872F7294502332E637FABFBC3654EA82202AD48E0969F14EBEB8AF74", "returned_items": [ { "nro_item_original": 1, "cantidad": 1 } ], "reason": "Devolución parcial"}- «Desde la factura» es lo más sencillo: indicas el CUF y qué líneas (
nro_item_original) y cantidades se devuelven; factura.bo calcula la nota (sector 24, la más común, o 47). Su cabecera de idempotencia es obligatoria: aunque la desactives, el nodo la genera. - «Manual» envía todos los datos: por cada ítem ajustado, una línea con
codigo_detalle_transaccion1 (copia exacta de la original) y otra con 2 (el ajuste); mínimo 2 líneas. El nodo calculamonto_total_devuelto(sobre las líneas de tipo 2) ymonto_efectivo_credito_debito(13 % del anterior) y avisa si lo que indicas no coincide. - «Ver cantidades devolubles» consulta lo que aún se puede devolver de cada línea.
- El rechazo 1049 significa que una línea de tipo 1 no replica la original.
Nodos Relacionados
Sección titulada «Nodos Relacionados»- facturaBoEmitirFactura - Emitir factura
- facturaBoAnular - Anular o revertir factura
- facturaBoConsultar - Consultar facturas