Referencia

Referencia de endpoints

Todos los endpoints públicos con su método, scope y descripción, en una sola tabla.

Prefijo común, salvo donde se indique lo contrario:

https://facty.mx/api/authenticated/{orgSlug}

Header en todas: X-API-Key: fk_…

Conexión y capacidades

MétodoRutaScopeDescripción
GET/contextmembresíaIdentidad de la organización, permisos de la llave, perfil fiscal, estado del CSD, series, complementos disponibles y stampingMode. Llámalo al configurar.

Clientes

MétodoRutaScopeDescripción
GET/clientsclients.readListar y buscar (q, limit ≤500, cursor).
POST/clientsclients.createAlta. Admite upsert.
GET/clients/{clientId}clients.readDetalle.
PATCH/clients/{clientId}clients.updateActualización parcial.
GET/clients/{clientId}/ppd-invoicesinvoices.readFacturas PPD con saldo pendiente de ese cliente.

Productos

MétodoRutaScopeDescripción
GET/productsproducts.readListar y buscar (q, limit ≤500, cursor).
POST/productsproducts.createAlta. Admite upsert con tu code.
GET/products/{productId}products.readDetalle.
PATCH/products/{productId}products.updateActualización parcial.

Facturas y CFDI

MétodoRutaScopeDescripción
POST/invoicesinvoices.createTimbrar. type: ingreso, egreso, traslado, nomina.
GET/invoicesinvoices.readListar. Filtros: status, type, clientId, uuid, idempotencyKey, dateFrom, dateTo, limit ≤100, cursor.
GET/invoices/{invoiceId}invoices.readDetalle con conceptos e impuestos.
GET/invoices/{invoiceId}/xmlinvoices.readURL firmada del XML (5 min).
GET/invoices/{invoiceId}/pdfinvoices.readURL firmada del PDF (5 min).
GET/invoices/{invoiceId}/cfdiinvoices.readZIP con XML + PDF (binario).
GET/invoices/{invoiceId}/acuseinvoices.readPDF del acuse de cancelación (binario).
GET/invoices/{invoiceId}/balanceinvoices.readSaldo y complementos aplicados.
GET/invoices/{invoiceId}/sat-statusinvoices.readEstatus en el SAT. Cacheado 30 min; ?force=true consulta de verdad y gasta un folio.
POST/invoices/{invoiceId}/cancelinvoices.cancelCancelar. motivo 0104; 01 exige folioSustitucion.
POST/invoices/{invoiceId}/emailinvoices.sendEnviar XML + PDF por correo.

Pagos y complementos (REP)

MétodoRutaScopeDescripción
POST/paymentspayments.createRegistrar un pago y, con stamp: true, timbrar el REP.
GET/paymentspayments.readListar (limit ≤100, cursor).
GET/payments/{paymentId}payments.readDetalle.
POST/payments/{paymentId}/stamppayments.createTimbrar un pago registrado con stamp: false.
POST/payments/{paymentId}/cancelinvoices.cancelCancelar el REP. Consume un timbre.

Nómina

MétodoRutaScopeDescripción
GET/empleadosinvoices.readListar y buscar (q, limit ≤500, cursor).
POST/empleadosinvoices.createAlta de empleado.
GET/empleados/{empleadoId}invoices.readDetalle.
PATCH/empleados/{empleadoId}invoices.createActualización.
POST/invoices con type: "nomina"invoices.createTimbrar el recibo.

Retenciones

MétodoRutaScopeDescripción
POST/retencionesinvoices.createTimbrar un CFDI de retenciones.
GET/retencionesinvoices.readListar (status, limit ≤100, cursor).
GET/retenciones/{retencionId}invoices.readDetalle.
POST/retenciones/{retencionId}/cancelinvoices.cancelCancelar. Consume un timbre.

Cuentas y movimientos

MétodoRutaScopeDescripción
GET/accountsaccounts.readCuentas bancarias y de efectivo. Filtros: kind (bank/cash), includeArchived.
POST/accountsaccounts.writeAlta de cuenta.
GET/accounts/{accountId}accounts.readDetalle.
PATCH/accounts/{accountId}accounts.writeActualización.
GET/accounts/{accountId}/movementsaccounts.readMovimientos.
GET/accounts/{accountId}/ledgeraccounts.readAuxiliar de la cuenta.
POST/transferstransfers.createTraspaso entre cuentas.

Timbres y facturación

MétodoRutaScopeDescripción
GET/billing/balancebilling.readSaldo actual de timbres.
GET/billing/ledgerbilling.readHistorial de compras, consumos y reembolsos.
GET/api/authenticated/billing/packagesPaquetes de timbres disponibles. Sin organización en la URL.

Reportes

MétodoRutaScopeDescripción
GET/reports/summaryreports.readResumen agregado.
GET/reports/invoices.csvreports.readExportación de facturas en CSV.
GET/reports/monthly-summary.csvreports.readResumen mensual en CSV.

Catálogos del SAT

Sin organización en la URL. Cualquier API key válida sirve.

MétodoRutaDescripción
GET/api/authenticated/catalogs/sat?type=…&q=…Catálogo general. Ver tipos disponibles.
GET/api/authenticated/catalogs/clave-prod-serv?q=…Búsqueda en c_ClaveProdServ. q de 2+ caracteres.
GET/api/authenticated/catalogs/clave-unidad?q=…Búsqueda en c_ClaveUnidad.

Límites

ConceptoValor
Lecturas600 por minuto, por llave
Escrituras60 por minuto, por llave
limit en clientes, productos y empleados500
limit en facturas, pagos y retenciones100
Vigencia de las URLs firmadas5 minutos
Caché del estatus SAT30 minutos
Longitud de idempotencyKey8–128 caracteres

Fuera de esta API

Estas rutas existen pero no aceptan API keys: la administración interna de la plataforma y /api/authenticated/me (una llave autentica a una organización, no a una persona). No las incluimos aquí porque no forman parte de la superficie pública.

Para integraciones con agentes de IA, Facty también expone un servidor MCP con las mismas reglas y los mismos scopes.