Esta guía muestra el flujo general para integrar cualquier aplicación con Moyata Facturación mediante API REST JSON. La integración puede realizarse desde sistemas ERP, sistemas de ventas, puntos de venta, plataformas web u otras aplicaciones que necesiten emitir facturas en línea en Bolivia.
Esta guía presenta el flujo general de integración. La documentación técnica completa, las credenciales de prueba y el acompañamiento inicial se entregan al activar el servicio.
La integración más estable sigue este orden:
/api/v1/catalogos y guardar los IDs/códigos en la aplicación externa./api/v1/validaciones/nit cuando el tipo de documento sea NIT./api/v1/facturas con los productos ya sincronizados./api/v1/configuracion/ambiente.
La API acepta un Bearer Token generado desde el panel de credenciales. También soporta el encabezado
X-API-Token para integraciones simples.
Authorization: Bearer <api_token> Content-Type: application/json Accept: application/json
Credencial: se genera desde el panel privado por un usuario autorizado de la empresa.
Scopes habituales: facturas:create, catalogos:read, unidades:write, categorias:write y productos:write si la aplicación externa sincroniza catálogos propios.
La API puede ser consumida desde sistemas desarrollados en Java, .NET, PHP, Python, Node.js u otras tecnologías que permitan realizar solicitudes HTTP con formato JSON.
También puede integrarse con sistemas ERP, sistemas de ventas, puntos de venta, plataformas administrativas, tiendas en línea o aplicaciones internas que necesiten emitir facturas en línea desde Bolivia.
Las credenciales API no se crean libremente desde una aplicación externa. Se generan desde la plataforma por un usuario autorizado de la empresa, con la sesión iniciada y los permisos adecuados. El token resultante queda asociado al usuario y a la empresa activa.
Si una empresa necesita integrar su aplicación externa, primero debe activar el servicio y completar la configuración inicial. Recién después el usuario autorizado puede emitir el token y compartirlo de forma segura con el backend de esa aplicación. Si debe operar desde otra sucursal o punto de venta, debe generar o configurar el token correspondiente para ese contexto.
Devuelve tipos de documento, métodos de pago y productos de la empresa autenticada.
Lista códigos habilitados para el SIN.
Catálogo de tipos de documento de identidad disponibles para facturación.
Devuelve productos con sincronización fiscal válida.
Devuelve las actividades económicas sincronizadas desde SIAT.
Devuelve los productos del fisco relacionados con cada actividad.
Devuelve las unidades de medida del fisco para relacionarlas con unidades propias.
Permite crear, editar y eliminar unidades de medida relacionadas con unidadbo.
Permite relacionar categorías con actividad y producto fiscal, y bloquear eliminaciones con productos hijos.
Permite crear, editar y eliminar productos. La categoría es opcional; si existe, hereda códigos fiscales.
Consulta al padrón SIAT para validar NIT, razón social y código de excepción.
Actualiza el ambiente operativo del usuario API y regenera el CUFD del punto de venta activo.
Registra y emite una factura con el flujo completo de validación, XML, PDF y envío de correo.
Al activar el servicio se entrega acceso al ambiente correspondiente, credenciales API, datos de configuración de la empresa, sucursal y punto de venta, catálogos sincronizados y acompañamiento inicial para realizar las primeras pruebas de emisión.
Ese acceso permite que la aplicación integradora empiece a emitir facturas en línea sin reemplazar su operación comercial principal.
Payload mínimo para emitir una factura completa. La empresa, la sucursal y el punto de venta se resuelven desde el token, por lo que no se envían como parámetros.
{
"referencia_externa": "VENTA-000152",
"emitir": true,
"codigo_tipo_documento_identidad": 5,
"codigo_metodo_pago": 1,
"nombre_cliente": "Cliente Demo",
"nit_cliente": "99001",
"email_cliente": "cliente@correo.com",
"items": [
{
"id_producto": 10,
"cantidad": 1,
"precio_unitario": 100,
"descuento": 0,
"descripcion_adicional": "Servicio"
}
]
}
La referencia_externa debe ser única por cada venta o documento generado en la aplicación integradora.
La emisión es sincrónica: la API responde cuando la factura fue procesada y quedaron generados el XML, el PDF y el registro fiscal.
{
"ok": true,
"message": "Factura emitida correctamente",
"factura": {
"numero_factura": 15,
"cuf": "...",
"cufd": "...",
"ruta_xml": "...",
"ruta_pdf": "...",
"url_xml": "...",
"url_pdf": "..."
}
}
/api/v1/catalogos/metodos-pago./api/v1/unidades; también puede enviarse id_unidad_bo si esa unidad fiscal ya está relacionada con una unidad local./api/v1/catalogos/productos o de la respuesta de /api/v1/productos./api/v1/catalogos/actividades y /api/v1/catalogos/productos-fisco.
Si la aplicación externa administra muchos productos, puede crear, actualizar y eliminar productos usando /api/v1/productos.
Para crear un producto debe enviar codigo_producto y descripcion_producto. Si el producto pertenece a una categoría,
puede enviar id_categoria o codigo_categoria para heredar los códigos fiscales.
Si el cliente externo trabaja productos sin categoría, puede enviar directamente codigo_actividad_fisco y
codigo_producto_fisco. La API valida esos códigos contra las tablas actividad y productobo.
{
"codigo_producto": "EXT-001",
"descripcion_producto": "Producto sincronizado",
"id_categoria": 4,
"id_unidad": 1,
"precio_consumidor": 100
}
{
"codigo_producto": "EXT-002",
"descripcion_producto": "Producto sin categoria",
"codigo_actividad_fisco": 620100,
"codigo_producto_fisco": 99100,
"id_unidad": 1,
"precio_consumidor": 100
}
La eliminación solo se ejecuta si el producto no tiene movimientos en facturas. Si ya fue usado, la API responde con error 409.
La aplicación externa puede consultar /api/v1/catalogos/unidades-fisco para obtener las unidades de medida del fisco.
Luego puede crear unidades propias en /api/v1/unidades relacionándolas con id_unidad_bo.
{
"unidad": "Unidad",
"abrev": "UN",
"id_unidad_bo": 58
}
DELETE /api/v1/unidades elimina la unidad solo si no tiene productos asociados. En productos puede enviarse id_unidad o id_unidad_bo.
La aplicación externa puede consultar /api/v1/catalogos/actividades y
/api/v1/catalogos/productos-fisco?codigo_actividad_fisco=620100 para mostrar al usuario las opciones del fisco.
Luego puede crear o editar categorías en /api/v1/categorias. Cuando cambia la actividad o producto fiscal de una categoría,
la API hereda esos valores a los productos que tengan esa categoría asignada. Los productos sin categoría no se modifican.
{
"codigo_categoria": "SERV",
"descripcion_categoria": "Servicios",
"codigo_actividad_fisco": 620100,
"codigo_producto_fisco": 99100
}
DELETE /api/v1/categorias elimina la categoría solo si no tiene productos hijos. Si existen productos relacionados, responde 409.
La API usa estos códigos como referencia general:
| Código | Significado |
|---|---|
| 200 | Consulta correcta |
| 201 | Factura creada |
| 400 | Datos incompletos o inválidos |
| 401 | Token inválido o ausente |
| 403 | Sin permiso para ese endpoint |
| 404 | Recurso no encontrado |
| 409 | Conflicto, duplicado o factura ya procesada |
| 422 | Error de validación |
| 500 | Error interno |
Formato de error recomendado:
{
"ok": false,
"message": "codigo_metodo_pago invalido",
"errors": {
"codigo_metodo_pago": [
"El metodo de pago no existe o no esta habilitado para esta empresa."
]
}
}
Puedes probar la API desde cualquier backend o consola. Solo cambia el token y el payload.
curl -X POST "https://factura.moyata.net/api/v1/facturas" \
-H "Authorization: Bearer <api_token>" \
-H "Content-Type: application/json" \
-d '{...}'
| Error | Causa habitual | Acción recomendada |
|---|---|---|
Token invalido o vencido |
La credencial expiró o el token no coincide con el registrado. | Generar una credencial nueva desde el panel privado. |
codigo_metodo_pago invalido |
Se envió un clasificador que no existe o no está habilitado. | Consultar /api/v1/catalogos/metodos-pago. |
Producto no encontrado |
El ID de producto no pertenece a la empresa autenticada. | Sincronizar catálogos y usar IDs devueltos por la API. |
No existe codigo de sistema configurado |
Falta asociar el token y el ambiente correcto a la empresa. | Revisar /api/v1/configuracion/ambiente y el panel de tokens. |
El orden recomendable para una aplicación integradora es este:
numero_factura, cuf, url_pdf y url_xml.