Ir al contenido

facturaBoNota

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».

CampoTipoRequeridoDescripción
credentials_idcredentialsSíCredencial facturabo
operationselectSíOperación — from_invoice, available, manual
cuftextNoCUF — Código Único de Factura (lo devuelve la emisión)
note_sectorselectNoSector de la nota — "", 24, 47, 48
returned_itemsjsonNoLíneas devueltas (JSON, desde factura) — nro_item_original = número de línea en la factura original; cantidad se normaliza a 2 decimales
branch_codenumberNoSucursal (código SIAT) — 0 = casa matriz. Vacío = la sucursal por defecto de la credencial
point_of_sale_codenumberNoPunto de venta (código SIAT) — 0 = punto principal. Vacío = el de la credencial
usertextNoUsuario / cajero
external_referencetextNoReferencia externa — Hasta 200 caracteres
reasontextNoMotivo — Hasta 500 caracteres
client_document_typeselectNoTipo de documento del cliente — 5, 1, 2, 3, 4
client_document_numbertextNoDocumento del cliente (manual)
client_business_nametextNoRazón social (manual)
client_emailtextNoEmail del cliente (manual)
original_invoice_numbernumberNoNúmero de la factura original (manual)
original_issue_datetextNoFecha de la factura original (manual)
original_totalnumberNoTotal de la factura original (manual)
itemsjsonNoLí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_totalnumberNoMonto devuelto (manual, opcional) — Vacío = suma de las líneas de tipo 2
credit_debit_amountnumberNoImporte fiscal de la nota (manual, opcional) — Vacío = 13 % del monto devuelto
credit_debit_discountnumberNoProrrateo del descuento (manual, opcional)
payment_method_codenumberNoMétodo de pago (manual)
idempotency_modeselectNoProtecció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_keytextNoClave de idempotencia — 1–128 caracteres visibles, sin espacios. Recomendado: el id de la venta
output_keytextNoClave de salida — El resultado se añade a data[clave] sin perder el resto de datos

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.

{
"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_transaccion 1 (copia exacta de la original) y otra con 2 (el ajuste); mínimo 2 líneas. El nodo calcula monto_total_devuelto (sobre las líneas de tipo 2) y monto_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.