FISCALISTO / API
Viáticos y gastos
Las comprobaciones de viáticos y gastos de quien viaja o gasta por el emisor: sus facturas revisadas contra la ley y la política, la aprobación, y los anticipos, reembolsos y devoluciones.
Cuando alguien viaja o gasta por el emisor, cada viaje (o cada mes de gastos de oficina) es una comprobación: la persona junta sus facturas, la envía, alguien la aprueba y el saldo se liquida con un reembolso o una devolución. Son las mismas de Gastos › Viáticos y gastos en la app: lo que haga con la API aparece ahí, y lo que hagan ahí aparece aquí.
Cada gasto se revisa contra la ley (los topes de LISR art. 28 fr. V para alimentos, hospedaje y renta de auto, los pagos de más de $2,000 y la gasolina, que no van en efectivo, la regla del 20% sin factura de RLISR art. 152) y contra la política del emisor. La comprobación dice cuánto se deduce, cuánto no y por qué, en issues.
Al aprobarla, sus facturas recibidas se deducen en los impuestos del emisor y la comprobación entra en las pólizas contra la cuenta 107.01 Funcionarios y empleados (employee_expenses en Contabilidad). Para un empleado de Nómina, lo que se liquida «en la nómina» va en su siguiente recibo: los viáticos comprobados como percepción 050 exenta y lo que ya se le dio como deducción 081.
Las personas
Agregue a quien viaja o gasta: un empleado de Nómina (employee) o alguien por honorarios (name y tax_id).
curl https://api.fiscalisto.com/v1/expense_people \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"kind": "empleado",
"employee": "emp_OufpKqnrvx9p1",
"email": "ana@example.com",
"base_city": "Monterrey"
}'Contesta la persona (exp_…). base_city es donde trabaja: un viaje a más de 50 km de ahí es de viáticos (far en la comprobación). Para que suba sus facturas desde el teléfono, sin cuenta, dele su enlace:
curl https://api.fiscalisto.com/v1/expense_people/exp_OufpKqnrvx9p3/link \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'url es su enlace: ahí ve solo sus comprobaciones. Con "renew": true le da uno nuevo y el anterior deja de funcionar; DELETE /v1/expense_people/{id}/link lo apaga.
Abrir una comprobación
Una por viaje (kind viaje, por omisión) o una por periodo de gastos de oficina que la empresa reembolsa (gastos):
curl https://api.fiscalisto.com/v1/expense_reports \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"person": "exp_OufpKqnrvx9p3",
"destination": "Guadalajara",
"purpose": "Visita a clientes",
"start_date": "2026-11-03",
"end_date": "2026-11-05"
}'Queda draft (abierta). Si se le da dinero antes del viaje, regístrelo como anticipo:
curl https://api.fiscalisto.com/v1/expense_reports/exr_OufpKqnrvx9p4/movements \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "anticipo", "amount": 3000, "date": "2026-11-02" }'method es transferencia (por omisión), efectivo, tarjeta o nomina: con nomina, el dinero va en el siguiente recibo de nómina del empleado.
Agregar los gastos
Con el UUID de una factura que el emisor recibió (Descargas del SAT), la fecha, el monto, el proveedor y la forma de pago salen de ella:
curl https://api.fiscalisto.com/v1/expense_reports/exr_OufpKqnrvx9p4/items \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "uuid": "6F1C2D3E-4A5B-4C6D-8E9F-0A1B2C3D4E5F", "category": "hospedaje" }'Sin factura (un ticket, un comprobante del extranjero), mande category, date, amount y receipt (ticket, extranjero o ninguno). En payment diga cómo se pagó: lo que se pagó con tarjeta_empresa no se le reembolsa a la persona. Cada respuesta es la comprobación revisada: items[].deductible, items[].issues y el balance.
balance positivo es lo que la persona debe devolver; negativo, lo que la empresa le debe reembolsar.
Enviar, aprobar y liquidar
POST /v1/expense_reports/{id}/submitla envía a aprobar (submitted). Contestaexpense_report_invalidsi un gasto tiene un error (issuesconlevelerror).POST /v1/expense_reports/{id}/items/{item}con"rejected": trueyreject_reasonrechaza un gasto al revisarla: no se paga ni se deduce.falselo vuelve a incluir.POST /v1/expense_reports/{id}/returnconnotela devuelve a la persona para corregir (rejected).POST /v1/expense_reports/{id}/approvela aprueba (approved). La API puede aprobar lo que envió un miembro del equipo; en la app nadie aprueba lo que envió.
Con el saldo en cero se cierra sola (closed). Si no, registre el reembolso o la devolución:
curl https://api.fiscalisto.com/v1/expense_reports/exr_OufpKqnrvx9p4/movements \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kind": "reembolso", "amount": 1350, "date": "2026-11-07" }'DELETE /v1/expense_reports/{id}/movements/{movement} deshace un movimiento, y POST /v1/expense_reports/{id}/reopen regresa una aprobada a abierta: sus facturas dejan de deducirse y sale de las pólizas. No se puede reabrir una que ya se reportó en un recibo de nómina.
La política
GET /v1/expense_policy trae los topes por categoría (limits, al día y por persona o por gasto, en México y en el extranjero), hasta cuánto se acepta sin factura (ticket_limit) y en cuántos días se comprueba (due_days). POST /v1/expense_policy cambia solo lo que manda:
curl https://api.fiscalisto.com/v1/expense_policy \
-H "Authorization: Bearer $FISCALISTO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"limits": { "alimentos": { "domestic": 750, "abroad": 1500, "per": "dia" } },
"ticket_limit": 500
}'Un gasto que pasa un tope de la política no se rechaza: se marca (over_policy) para quien aprueba. Los topes de la ley se aplican siempre, a la deducción.
Tickets de compra
Guarde la foto de un ticket que el emisor pagó sin factura, con la tienda, su RFC y el total, y pida la factura o márquelo como no deducible.
Contabilidad
Las pólizas, la balanza de comprobación, los estados financieros, el catálogo de cuentas, la contabilidad electrónica para el SAT y la DIOT de cada emisor, armadas de sus CFDI.