Ir al contenido

Contabilidad

La sección Contabilidad de Emelit Express concentra todos los movimientos contables de tu negocio (ingresos y egresos), la emisión de facturas CFDI 4.0, los reportes financieros y la configuración de cuentas y categorías. Funciona sobre un microservicio separado llamado accounting-emelitexpress-api que expone 16 endpoints con autenticación JWT, scoping dual (dueño ve todas las sucursales; empleado solo la suya) e idempotencia en los egresos para evitar duplicados.

La sección se organiza dentro de un layout propio (AccountingLayout.vue) que provee a las vistas hijas, vía inyección provide/inject, tres valores: accountingBranch (sucursal seleccionada), accountingBranches (lista disponible) y accountingReady (bandera de carga). Así, cualquier vista hija obtiene el filtro de sucursal sin volver a pintar el selector.

La Contabilidad de Emelit Express no sustituye a tu contador ni a tu software contable certificado (Aspel, ContPAQi, etc.). Es una herramienta de visibilidad operativa y emisión de CFDI. Tus declaraciones ante el SAT siguen siendo responsabilidad de tu contador con tu software certificado.


  1. Sucursales creadas y operando. La sección filtra por sucursal, así que necesitas tus sucursales dadas de alta en Sucursales > Gestión de Sucursales. Si sólo operas una, el selector mostrará una única opción.
  2. Rol con permiso de Contabilidad. Si no ves la sección en la barra lateral, pídele al administrador del negocio que te lo habilite desde Equipo > Empleados, Roles y Permisos.
  3. Servicio accounting-emelitexpress-api activo. Es un microservicio independiente del backend principal. Si no responde verás “No se pudo conectar con el servicio de contabilidad. Intenta más tarde”. Contacta a soporte si persiste.
  4. Para facturar CFDI. Necesitarás la integración con FacturAPI conectada en modo producción. Configúrala primero en Integraciones > Facturación Electrónica (sube tus CSD, captura datos fiscales y API Key).
  5. Para registrar egresos. Necesitas al menos una sucursal específica seleccionada (no se permite “Todas”) y cuentas contables activas con saldo. Configúralas desde Contabilidad > Configuración.
  6. Tiempo estimado. Lectura de esta guía: 12 minutos. Configuración inicial (cuentas + categorías): 10 minutos. Rutina semanal: 10–15 minutos.

Parte 1: Acceder al módulo y entender el Layout

Sección titulada «Parte 1: Acceder al módulo y entender el Layout»
  1. En la barra lateral izquierda de Emelit Express haz clic en Contabilidad.
  2. Se abre el AccountingLayout, organizado en:
    • Header superior: logo del negocio a la izquierda y selector de sucursal a la derecha.
    • Sidebar izquierdo: menú agrupado por bloques.
    • Zona principal derecha: contenido de la sub-vista activa.

El sidebar agrupa las opciones en cuatro bloques:

Bloque Dashboard

  • Dashboard (Pronto): KPIs consolidados, gráficas y alertas.

Bloque Movimientos

  • Ingresos (activo): lista de TODOS los movimientos (ingresos y egresos) agrupados por fecha, con filtros y resumen. Vista principal de operación diaria.
  • Egresos (activo): listar egresos y registrar egresos manuales con formulario lateral.

Bloque Herramientas

  • Reportes (activo): estado de resultados, flujo de efectivo y saldos por cuenta con exportación CSV e impresión.
  • Calendario (Pronto): vista de calendario con movimientos por día.
  • Egresos prog. (Pronto): egresos programados (sueldos, rentas, servicios recurrentes).

Bloque Configuración

  • Cuentas y categorías (activo): alta y activación de cuentas contables y categorías.
  • Cuentas bancarias (Pronto): alta de cuentas bancarias para conciliación con estados de cuenta.
  1. Haz clic en cada opción del sidebar para abrir su contenido en la zona principal.
  2. Las vistas activas (Ingresos, Egresos, Reportes, Configuración) son funcionales ahora mismo.
  3. Las vistas marcadas con “(Pronto)” muestran un mensaje “Esta vista está en desarrollo. Estará disponible pronto.” No afecta al resto del panel.

En el header de Contabilidad verás el selector de sucursal. Este control aplica a TODAS las sub-vistas hijas y se inyecta vía provide/inject para que cada vista hija lo reciba sin tener que volver a pintarlo.

Opción del selectorQué significaQuién la ve
TodasDatos consolidados de todas las sucursales. Vista por defecto del dueño.Solo dueño/administrador multi-sucursal.
Nombre de sucursal (ej. “Restaurante El Buen Sazón — Insurgentes”)Datos exclusivos de esa sucursal.Dueño y empleados (si solo tienen una, queda fijo).

Cuando cambias el selector, todas las sub-vistas se refrescan inmediatamente con el nuevo filtro. No necesitas recargar la página ni pierdes la sub-vista donde estás parado.

Para conservar tu preferencia entre sesiones, el selector guarda el valor en el localStorage del navegador bajo la clave manager_branch_id:{businessId}, donde {businessId} es el identificador único de tu negocio.

  • Si mañana vuelves a entrar, te deja en la sucursal (o “Todas”) que tenías seleccionada.
  • Cada negocio tiene su propia clave, así que si administras varios negocios las preferencias no se mezclan.
  • Si cambias de navegador o usas sesión incógnito, empieza de nuevo en “Todas”.
  • Para resetear, cierra sesión y entra de nuevo, o limpia el storage del navegador.

Si tu rol sólo tiene acceso a UNA sucursal específica, el selector aparecerá bloqueado en esa sucursal y no podrás cambiarlo a “Todas” ni a otra sucursal. Solo los administradores con permiso multi-sucursal verán “Todas” y el resto de opciones.


Ruta: /accounting/ingresos

Es la vista principal de operación diaria. Ojo: a pesar del nombre, muestra TODOS los movimientos contables (ingresos y egresos) agrupados por fecha. Te permite:

  • Ver movimientos agrupados por día (vista móvil: tarjetas colapsables; vista desktop: tabla con 10 columnas).
  • Filtrar por búsqueda de texto, estado, tipo (ingreso/egreso/ambos) y rango de fechas desde/hasta.
  • Expandir/colapsar todos los días con un botón.
  • Ver el resumen superior: total de movimientos, ingresos, egresos y neto (calculado vía getSummary).
  • Paginar (Anterior/Siguiente) entre lotes de movimientos.
  • Interpretar badges de estado: posted, voided, paid, pending, draft, to_pay.
  • Ver el origen mapeado de cada movimiento: pedido digital, venta directa, consumo local, compra inventario, gasto manual.
  • En modo “Todas” se muestra el mapa de sucursales (id → nombre) en una columna propia.

Para el detalle completo consulta la guía Ingresos y movimientos.

API utilizada: movimientosService.getRecentMovements(limit, sucursalId) y movimientosService.getSummary(sucursalId).


Ruta: /accounting/egresos

Permite listar egresos y registrar egresos manuales (gastos operativos, pagos a proveedores, retiros, etc.).

  • Requisito: para registrar un egreso debes tener una sucursal específica seleccionada (no se permite “Todas”). Si estás en “Todas” verás la lista pero el botón de registrar te pedirá elegir sucursal.
  • Resumen superior: total registrado + número de movimientos del filtro.
  • Lista de egresos: cada fila muestra descripción/categoría/proveedor, cuenta/fecha y monto en rojo.
  • Drawer lateral derecho “Registrar egreso” con formulario completo: descripción (obligatorio), monto (obligatorio > 0), fecha (default hoy), categoría, cuenta, proveedor (counterparty), método de pago y notas.
  • Idempotencia: el formulario incluye una idempotency_key (UUID) que el backend usa para evitar duplicados si das clic varias veces o se cae la red.

Para el detalle completo consulta la guía Egresos manuales.

API utilizada: AccountingService.listExpenses({ sucursalId }), listCategories('egreso'), listAccounts(branch), createExpense({...form, sucursal_id}).


Ruta: /accounting/facturas

Emite facturas CFDI 4.0 vía FacturAPI en modo producción, consulta facturas emitidas y gestiona cancelaciones ante el SAT.

  • Grid de 2 columnas: formulario de emisión (izquierda) + lista de facturas (derecha).
  • Banner de advertencia si la integración con FacturAPI no está lista para producción, con botón “Abrir Integraciones”.
  • Formulario “Emitir factura”: select de pedido entregado (muestra tracking, total, sucursal y si ya fue facturado), RFC, código postal, razón social, régimen fiscal, uso CFDI (G03 ingreso / S01 egreso / CP01 pago), email del receptor y checkbox “enviar PDF y XML al emitir”.
  • Lista de facturas: tracking/order_id, estado fiscal (issued, failed, processing, cancel_requested, cancelled), cliente, RFC, sucursal, fecha, UUID y total. Acciones por factura: Ver PDF, Ver XML, Enviar por correo, Cancelar, Actualizar estado, Acuse PDF/XML.
  • Modal de cancelación: motivo SAT (01 comprobable emitido con errores sin relación, 02 comprobable emitido con errores con relación, 03 no se llevó a cabo la operación, 04 operación nominativa relacionada), factura sustituta (solo motivo 01), explicación interna y confirmación.
  • Estados de cancelación: requesting, pending, verifying, accepted, rejected, expired, failed.

Para el detalle completo revisa la guía de Facturación Electrónica.

API utilizada: BillingService.getStatus, listInvoices, listBillableOrders, issueInvoice, downloadInvoice, sendInvoiceByEmail, cancelInvoice, syncInvoice, downloadCancellationReceipt.


Ruta: /accounting/reportes

Tres pestañas (tabs) con reportes financieros filtrables por sucursal y por rango de fechas:

  1. Estado de resultados: 3 KPIs (Ingresos, Egresos, Utilidad neta) con variación porcentual vs periodo anterior; tablas de ingresos y egresos por categoría; sección “Resultado por sucursal” que solo aparece en modo “Todas”.
  2. Flujo de efectivo: 5 KPIs (saldo inicial, entradas, salidas, flujo neto, saldo final) + tabla diaria (fecha, entradas, salidas, neto).
  3. Saldos: lista por cuenta (nombre, sucursal, tipo, saldo inicio periodo, saldo final).

Cada tab permite exportar CSV dinámico (según el tab activo) e imprimir nativo (window.print). El footer incluye el disclaimer: “No sustituye estados financieros fiscales ni contabilidad de partida doble”.

Para el detalle completo consulta la guía Reportes financieros.

API utilizada: AccountingService.getIncomeStatement({date_from, date_to, sucursal_id}), getCashFlow({date_from, date_to, sucursal_id}).


Ruta: /accounting/configuracion

Toggle de dos pestañas: Cuentas | Categorías.

Tab Cuentas:

  • Grid con lista (nombre + sucursal/tipo + balance + botón Activar/Desactivar).
  • Formulario “Nueva cuenta”: nombre, tipo (cash, bank, card, digital, other), sucursal y saldo inicial.
  • Las cuentas pueden ser globales (sucursal null) o de una sucursal específica.
  • Las cajas (cash) DEBEN tener sucursal asignada: no existen cajas globales.
  • El balance se calcula automáticamente: opening_balance + Σ(movimientos posted, ingreso − egreso).

Tab Categorías:

  • Lista (nombre + tipo + etiqueta “Predeterminada” si is_system).
  • Formulario “Nueva categoría”: nombre, tipo (egreso, ingreso, ambos).
  • Solo se puede activar/desactivar (no eliminar), para preservar integridad histórica de movimientos.

Para el detalle completo consulta la guía Configuración contable.

API utilizada: listCategories, createCategory, updateCategory, listAccounts, createAccount, updateAccount.


Parte 8: Backend y consideraciones técnicas

Sección titulada «Parte 8: Backend y consideraciones técnicas»

El backend de Contabilidad es el microservicio accounting-emelitexpress-api. Esto implica:

  1. 16 endpoints con JWT auth. Todas las peticiones requieren token JWT válido.
  2. Scoping dual:
    • Dueño/administrador: puede pasar sucursal_id opcional. Si lo omite, ve todas las sucursales.
    • Empleado: el backend fuerza sucursal_id al de su asignación, sin importar qué mande el frontend.
  3. Tablas involucradas: movimientos_contables, accounting_categories, accounting_accounts, sucursales, negocios, empleados, employee_roles.
  4. Idempotencia en POST /movimientos/egresos: opera con idempotency_key para que reintentos de red no dupliquen el egreso.
  5. Validaciones: validateCategory, validateAccount, branchBelongsToBusiness antes de cada escritura.
  6. Movimientos inmutables: no hay DELETE de movimientos. Si te equivocas, se anula con un movimiento voided vinculante, preservando la trazabilidad.
  7. Performance: al separar contabilidad en microservicio, las consultas pesadas (resúmenes por día, por sucursal, por periodo) no degradan el backend principal.
  8. Disponibilidad: si accounting-emelitexpress-api se cae, sólo afecta a la sección de Contabilidad. Pedidos, POS, reservas y demás siguen operativos.

Eres dueño del Restaurante El Buen Sazón con tres sucursales: Insurgentes (CDMX), Vallejo (CDMX) y Guadalajara. Llevas 2 años con Emelit Express y desde julio 2026 cuentas con el módulo completo de Contabilidad. Tu contador te pidió un cierre mensual con ingresos, egresos, utilidad neta y facturas emitidas del mes de junio.

  1. Ver ingresos consolidados (“Todas”) de junio y comparar con mayo.
  2. Registrar el pago de la renta de Vallejo ($15,000 MXN a Inmobiliaria Reforma).
  3. Emitir factura CFDI de un pedido entregado de Insurgentes ($3,450 MXN) a un cliente que la pidió.
  4. Exportar el estado de resultados a CSV y enviarlo a tu contador.

Lunes 1 de julio, 9:00 AM — Ingresos

  1. Clic en Contabilidad en la barra lateral. El header muestra “Todas” (tu última selección guardada en manager_branch_id:789).
  2. Clic en Ingresos en el sidebar. La barra de filtros permite rango desde/hasta; selecciofanas 01/06/2026 y 30/06/2026.
  3. El resumen superior muestra: 4,210 movimientos, $812,500 ingresos, $486,200 egresos, $326,300 neto.
  4. La columna “Origen” te indica de cada movimiento: “venta directa”, “pedido digital”, “compra inventario”, “gasto manual”, “consumo local”.
  5. Filtras por estado posted y tipo ingreso y expandes el sábado 14, el día con más ingresos ($48,900 MXN), para revisar).

Lunes 1 de julio, 9:20 AM — Egresos (registrar renta Vallejo)

  1. En el header cambias el selector a Vallejo (no puedes registrar estando en “Todas”).
  2. Clic en Egresos en el sidebar. El resumen muestra $38,700 registrados en Vallejo en junio.
  3. Clic en Registrar egreso (botón superior). Se abre el drawer lateral derecho con el formulario.
  4. Llenas: descripción “Renta oficina Vallejo junio 2026”, monto $15,000.00, fecha 30/06/2026, categoría “Renta y servicios”, cuenta “Banco Azteca 0492”, counterparty “Inmobiliaria Reforma S.A.”, método de pago “transferencia”, notas “Transferencia SPEI confirmada”.
  5. Clic en Guardar. Se genera un UUID de idempotencia detrás de escena. Si la red se cae y reintentas, no se duplicará porque el backend reconoce la misma llave.
  6. La lista se actualiza y aparece el nuevo egreso en rojo con - $15,000 MXN.

Lunes 1 de julio, 9:40 AM — Facturación CFDI

  1. Clic en Facturas en el sidebar (integra el bloque de Movimientos/Herramientas según configuración).
  2. En el banner verde “FacturAPI en producción — conectado” confirma que está activo.
  3. En el formulario de emisión, en el select de pedido entregado, buscas el pedido #ORD-INS-3852 de Insurgentes, total $3,450 MXN, etiqueta “no facturado”.
  4. Ingresas RFC del cliente (JORA850412H87), CP 06700 (CDMX), razón social “Comercializadora Jora SA de CV”, régimen fiscal “601 General de Ley Personas Morales”, uso CFDI G03 (ingresos).
  5. Marca checkbox “enviar PDF y XML al emitir” y pegas el correo del cliente.
  6. Clic en Emitir factura. En segundos aparece en la lista de la derecha con estado issued, UUID y botones Ver PDF / XML / Correo / Cancelar.

Lunes 1 de julio, 9:55 AM — Reporte para el contador

  1. Clic en Reportes en el sidebar. Selecciona “Todas” en el header, rango 01/06/202630/06/2026.
  2. En el tab Estado de resultados lees los KPIs: Ingresos $812,500 (+8.2% vs mayo), Egresos $501,700 (+3.1% vs mayo, ya incluye tu nueva renta), Utilidad neta $310,800 (+23.4% vs mayo).
  3. Clic en CSV. Se descarga estado_de_resultados_2026-06.csv con tablas de ingresos por categoría, egresos por categoría y resultado por sucursal.
  4. Clic en Imprimir si quieres papel para tu reunión mensual; se abre el diálogo de impresión nativo del navegador.
  5. Reenvías el CSV por correo a tu contador. Cumpliste en menos de una hora.
  • Decisiones más rápidas: detectaste que la utilidad neta de Insurgentes subió 23% vs mayo gracias a la promoción de almuerzo; la replicas en Vallejo en agosto.
  • Ahorro operativo: registraste egresos en 5 clics (antes lo hacías en Excel aparte), ya no duplicas entradas por reintentos de red gracias al idempotency key.
  • Facturación en caliente: el cliente recibió su CFDI 4.0 con PDF y XML en su correo 30 segundos después de pedirlo; sin screenshots ni XML sueltos en WhatsApp.
  • Reporte mensual en menos de una hora: tu contador recibió el CSV con todo lo que pedía sin que tuvieras que cruzar hojas a mano.

  1. Cierre de día: entra a Contabilidad > Ingresos con rango “Hoy”. Revisa el neto del día.
  2. Revisa egresos del día: cambia a Egresos y confirma que no haya registrados que desconozcas.
  3. Si facturaste hoy: revisa en Facturas que todos los CFDI estén en estado issued (no failed ni processing).
  1. Lunes 9:00 AM: entra a Contabilidad, selecciona “Todas”, rango “Semana pasada”.
  2. Lunes 9:05 AM: revisa en Ingresos el neto y los días atípicos (expande el mejor y el peor).
  3. Lunes 9:10 AM: revisa Egresos y verifica que todos los pagos a proveedores del periodo quedaron registrados.
  4. Lunes 9:15 AM: revisa tab “Estado de resultados” en Reportes para ver la variación % vs semana anterior.
  5. Lunes 9:20 AM: confirma con tu equipo las facturas pendientes de cancelar (cancel_requested) en Facturas.
  1. Día 1 del mes, 9:00 AM: selecciona “Todas”, rango “Mes anterior”.
  2. 9:10 AM: revisa Estado de resultados, Flujo de efectivo y Saldos en Reportes.
  3. 9:30 AM: exporta los 3 CSV y reenvía al contador.
  4. 9:45 AM: valida facturas del mes en estado issued vs tus pedidos facturables sin facturar.
  5. 10:00 AM: si hubo errores en cuentas (categoría mal asignada, cuenta equivocada), corrige en Configuración y registra el egreso correcto (no se elimina el erróneo, se anula con voided).
  6. 10:30 AM: agendar reunión mensual de resultados con gerentes por sucursal.
  1. Verifica que tus sucursales están dadas de alta en Sucursales > Gestión de Sucursales.
  2. Confirma con tu administrador que accounting-emelitexpress-api está activo.
  3. En Contabilidad > Configuración crea las cuentas base: una caja por cada sucursal, las cuentas bancarias y de tarjeta que uses, y cualquier cuenta digital (Bizum, Mercado Pago, etc.).
  4. En el mismo lugar crea las categorías base de tus egresos: Renta y servicios, Sueldos, Insumos, Mantenimiento, Marketing, Impuestos, Otros. Marca las predeterminadas del sistema que ya vienen bloqueadas.
  5. Configura FacturAPI en Integraciones > Facturación Electrónica con tu API Key de producción y CSD.
  6. Verifica que tu rol tiene permiso multi-sucursal si administras varias sucursales.

ErrorCausa probableSolución paso a paso
”No se pudo conectar con el servicio de contabilidad”El microservicio accounting-emelitexpress-api está caído o no responde.1. Recarga la página. 2. Espera 5 minutos e intenta de nuevo. 3. Si persiste, contacta a soporte. Si eres admin técnico, verifica el estado del microservicio.
”Cambio el selector pero no se actualiza la vista”Problema intermitente con provide/inject o caché del navegador.1. Pulsa el botón Actualizar en la vista. 2. Si continúa, recarga con F5/Ctrl+R. 3. Limpia localStorage: DevTools (F12) > Application > Local Storage > elimina manager_branch_id:{businessId}. Recarga.
”Estoy en ‘Todas’ pero no veo ingresos de una sucursal”La sucursal no tiene órdenes cerradas en el periodo, o el sucursal_id no está mapeado.1. Quita todos los filtros (estado, tipo, fecha). 2. Verifica que esa sucursal tenga órdenes cerradas en el periodo. 3. Si sí pero no aparecen, contacta a soporte.
”El selector se resetea a ‘Todas’ cada vez que entro”Tu navegador bloquea localStorage o entras en incógnito.1. Verifica que no estás en incógnito. 2. En Chrome/Edge permite cookies y datos del sitio. 3. Desactiva bloqueadores de scripts para tu panel.
”No veo la sección Contabilidad en la barra lateral”Tu rol no tiene permiso de acceso a Contabilidad.Pide al administrador que habilite el permiso “Contabilidad” en Equipo > Empleados, Roles y Permisos.
”No puedo registrar un egreso desde ‘Todas‘“Es comportamiento esperado. Los egresos requieren sucursal específica.1. Cambia el selector a la sucursal donde se realizó el gasto. 2. Abre el drawer Registrar egreso y llena el formulario.
”Registré el mismo egreso dos veces”No debería pasar gracias a idempotency_key, pero si ocurrió es porque se generó un UUID distinto (e.g., recargaste el formulario).1. Identifica el duplicado en la lista. 2. Anula uno con voided (no se elimina, se marca anulado). 3. Reporta el caso a soporte para validar el idempotency key.
”No puedo cancelar una factura, dice ‘Pendiente SAT‘“La cancelación está en estado pending o verifying esperando respuesta del SAT.1. Espera hasta 24 h y pulsa “Actualizar estado”. 2. Si pasa a accepted, descarga el Acuse. 3. Si pasa a expired o rejected, consulta con tu contador.
”La columna Sucursal aparece vacía para filas viejas”Ordenes antiguas sin sucursal_id (previas a la migración multi-sucursal).1. Identifica las órdenes afectadas. 2. Edícalas en Pedidos > Panel de Pedidos asignando la sucursal correcta. 3. Refresca Ingresos.
”Mi cuenta de caja no acepta sucursal null”Por diseño: las cuentas tipo cash DEBEN tener sucursal asignada.1. Crea la cuenta directamente desde la sucursal correcta en el selector. 2. O edita la cuenta y asígnaole la sucursal. Las cajas globales no existen.

P: ¿Contabilidad es un software contable completo? R: No. Es una herramienta de visibilidad operativa (ingresos, egresos, KPIs) y emisión de CFDI 4.0. Tu software contable certificado (Aspel, ContPAQi, etc.) sigue siendo el responsable de tus declaraciones fiscales. La Contabilidad de Emelit Express se complementa con tu significación de partida doble formal.

P: ¿Cuándo se liberarán las vistas marcadas como “Pronto”? R: Dashboard, Calendario, Egresos prog. y Cuentas bancarias están en desarrollo. Se liberan progresivamente. Ingresos, Egresos, Reportes, Configuración y Facturas ya están activos.

P: ¿El selector de Contabilidad afecta a otras secciones del panel? R: No, es independiente. Queda guardado en manager_branch_id:{businessId} y solo lo leen las vistas hijas de AccountingLayout. Las otras secciones (Pedidos, POS, Reservas) tienen sus propios selectores.

P: ¿Puedo exportar movimientos a Excel? R: Sí. En Reportes cada tab tiene botón CSV que descarga el contenido del tab activo. En Ingresos y Egresos la exportación CSV se está integrando en próximas versiones.

P: ¿Los movimientos se pueden eliminar? R: No. Los movimientos son inmutables por diseño: permiten trazabilidad fiscal. Si te equivocas en un egreso, anúlalo con estado voided desde Egresos. Si una factura se emitió mal, cancelala vía SAT desde Facturas.

P: ¿Por qué no puedo registrar egresos estando en “Todas”? R: Porque cada egreso debe quedar imputado a una sucursal específica (afecta balance, reportes y estado de resultados por sucursal). Cambia el selector a la sucursal donde se incurrió el gasto y registra.

P: ¿Qué significa cada badge de estado? R: posted (registrado y válido), voided (anulado), paid (pagado — propio de cuentas por pagar), pending (pendiente de aprobación), draft (borrador), to_pay (programado para pago futuro).

P: ¿Qué pasa si FacturAPI no está en producción? R: En Facturas verás un banner indicando que no está listo para producción, con un botón “Abrir Integraciones” que te lleva directo a configurar FacturAPI. Hasta entonces no se pueden emitir CFDI con validez fiscal.

P: ¿Las categorías predeterminadas se pueden borrar? R: No. Las marcadas como “Predeterminada” (is_system) solo se pueden activar/desactivar, no eliminar, para preservar la integridad histórica de los movimientos que las referencian.

P: ¿Puedo tener una cuenta global (sin sucursal)? R: Sí, excepto para tipo cash (caja). Las cuentas bank, card, digital y other pueden crear cuentas globales. Las cajas siempre pertenecen a una sucursal.

P: ¿Cómo se calcula el balance de una cuenta? R: opening_balance + Σ(movimientos posted), donde ingresos suman y egresos restan. Los movimientos voided, draft o pending no se consideran en el balance.

P: ¿Si rebottea la red al registrar un egreso se duplica? R: No, gracias a la idempotencia. El formulario genera una idempotency_key (UUID) que el backend valida: si recibe el mismo key, devuelve el resultado original sin crear un duplicado.

P: ¿Cómo se relaciona con la Facturación Electrónica? R: Las facturas CFDI emitidas se gestionan en /accounting/facturas y los pedidos facturables se listan ahí. Los ingresos del POS aparecen en Ingresos independientemente de si fueron o no facturados. Para separar facturado vs no facturado, en una versión futura habrá una columna “Facturado” en Ingresos.


Para complementar esta sección, revisa el Panel de Analíticas para entender el rendimiento por sucursal desde otra perspectiva, la Gestión de Sucursales para mantener tus sucursales bien configuradas, y la Facturación Electrónica para el detalle de la integración con FacturAPI.