Correcciones
- api: Las facturas con retenciones (por ejemplo honorarios o arrendamiento con ISR e IVA retenidos) ya se pueden timbrar. El nodo de retenciones del comprobante ya no lleva
Base, que el SAT no admite ahí; la base sigue en la retención de cada concepto.
Novedades
@timbrix/cli v1.12.0 · @timbrix/mcp v0.8.2 · @timbrix/sdk v2.11.0 · api v1.22.0 · docs v1.15.4 · web v1.17.0
Novedades y mejoras
- @timbrix/cli, @timbrix/sdk, api, docs, web: Complemento de pago (CFDI tipo P) para facturas PPD:
POST /invoices/paymentsregistra el pago de 1 a 50 facturas PPD del mismo cliente y moneda, y timbra un complemento de pago 2.0. Timbrix calcula la parcialidad, los saldos y los impuestos proporcionales; solo se manda\{ invoiceUuid, amount \}por factura.GET /invoices/:uuid/paymentsmuestra las parcialidades y el saldo. Las facturas ahora traenpaymentMethody, si son PPD,balance;GET /invoices?type=Plista los complementos. Cada complemento cuenta como un CFDI del plan, se cancela de forma directa, y una factura con complementos vigentes ya no se puede cancelar hasta cancelarlos. El PDF del complemento muestra el pago y la tabla de facturas. Nuevo webhookinvoice.payment_received. En la web, “Registrar pago” en el menú de las facturas PPD con saldo, el saldo pendiente en el listado y el filtro “Complemento de pago”. SDK:invoices.registerPaymenteinvoices.getPayments. CLI:timbrix invoices payytimbrix invoices payments.
NovedadesCorrecciones
@timbrix/cli v1.11.1 · @timbrix/mcp v0.8.1 · @timbrix/sdk v2.10.0 · api v1.21.0 · docs v1.15.3 · web v1.16.3
Novedades y mejoras
- @timbrix/cli, @timbrix/sdk, api, docs, web: Rate limit por plan: las requests con API key se limitan por organización según el plan (Starter 30, Pro 120, Business 300, Enterprise 600 por minuto). Al pasarse, la API responde
429conRetry-Aftery\{ "error": "rate_limit_exceeded", "retry_after_seconds": N \}; cada respuesta traeX-RateLimit-Limit,X-RateLimit-RemainingyX-RateLimit-Reset. ElrateLimitPerMinuteyrateLimitPerHourde una llave ahora son opcionales y se aplican solo para bajar el límite del plan: sin valor (onullal actualizar), la llave usa el límite de su plan y lo sigue al cambiar de plan. Los límites guardados en las llaves existentes se limpiaron para que usen el límite de su plan, y el dashboard ya no los llena con valores por defecto. En el SDK,ApiKey.rateLimitPerMinuteyrateLimitPerHourahora pueden sernull(null = límite del plan). Nuevo webhookrate_limit.exceeded, y un email al owner, como máximo una vez por hora. Las requests desde el dashboard no cuentan.
- api, docs: API keys: crear, actualizar y borrar llaves con
/organizations/:organizationId/api-keysahora exige rol owner o admin, igual que en la web; un miembro recibe403. Cada scope se valida contra la lista de scopes disponibles: uno desconocido recibe400. Ya se puede crear una llave con todos los scopes; antes se rechazaban más de 12. - api: El límite por IP de 600 solicitudes por minuto para requests con API key ahora aplica solo en las rutas que aceptan API key. En las demás, como el inicio de sesión, un header con forma de API key ya no sube el límite: siguen en 100 por minuto por IP.
Novedades y mejoras
- @timbrix/cli, @timbrix/sdk: Request log de la API: cada respuesta trae el header
X-Request-Id, y las requests hechas con tus API keys (incluidos los rechazos de una llave revocada, vencida, sin permiso o desde una IP no permitida) se pueden consultar durante 30 días. El SDK agregarequestLogs.list()yrequestLogs.get(), y la CLI los comandostimbrix logs listytimbrix logs get. Nuevo scope de API keyread:request-logs. El tipoApiKeyScopedel SDK agrega ademásread:customers,write:customers,read:productsywrite:products, que la API ya aceptaba. - @timbrix/cli, @timbrix/mcp, @timbrix/sdk: Registro del canal de origen de cada CFDI: el SDK envía
X-Timbrix-Client(opciónclient, por defectosdk), el servidor MCP se identifica comomcpy la CLI comocli. Nuevos camposchannelen facturas, filtrochanneleninvoices.list()ycfdiByChannelThisMontheninvoices.usage(). Los tiposInvoice,InvoiceListItemyCfdiUsageagregan esos campos como requeridos; si construyes estos objetos en tus mocks, agrégalos. Corrige además que el SDK perdía los headers por defecto en invoices, customers y products cuando no se pasabaorganizationId.
Novedades
@timbrix/cli v1.10.2 · @timbrix/mcp v0.7.3 · @timbrix/sdk v2.8.2 · api v1.20.0 · docs v1.15.2 · web v1.16.2
Novedades y mejoras
- @timbrix/cli, @timbrix/sdk, api, docs, web: Cancelaciones: se registran antes de enviarlas al PAC y se concilian si no se pudo confirmar el resultado (
cancellationStatus: "en_proceso", errorPAC_CANCEL_UNCONFIRMED). Un rechazo del SAT ya no marca la factura como cancelada (PAC_CANCEL_REJECTED).
NovedadesCorrecciones
@timbrix/cli v1.10.1 · @timbrix/mcp v0.7.2 · @timbrix/sdk v2.8.1 · api v1.19.0 · docs v1.15.1 · web v1.16.1
Novedades y mejoras
- api: conciliación automática de timbrados no confirmados; nuevo error
PAC_STAMP_PENDING - web: cada factura emitida desde el panel lleva su propia
idempotencyKeyy un mensaje claro mientras se confirma el timbrado
- api: si el CFDI se timbró pero no se pudo guardar, ya no se responde 201 con una factura inexistente
- sdk: código de error
PAC_STAMP_PENDING - docs: comportamiento de
PAC_STAMP_UNCONFIRMEDy de los reintentos conidempotencyKey
Novedades y mejoras
- web: re-aceptar el Aviso de Privacidad y los Términos también con una organización ya creada
- api,web: invitaciones de punta a punta. Invitar ya no falla al revisar el límite de miembros del plan; el invitado puede aceptar (desde el enlace del correo o el onboarding) y rechazar; se respeta el límite de miembros al aceptar y un doble clic no duplica la membresía
- api: índices compuestos para el listado de facturas, el conteo de consumo y los reintentos de webhooks; una persona ya no puede quedar dos veces en la misma organización
- landing,web: Aviso de Privacidad y Términos vigentes, con el responsable como persona física
- api: la conexión con el PAC exige HTTPS; se documentan las URLs nuevas
NovedadesMejoras internas
@timbrix/cli v1.10.0 · @timbrix/mcp v0.7.1 · @timbrix/sdk v2.8.0 · api v1.18.0 · docs v1.15.0 · web v1.15.0
Novedades y mejoras
- api,sdk,cli:
statusenPOST /invoicesyGET /invoices/:uuid(yInvoice.statusdel SDK) ahora es el estado fiscal real,vigenteocancelado(antes siempre"valid", incluso para CFDI cancelados), con los nuevos camposcancellationStatusycancellationDesynced. Si tu integración compara contra"valid", cámbiala a"vigente" - web: estado real en InvoiceResult y no sustituir un CFDI cancelado
- cli: mostrar el estado real y la cancelación en invoices get
- sdk: tipar el estado real del CFDI en Invoice
- api: devolver el estado fiscal real en POST y GET /invoices
- api: extraer la regla de estado de cancelación a un helper de dominio
- @timbrix/cli: Updated dependencies [9720bda]
- @timbrix/cli: @timbrix/sdk@2.8.0
NovedadesCorrecciones
@timbrix/cli v1.9.0 · @timbrix/mcp v0.7.0 · @timbrix/sdk v2.7.0 · api v1.17.0 · docs v1.14.0 · web v1.14.0
Novedades y mejoras
- sdk,cli,mcp,docs: relatedCfdis y flujo de sustitución
- web: flujo Sustituir factura y cancelación por sustitución
- api: exponer relatedCfdis y substitutedBy en lista y detalle
- api: validar relación 04 y fecha del sustituto antes de cancelar con motivo 01
- api: emitir CFDI sustituto con TipoRelacion 04
- api: contrato relatedCfdis y reglas de sustitución en el resolver
- api: tabla invoice_related_cfdis y lectura de relaciones
- api: rechazar sustituta con cancelación en proceso
- api: presentar 04 solo en I/T como límite de Timbrix, no regla del SAT
- api: normalizar fechas en la pre-validación 208 y UUID de Egreso en mayúsculas
- api: enviar UUID y folio de sustitución en mayúsculas al cancelar
- api: prepared statements off con pooler y verificar persistencia
- api: success:false del PAC es respuesta explícita, no timbrado ambiguo
- api: no reintentar timbrados ambiguos y tolerar salida del SDK antes del JSON
- api: CfdisRelacionados como arreglo de nodos para el SDK CFDI 4.0
- api: normalizar UUID fiscal a minúsculas en lectura y escritura
- api: comparación de UUID fiscal sin distinguir mayúsculas
- web: cerrar huecos del flujo de sustitución
- api: endurecer sustitución y cancelación motivo 01
- web: aviso neutral al cancelar la original desde el diálogo de éxito
- @timbrix/cli: Updated dependencies [1e70830]
- @timbrix/cli: @timbrix/sdk@2.7.0
- @timbrix/mcp: Updated dependencies [1e70830]
- @timbrix/mcp: @timbrix/sdk@2.7.0
NovedadesCorrecciones
@timbrix/cli v1.8.0 · @timbrix/mcp v0.6.2 · @timbrix/sdk v2.6.0 · api v1.16.0 · docs v1.13.0 · web v1.13.0
Novedades y mejoras
- sdk,cli,docs: eventos de webhook trial.*
- web: notificar conversión de trial al API y eventos trial.* en la UI
- api: webhooks trial.* y TriggerTrialWebhooksHandler
- api: endpoint interno para reportar conversión de trial
- api: MarkTrialConvertedCommand con claim idempotente
- api: el cron del trial publica trial.ending_soon y trial.expired
- api: eventos de dominio del trial y regla de trial.ending_soon
- api: columnas y claims para webhooks del trial
- sdk: uploadCertificates/deleteCertificates en organizations
- api,web: enum de Swagger y endurecimiento de la notificación de conversión
- @timbrix/cli: Updated dependencies [79ac932]
- @timbrix/cli: Updated dependencies [9a67516]
- @timbrix/cli: @timbrix/sdk@2.6.0
Correcciones
@timbrix/cli v1.7.1 · @timbrix/mcp v0.6.1 · @timbrix/sdk v2.5.1 · api v1.15.1 · docs v1.12.1 · web v1.12.1
Correcciones
- @timbrix/mcp, @timbrix/sdk, api, docs, web: Facturar con
productIdrespetataxIncluded,taxabilityylocalTaxesdel producto: el servidor calcula valor unitario e importe (IVA incluido desglosado, solo IVA a tasa),amountpasa a ser opcional conproductId(tolerancia de $0.01), se valida la congruenciaObjetoImp/impuestos en cada concepto y al guardar productos, y los impuestos locales se rechazan hasta soportar el complemento implocal.
NovedadesCorreccionesMejoras internas
@repo/ui v0.3.0 · @timbrix/cli v1.7.0 · @timbrix/mcp v0.6.0 · @timbrix/sdk v2.5.0 · api v1.15.0 · docs v1.12.0 · web v1.12.0
Novedades y mejoras
- monorepo: live production-readiness gate + sandbox dashboard upgrades
- mcp: add dateFrom/dateTo/rfcReceptor filters to timbrix_listar_cfdi
- cli: eventos de webhook certificate.*
- sdk: eventos de webhook certificate.*
- web: eventos de webhook de CSD en el diálogo de creación
- api: webhooks certificate.* y TriggerCertificateWebhooksHandler
- api: cron diario de vencimiento de CSD
- api: eventos de dominio de CSD publicados al subir/eliminar
- api: consulta y claim de alertas de vencimiento de CSD
- api: resolver puro de umbral de vencimiento de CSD
- api: columna expiry_alert_threshold_sent en organization_certificate
- @timbrix/mcp: ## Bug Fixes
- api,web: detect and flag sustained abusive CFDI usage
- web: Updated dependencies [fa17694]
- web: @repo/ui@0.3.0
- web: sandbox dashboard Quick Start examples 400 on copy-paste
- api: treat a CSD with no expiration date as not valid
- web: show ivaIncomplete warning on the Retenciones card too
- web: validate reports page searchParams with Zod
- web: stream report exports instead of base64 data: URLs
- sdk: explicit undefined guard for report/export searchParams
- api: dedicated throttle on the fiscal report PDF export endpoint
- api: publicar certificate.deleted antes de pasos secundarios
- api: extraer WebhookDispatcher del trigger de facturas
- @timbrix/cli: Updated dependencies [fa17694]
- @timbrix/cli: Updated dependencies [27f54d4]
- @timbrix/cli: @timbrix/sdk@2.5.0
Novedades y mejoras
- @timbrix/mcp: todas las herramientas declaran si son de solo lectura o destructivas (
readOnlyHint/destructiveHint), para que el cliente MCP pida confirmación antes de timbrar o cancelar. - @timbrix/mcp:
server.jsonpara publicar el servidor en el registro oficial de MCP.
Novedades y mejoras
- api: nuevo evento de webhook
invoice.cancellation_pending, que se emite cuando una cancelación queda en espera de que el receptor la acepte. - api: la referencia de la API en la documentación se genera directamente de la especificación OpenAPI de producción, así que siempre refleja los endpoints vigentes.
- web: Aviso de Privacidad (LFPDPPP) publicado, aceptación explícita al registrarse y formulario para ejercer derechos ARCO.
Correcciones
- api: el nodo de impuestos globales se envía con el formato correcto al timbrar.
- web: los enlaces a documentación, soporte y correo apuntan a timbrix.mx.
Novedades y mejoras
- web: onboarding guiado según tu perfil (desarrollador, pyme o agentes de IA), con los pasos que aplican a cada caso.
- @timbrix/mcp: confirmación obligatoria (
requiere_confirmacion) antes de timbrar CFDI de alto valor desde un agente de IA. - web: correos de acompañamiento durante el trial en los días 3, 10 y 14.
- api: los errores del sandbox (por ejemplo, CFDI40102) muestran la causa real en lugar de un error genérico.
Novedades y mejoras
- api: webhooks para eventos de timbrado, cancelación y errores, con reintentos automáticos.
- @timbrix/sdk: errores tipados, pruebas y documentación completa para la v1 del SDK de JavaScript/TypeScript.
- api: las exportaciones CSV de reportes fiscales neutralizan fórmulas, para evitar inyección al abrirlas en Excel.
Novedades y mejoras
- Reportes fiscales básicos y listado de CFDI con totales por periodo, disponibles en la web, la API, el SDK y el CLI.
Novedades y mejoras
- Alertas al llegar al 70%, 90% y 95% de los CFDI incluidos en tu plan, con el costo proyectado de excedentes.
Novedades y mejoras
- Programa de referidos para contadores y despachos contables.
Cambios importantes
- api: facturas, clientes y productos tienen una sola ruta por acción, sin
organizationIden la URL. Con una API key, la organización se resuelve desde la llave. Con sesión de usuario, se envía en el headerX-Organization-Id. - @timbrix/sdk:
organizationIdpasa a ser el último parámetro, y es opcional, eninvoices,customersyproducts. Si hoy lo pasas como primer argumento, muévelo al final u omítelo si usas una API key.
- api: envío del CFDI (XML y PDF) por correo electrónico al receptor.
Novedades y mejoras
- @timbrix/mcp: primera versión del MCP Server, para timbrar, listar y cancelar CFDI y consultar tu saldo desde Claude, Cursor u otro cliente MCP.
- api: especificación OpenAPI pública en
/api/openapi.jsony/api/openapi.yaml.
Novedades y mejoras
- Sandbox para desarrolladores con PAC de pruebas: timbra sin costo y sin validez fiscal mientras integras.
- api: vista previa del PDF de un CFDI antes de timbrarlo.
- api: los CFDI timbrados con retenciones globales se leen correctamente.
Novedades y mejoras
- Suscripciones con Stripe: planes Starter, Pro y Business, con límite de CFDI y de peticiones a la API según el plan.
- Descarga individual del XML y el PDF de cada comprobante.
- Se corrigió un cobro duplicado en la suscripción.
- El PDF del CFDI incluye el logo y el color de marca de tu organización.
- El trial de 14 días bloquea la emisión al vencer y envía sus recordatorios a tiempo.
Novedades y mejoras
- Generación del PDF (representación impresa) de cada CFDI timbrado.
Novedades y mejoras
- Cancelación de CFDI ante el SAT con los cuatro motivos oficiales, y sustitución vinculando el CFDI nuevo al cancelado por UUID.
- CFDI a RFC genéricos (público en general): el domicilio fiscal del receptor coincide con el lugar de expedición, como exige la regla CFDI40149.
Novedades y mejoras
- Emisión de CFDI 4.0 tipo Egreso (notas de crédito) y Traslado, en la web, la API, el SDK y el CLI.
- Validación de que el certificado (.cer) y la llave privada (.key) del CSD corresponden entre sí antes de subirlos.
Novedades y mejoras
- Emisión, timbrado y listado de CFDI 4.0 tipo Ingreso.
- Catálogo SAT de productos y unidades con autocompletado e importación de productos por CSV.
- Seguridad: cada petición con sesión de usuario verifica que perteneces a la organización a la que accede.
Novedades y mejoras
- Validación de RFC, uso de CFDI y régimen fiscal del receptor antes de timbrar, para detectar errores antes de enviarlos al SAT.