Ir al contenido

facturaBoEmitirLote

Emite varias facturas en una sola llamada (la API admite 20 por petición; el nodo trocea los lotes mayores). Valida TODAS antes de enviar ninguna y devuelve el resultado de cada una. Admite éxito parcial. No admite idempotencia ni notas de crédito/débito: si la red falla a mitad de un lote, comprueba con «Consultar → listar» antes de reintentar.

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: «Emitir facturas en lote».

CampoTipoRequeridoDescripción
credentials_idcredentialsSíCredencial facturabo
invoicesjsonSíFacturas (JSON) — Array de {sector, factura}; la factura usa los mismos campos que «Emitir factura» (o el formato del API con cliente y emisor)
document_sectorselectNoSector (común) — Para las facturas que no indican el suyo · 1, 2, 3, 4, 6, 8, 11, 13, 14, 16, 17, 28
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
payment_method_codenumberNoMétodo de pago (común)
default_codigo_sinnumberNoCódigo de producto SIN por defecto — Se aplica a las líneas que no traen codigo_sin (catálogo productos_servicios)
default_unit_measurenumberNoUnidad de medida por defecto — 58 = Servicio, 1 = Unidad (catálogo unidades_medida)
default_activitytextNoActividad económica por defecto (CAEB) — 6 o 7 dígitos. Se aplica a las líneas que no traen actividad_economica
chunk_sizenumberNoFacturas por llamada — Máximo 20 (límite de la API)
max_invoicesnumberNoMáximo de facturas del lote
invalid_itemsselectNoSi alguna factura no es válida — abort, skip
fail_on_partialbooleanNoDar error si alguna falla
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": false,
"total": 45,
"successful": 44,
"failed": 1,
"chunks": 3,
"results": [
{
"index": 0,
"success": true,
"sector": 1,
"invoice_number": 1,
"cuf": "A…",
"state": "EMITIDA"
},
{
"index": 23,
"success": false,
"stage": "facturabo",
"sector": 1,
"error": "NIT invalido"
}
],
"warnings": [],
"environment": "sandbox"
}

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",
"invoices": [
{
"sector": 1,
"factura": {
"client_document_number": "1023456789",
"client_business_name": "CLIENTE A S.R.L.",
"items": [
{
"descripcion": "Servicio A",
"cantidad": 1,
"precio_unitario": 200,
"codigo_sin": 83141
}
]
}
}
],
"default_codigo_sin": 83141,
"invalid_items": "abort"
}
  • Valida TODAS las facturas antes de enviar ninguna (salvo «omitir inválidas»). Trocea en llamadas de 20 y reasigna los índices para que results[i] coincida con la lista de entrada.
  • El lote admite éxito parcial y NO admite idempotencia ni notas de crédito/débito. Un timeout no se reintenta, para no duplicar: si falla a mitad, el error trae partial con lo confirmado; comprueba con «Consultar → listar» antes de reenviar.
  • Cada elemento puede venir con los campos de «Emitir factura» o en el formato nativo de la API (emisor, cliente, items), que se envía tal cual.
  • La forma exacta de cada resultado del lote no está detallada en la documentación pública; el nodo reconoce ok/exito y los datos en datos.