TicketBAI XML builder (chained + first-in-chain variants) per Bizkaia LROE schema
Changelog
Vi leverer rigtige funktioner hver uge.
April 2026
XAdES-BES digital signature using BYOC cert (PEM, AES-256-GCM encrypted in Firestore)
TBAI hash chain: SHA-256 of emisor+serie+numero+fecha+importe+prevHash per invoice
QR code from real BATUZ tbaiIdentifier — no fabricated fallbacks
SOAP submission to Bizkaia BATUZ (sandbox + production) with error surface and typed error classes
Fetch previous invoice serie+numero+fecha from Firestore for EncadenamientoFacturaAnterior — real values only, rejects missing/incomplete chain
Strict validation: BATUZ must return CSV + IdentificadorTBAI — throws TicketBaiResponseInvalidError on missing to prevent fake compliance data
BYOC: user uploads own cert via Settings > Integrations > TicketBAI. Stored encrypted in Firestore.
Closed fiscal year enforcement on GL writes. Prevents retroactive edits to invoices, expenses, and journal entries when the fiscal year has been closed via Year-End Closing.
assertPeriodOpen() called on invoice create/edit/delete — throws PeriodClosedError when year is closed
assertPeriodOpen() called on expense create/edit/delete lifecycle events
assertPeriodOpen() called on manual journal entry writes
Per-user fiscalYearStart (MM-DD) auto-fetched from users/{uid}/settings/fiscalProfile. Cached in-process, invalidated on settings change
InvalidPeriodDateError thrown on malformed isoDate or fiscalYearStart — prevents NaN-derived fiscal year IDs silently passing the guard
_skipGuard flag for year-end closing process itself to write closing entries without triggering the guard
Non-calendar fiscal years: UK Apr-Mar (04-01), AU Jul-Jun (07-01), India Apr-Mar. deriveFiscalYear() handles all cases correctly
Voice input/output layer for the AI Copilot. Whisper transcription (Groq Layer 1 fallback) + TTS Cloud Function + voiceService client. Default OFF behind feature flag.
Whisper speech-to-text via Groq API as fallback transcription layer in Chatbot.tsx. 14 trust tests covering transcription pipeline
TTS Cloud Function (europe-west1) exposing text-to-speech synthesis for AI responses. 13 trust tests
voiceService.speak() client-side wrapper consuming TTS CF and managing audio playback
voice.enabled feature flag — default OFF, progressive rollout via PostHog
@frihet/agent-loop package with run/pause/stop lifecycle, tool dispatch, and structured agent state machine
MCP unified tool registry (invokeToolInternal) normalising Cloud Function + Gemini function tools under a single dispatch interface
In-app notifications on agent run completion/failure via Firestore realtime listener
/agent route with run history, status, and manual trigger UI
Proactive uptime and API health monitoring via heartbeat Cloud Function with append-only event log and hourly rollup.
Scheduled Cloud Function pinging critical API endpoints every 5 minutes with AbortController 5s timeout
Append-only Firestore event log for heartbeat results — no update/delete, full audit trail
Hourly aggregation job computing uptime % and p95 latency per endpoint
Automated lifecycle drip email system with 11 ES/EN templates and dispatcher Cloud Function. Default OFF behind flag.
11 lifecycle templates in ES+EN: welcome series, activation nudges, feature discovery, win-back. 74 trust tests
Cloud Function dispatcher triggered on user lifecycle events, selecting and scheduling the correct template
lifecycle.drip.enabled flag — default OFF, enables via PostHog rollout
Conversion funnel instrumentation with PostHog events, Sentry alerts, and admin metrics summary CF.
5 funnel events: signup_started, invoice_created, payment_received, trial_started, plan_upgraded — wired to PostHog capture
Sentry issue alerts on funnel drop-off anomalies (conversion rate below threshold)
metricsAdminSummary Cloud Function aggregating MRR, trial conversion, daily signups for internal admin view
Welcome wizard UX polish with voice CTA badge, compliance card, and Cofundador Frihet hint.
Voice input CTA badge in welcome wizard step 2 — promotes voice features to new users
Compliance status card in welcome wizard showing TicketBAI / VeriFactu setup status
Cofundador Frihet contextual hint in welcome wizard directing users to AI copilot waitlist
/cofundador-ia page with manifesto, features, waitlist form — 17 languages × all locales
Waitlist endpoint: Firestore write + Resend confirmation email on join
Cofundador IA pricing card on /pricing page for early access tier
Programmatic SEO /vs/{competitor} pages — 7 competitors × 17 languages = 119 crawlable comparison pages targeting high-intent search terms.
119 /vs/{competitor} pages (7 competitors: holded, sage, quipu, contasimple, anfix, billin, txerpa) × 17 langs. SSG, hreflang, JSON-LD
Partner program landing page at /partners with 4-track grid: Gestorías, Developers, Agencies, Consultants. Partner form Vercel Function.
/partners page with 4-track grid, partner application form, 17 langs
Public /numbers page (Levels.io tier) with live business metrics: MRR, ARR, users, growth. 17 langs.
/numbers public Levels.io-style metrics page with live KPIs from metricsAdminSummary CF. 17 langs
Phase 8 UX systemic improvements: cmdk palette, dashboard hero (Gemini), split-view invoices, presence avatar stack, motion-reduced-motion.
Global Meta+K command palette (cmdk-systemic) with fuzzy search across all entities and actions
Dashboard hero section with Gemini-powered daily briefing card and smart action suggestions
Split-view invoice list with keyboard navigation (j/k/Enter/Escape) and PDF preview panel
Real-time presence avatar stack in header showing online team members
prefers-reduced-motion CSS media query respected across all animations
Developer tooling: Gemini-proof automated gate catching 4/8 Trust Area anti-patterns before push. Integrated in gate.sh stage 2.
scripts/gate-gemini-proof.sh — diff-aware grep for fabricated identifiers, DOM .toString(), NaN-silent date parsing, void dead code
docs/dev/gemini-proof-catalog.md — 8-pattern catalog with adversarial self-review protocol
gate:gemini-proof npm script wired into gate.sh stage 2 — runs automatically on Trust Area changes pre-push
Free tier for Stay (1 property, 3 reservations/mo soft cap) and POS (1 terminal, 100 transactions/mo soft cap) — funnel top vs Hospitable/Square/Loyverse free tiers. No Stripe subscription required; soft caps enforced server-side. Activates via activateAppFreeTier Cloud Function (europe-west1). Writes activeApps/{slug} = { tier: 'free', status: 'active' }
Stay Scale tier: €79/mo flat for 40 properties included (vs €19 Pro with 5 included + €2/extra). Captures revenue lost on power-user hosts (20+ properties) where Pro overage stacks unfavourably vs flat Scale price. Stripe price tagged with metadata.frihet_apps_tier='scale' to coexist with Pro price on same product. createAppCheckoutSession admits tier='scale' param
Automated dunning with payment retry state machine: 4-step schedule (3/5/7/14 days), template blocking after 3 failures, auto-cancel after 30 days. Wired to Stripe Connect webhooks for automatic recovery.
Accept payments from clients via Stripe Connect. Checkout sessions with 1.5% platform fee. Payment failure triggers dunning state machine.
Interactive analytics charts powered by Tremor 3.x — revenue trends, expense breakdown, cash flow, category analysis
Team members can read activeApps status. Firestore rules enforce read-only for non-owners.
OCR processing routed through Cloud Function proxy (europe-west1). API key never exposed to browser.
Stay i18n namespace fully wired into runtime: dedicated lazy chunk per language, KEY_NS trigger for on-demand load, shim auto-prefixes calls so migrated components resolve via stay.* without rewriting. Closes the latent gap that blocked real Stay activation end-to-end (Wave 2 shipped translations but never registered the namespace)
POS vertical migrated from standalone (React 19 + Tailwind v4 + @base-ui/react) into modules/pos/ aligned with ERP stack (React 18 + Tailwind v3 + Radix/shadcn + Firebase). Pages: Dashboard, Sales (cart + checkout), Products, Terminals, CashSessions. 4 Firestore collections (fs_pos_products/sales/terminals/cashSessions) with posIsActive entitlement gate, allowedKeys allowlist, CAS versioning, client-delete forbidden. Lazy bundle chunk via React.lazy + lazyWithRetry. Manifest exports €25/terminal pricing + 30-day trial + Pro+ tier gate
Manifest contract tests (lock pricing + tier + trial), adapter round-trip tests (cents ↔ euros lossless), Firestore rules tests (entitlement gate, allowedKeys guard, CAS versioning, cross-user isolation)
Frihet Apps Stripe TEST products created end-to-end: Frihet Stay (€19/mo base + €2/property graduated tiered, 5 incl), Frihet POS (€25/terminal/mo licensed), Hospitality Suite bundle (€59/mo flat, 19% off à la carte). Trial activation flow now testable end-to-end. Live products pending closed beta validation.
3 Frihet Apps feature flags live in PostHog dashboard: apps_enabled (master kill switch, on), stay_activation_enabled (on), pos_activation_enabled (off until first paying terminal). Workspace grouping wired via setPosthogWorkspaceGroup(). Code consumes flags with fail-open fallback to Firestore activeApps state.
Sentry releases now auto-link to git commits via release.setCommits.auto in sentryVitePlugin. Issues show first-seen commit, author attribution, and PR origin. Combined with existing sourcemap upload + VERCEL_GIT_COMMIT_SHA release naming, every Vercel deploy ships a fully-linked release ready for triage in Sentry.
Stay + POS Frihet Apps fully activatable from Settings > Apps with 14/30-day trials. Live Stripe products + prices bootstrapped (prod_UK8CGNm0jN2y0S Stay €19, prod_UK8CZArXM9Yypx POS €25). Webhook routes app subscriptions to users/{uid}/activeApps/{slug} without touching base plan fields — zero risk to Pro/Business subscriptions. 7-day grace window on payment failure.
Compact partner program stats card on gestoria dashboard with live referral metrics (invited, signed up, activated, paid, rewards earned) and direct link to the full referral panel
Automatic email notification to clients when a gestor creates a new document request — sent via Resend with gestor name, title, description, and deep link to the client dashboard
Client portal conversion CTA now attributes sign-ups to the gestor's personal referral code (30% recurring partner commission) instead of a generic marker
Stay domain migrated into modules/stay/ (Wave 2, 22,278 LOC, 109 files). 8 Firestore collections (fs_properties, fs_reservations, fs_expenses, fs_cleaning_tasks, fs_settlements, fs_compliance, fs_conversations, fs_stats) behind server-side entitlement gate. Composite indexes + modular firestore.rules.d/* fragments
126 Firestore rules tests × 7 Stay collections via @firebase/rules-unit-testing. Entitlement state machine verified (inactive/trial/active/grace). 0 rules bugs found in coverage sweep
4 GDPR Cloud Functions: hardDelete (90-day grace purge), piiScrub (name/email/phone redaction), export (right-to-access zip), erase (right-to-be-forgotten chain). 6-year fiscal retention enforced. Stay EU-ready
stay.* namespace translated across all 17 app locales — 258 keys × 15 secondary languages = 3,870 translations via Gemini 2.5 Flash with Translation Memory (97.8% coverage). pos.* (91 keys ES+EN) follows same pattern
Activation dashboard at Settings > Apps with per-app state (inactive/trial/active/grace), upgrade gating, and managed billing
Side-effect module registry (modules/*) with lazy-loaded verticals, manifest system, and runtime state hooks
Metered app pricing with included units, trial windows, Pro+ gating, and Business tier included-app discount
PostHog-powered runtime flags for global kill switch (apps_enabled) and per-app release gating (stay_activation_enabled, pos_activation_enabled). Workspace-level segmentation via posthog.group('workspace', uid, {plan, appsActive, createdAt}). Fail-open fallback to Firestore activeApps state when flags undefined
AEAT BOE fixed-width TXT files for M303, M130, M111, M115. Official format for Sede Electronica filing. Declarative engine with field specs per model.
Batch generate M303, M130, M111, M115 in PDF or TXT AEAT format for multiple clients as ZIP
Consolidated fiscal obligations heatmap showing all clients x quarters x models with status indicators
Download PDF, TXT AEAT, or accounting exports for any client directly from the dashboard card without switching workspace
In-app document request system between accountant and clients with priority, due dates, and status tracking
AI-powered tax model validation (rule-based + Gemini) that checks for errors before generating AEAT TXT files
Persistent filing queue with review and approval workflow for batch-generated tax models
Client portal tab showing document requests with urgency banner, overdue detection, badge count, and activity logging
Token-based file upload in client portal allowing clients to fulfill document requests directly (7MB max, auto-completes request)
Conversion CTA in client portal encouraging clients to sign up for Frihet with UTM-tracked referral links and partner attribution
Visual risk indicator (healthy/attention/critical) on each client workspace card derived from client health scoring (0-100, weighted by revenue)
Real fiscal deadline from tax calendar with color-coded urgency (red ≤7d, amber ≤15d) on workspace cards
AI-free deterministic client health scoring (payment, volume, engagement, loyalty) with churn prediction, trend analysis, and actionable recommendations per client
Accounts receivable aging summary (30/60/90+ days) inline on workspace cards with overdue amount highlighting
One-click WhatsApp message for document requests with pre-written text and portal link
Client cards automatically sorted by risk level — critical clients that need attention appear first
Grouped sidebar navigation for Reports (7 views) and Settings (10 views) with collapsible sub-menus
5-phase design system rebuild: design tokens, 44px touch targets, focus-visible, dark mode, animations, icon consolidation. shadcn/ui + Tailwind foundation
3,019 automated tests. Lighthouse CI, axe-core a11y, bundle budgets, knip dead code detection. CI coverage ratchet
AEAT sandbox (prewww1.aeat.es) verified — SOAP/mTLS accepted with CSV response
Facturae 3.2.2 XML generation for Spanish B2G invoicing (FACe). XAdES-EPES signing via Cloud Function. Supports persona física/jurídica, IRPF, rectificativas, DIR3 administrative centres.
Marts 2026
Bulk invoice actions: send, remind, mark paid, delete drafts. Smart scheduling with optimal send time hints
Auto-decrement product stock on invoice publish, restore on cancel. Low stock alerts and badges in product list
Automatic late fee calculation with configurable method (percentage, fixed, legal rate), grace period, compound interest, and cap. Settings page + InvoiceRow action + API POST /v1/invoices/:id/late-fee
Client deposits with apply-to-invoice flow in InvoiceForm. DepositList page + API endpoint
Mark expenses as billable, add to invoices from InvoiceForm. ExpenseList 'Mark billable' action
Extended Trial Balance with Opening/Period/Closing Dr/Cr columns
Configurable fiscal year start (MM-DD). Supports UK, AU, India cycles
Horizontal period columns for P&L and BS: Monthly/Quarterly/Half-yearly/Yearly
5-state bank transaction machine: raw/recognized/matched/categorized/excluded
Tree-expandable hierarchical P&L and Balance Sheet with parent rollup
Previous period + previous year inline comparison with delta amounts and %
GL grouped by account/party/reference/none with running balance per group
Comparative Reports tab: side-by-side period comparison for P&L and BS
Fixed Assets tracking and depreciation in Accounting Reports
FX Exposure tab: open items in foreign currencies, live rates, unrealized P&L
Client Statement tab in ClientDetailPage: all transactions with PDF export
Bad debt write-off and IRPF withholding support in GL payment entries
3 HR AI tools: getTeamDirectory, getAttendanceSummary, getLeaveOverview
Cmd+K command palette with Orama full-text search across invoices, quotes, expenses, contacts, products. Weighted boosting, fuzzy matching, race condition guards
App shell precache 20MB to 738KB. Heavy chunks load on demand
Home screen shortcuts: New Invoice, New Expense, Dashboard, Contacts
Receive shared photos/PDFs directly into expense OCR flow
Custom email template editor in Settings with preview. Supports invoice, quote, reminder templates
EN16931 e-invoicing with Factur-X, XRechnung, UBL generation via @e-invoice-eu/core. XML download in InvoiceRow, API endpoint GET /v1/invoices/:id/xml, MCP tool #54.
Download e-invoice XML directly from invoice actions menu
GET /v1/invoices/:id/xml returns EN16931 compliant e-invoice
4 SEO landing pages × 17 languages (68 pages): Peppol Belgium, KSeF Poland, France PPF/PDP, EU overview. Native FR/PL/NL/ES/EN translations.
HR module: employee directory, time tracking (Art. 34+35 ET), leave management, WhosIn presence dashboard
Employee profiles with CRUD, role, department, work mode, feature-gated access
Clock in/out with breaks, geo-location, real-time Firestore sync. Cloud Function autoClose at midnight
Art. 34+35 ET compliance (daily 9h, weekly 40h, annual 80h caps). ITSS-ready SHA-256 audit trail
Leave calendar, holidays engine (per-country), approval workflow
Real-time presence card on dashboard (working/break/remote/leave/offline)
3 AI tools: getTeamDirectory, getAttendanceSummary, getLeaveOverview
CRM Kanban: 6-stage pipeline (lead/contacted/proposal/active/inactive/lost) with drag-drop
AI tool: business health alerts — overdue invoices, goal tracking, fiscal deadlines, cash flow
AI tool: create purchase orders for vendors by natural language
AI tool: generate any of 39+ financial reports by natural language
TOTP-based 2FA via Firebase Identity Platform MFA. Enrollment in SecuritySettings (QR code + manual key). MFAChallenge dialog on login
Searchable audit trail UI with entity filters, date range, pagination, CSV export
Coupon and promo code validation on invoices — percentage or fixed discount with optional expiry and usage limits.
SEPA EPC QR code generation on European invoices for instant bank transfer via mobile banking apps.
E-invoicing service supporting Factur-X (FR/DE), XRechnung (DE), UBL 2.1 (EU), and CII (UN/CEFACT). Structured XML embedded in PDF.
Public invoice URL at /p/:hash — clients access their invoice without login for viewing, downloading PDF, and paying via Stripe.
Client health scoring with payment history, overdue ratio, and churn risk indicators
Quarterly IRPF withholdings: trabajo personal and actividades profesionales
Quarterly rent withholdings on business premises
Annual third-party operations report for transactions >3,005.06 EUR
Quarterly intra-EU operations (reverse charge). EC sales list
Annual VAT summary — aggregates all 4 quarterly Modelo 303 submissions
Auto-categorization rules for bank transactions with 12 presets. Supports amount range, description match, and merchant conditions.
Statistical AI expense auto-categorization using historical patterns. Zero API cost — runs entirely on local data.
Double-entry GL engine with full reporting. /accounting route with 9 tabs: P&L, Balance Sheet, Trial Balance, General Ledger, Aging, Journal Entries, Comparative, Fixed Assets, FX Exposure.
Chart of Accounts management at /accounting/chart — 96 countries, 33K+ predefined accounts. CRUD with account type, code, and currency.
Automatic GL journal entry creation on invoice creation, payment, credit note, and full invoice lifecycle events.
Accounting reports hub at /accounting — navigation to all financial report types.
P&L report with period comparison, revenue/expense breakdown, and net income calculation.
Balance Sheet report with assets, liabilities, and equity sections.
Trial Balance report showing debit/credit totals per account.
General Ledger report with full transaction history per account.
Cash Flow statement with operating, investing, and financing activities.
Accounts receivable and payable aging report with 30/60/90/120+ day buckets.
Withholding tax engine for 11 countries with 99 categories. Auto-calculation on invoice line items with separate WHT journal entries.
Self-service client portal with 5 tabs: dashboard (balance, overdue, recent), invoices (view, download, pay), quotes (view, accept/decline), payments history, and account statement. Accessible without login via secure HMAC link.
Client dashboard with outstanding balance, overdue amount, and recent activity summary.
Client invoice list with status filters, PDF download, and Stripe Checkout payment.
Client quote list with accept/decline actions and PDF download.
Payment history view with amounts, dates, and invoice references.
Account statement PDF export with all transactions in a date range.
One-call structured document extraction using TaxHacker pattern — single Gemini call extracts all fields (vendor, amount, date, tax, line items, currency) with 214 vendor-specific templates that bypass AI for known formats.
Single structured API call to Gemini extracts all invoice/receipt fields. Replaces multi-step OCR pipeline.
3,019 automated tests: GL writers, ERP Intelligence services, people/HR, billing, compliance
195 new financial calculation tests — withholding tax (99 scenarios), bank rules, currency rounding, address formats.
25+ compliance and business intelligence reports with CSV export, date filters, sortable columns
Invoice-by-invoice VAT/IVA breakdown by quarter with CSV export
Aggregated tax liability: sales tax vs purchase tax, net payable
Bulk invoice export with column picker, filters, pagination
All payments: date, client, method, gateway, amount
Full expense table with vendor, category, tax, attachments
Open receivables with aging badges, balance, KPIs
Per-client revenue, paid, outstanding, tax, avg invoice
Per-client AR balance, credits, net owed
Client-bucketed aging: Current/1-30/31-60/61-90/91-120/120+
Open payables by vendor with aging and category
Per-product: units sold, revenue, avg price, top clients
Vendor directory with total spend and expense history
Per-team-member: invoices issued, total, taxes
Line-item level export across all invoices
All quotes with status, conversion rate, amounts
Line items inside quotes
Recurring invoice templates with MRR calculation
CRM directory export with revenue per contact
All credit notes (rectificativas) with reason codes
Synthesized audit log from all entity events
Invoices + payments + expenses chronological by reference
AI-powered cash flow prediction with trend analysis
Expense category trends over time
AR aging report with configurable buckets
Profitability analysis per client
Reactive fiscal engine: getQuickFiscalPreview() on buyer country change, loadFiscalAutopilotData() on InvoiceForm mount. UI hints for reverse charge, e-invoice requirements, SEPA eligibility
SEPA EPC QR code (EPC069-12 v2.0) on invoice PDFs from 33 SEPA countries in EUR. Scan-to-pay with any mobile banking app
Import bank statements: OFX, MT940, CAMT.053, CSV. 15 bank presets, dedup, drag-and-drop.
Plan-based feature gating with useFeatureGate hook. 18 gated feature types across Free/Pro/Business/Enterprise tiers.
Native push notifications (Capacitor + Firebase web). Triggers: Stripe payment received, overdue reminders, team invites
Record a single payment against multiple invoices with automatic allocation, client filtering, and overpayment warnings
Expense approval queue with pending/approved/rejected tabs, bulk approve, and team notifications
Create manual journal entries with debit/credit lines, PGC account selection, and auto-balancing
Year-end closing process: generate closing entries, transfer P&L to retained earnings
Live exchange rates via Frankfurter API (self-hosted). 29 currencies with 1-hour cache and offline fallback
Display pricing in 7 currencies (EUR/USD/GBP/BRL/SEK/NOK/DKK) with auto-detect from language
Full internationalization with 17 languages across ERP, website, and docs. 123 countries with fiscal data
17 languages: ES, EN, PT-BR, FR, DE, IT, SV, NO, DA, FI, NL, TR, PL, RO, EL, HU, JA. ~6,700 keys × 12 namespaces
Automatic language detection from URL prefix, localStorage, cookie, browser navigator.language
Tax profiles for 123 countries with 170+ currencies, 365 fiscal positions, and fiscal calendar data
On-blur tax ID validation for 71 countries, 119 validators (NIF, VAT, TIN, ABN, etc.)
On-blur IBAN validation for 89 country formats with bank code extraction
Country-specific address formatting for 41 countries in PDFs, client list, and vendor list
Automatic tax rate detection based on client country using fiscal profile engine
214 vendor-specific OCR templates that skip Gemini for known invoice formats
Country-specific legal mentions on invoices (28 countries) with fiscal hint banners
365 fiscal position rules across 90 countries with determineFiscalPosition() engine for automatic tax regime selection
Country-specific charts of accounts for 112 countries, split per country JSON files
CLDR locale pickers in WelcomeWizard and Settings for country/currency/date format selection
240K-entry translation memory from 6 OSS ERPs achieving 97.8% coverage for new language additions
214 vendor-specific OCR templates that skip Gemini for known invoice formats (zero AI cost for matched vendors).
Official TypeScript SDK (@frihet/sdk) — resource-based API client with 11 resources, typed errors, auto-retry, dual CJS/ESM
Official CLI (frihet) — invoices, expenses, clients, status from the terminal
Full client detail page with financial stats, pipeline stage, and tabbed interface
Pipeline stages (lead, contacted, proposal, active, inactive, lost) with stage selector
Per-client notes with create, edit, and delete
Contact persons under a client with name, email, phone, and role
Keyboard shortcuts on client detail page (Esc, a, n, p, d, e)
OpenAPI 3.1 spec at GET /openapi.yaml (text/yaml, 1h cache) covering invoices, expenses, deposits, clients, products, quotes, vendors, webhooks, and all action endpoints
GET / returns unauthenticated discovery JSON with name, version, docs, openapi, mcp, and status URLs
Public invoice portal where clients view and pay invoices without login. HMAC-SHA256 secure links, business branding, Stripe Checkout payment.
Invoice emails include a View & Pay button linking to the client invoice portal for 1-click payment
Auto-generate recurring invoices on schedule with customizable frequency
Send payment reminder emails directly from invoice actions menu
Auto-detect invoice numbering gaps with 1-click fix
3-step import wizard: upload with OCR, preview and edit, confirm
1-click invoice duplication with auto-adjusted dates
Mark paid/sent, batch email, CSV export, bulk delete
Auto-generate recurring expenses with customizable frequency (weekly to yearly)
Visual expense breakdown by category with pie chart
Revenue/cost/margin per client with AI analysis
Store client email for direct invoice sending and batch communications
Export client list as CSV for external tools
View recent invoices and quotes per client in a chronological timeline
Active clients, avg revenue/client, retention rate, trends
Record partial payments with audit trail, auto-status tracking
Data-driven action suggestions based on overdue invoices, inactive clients, goals
Donut chart with expense breakdown by category
3-month revenue forecast based on historical data and pending invoices
4-step welcome wizard, guided tour, contextual tips, and completion celebration
Full analytics dashboard with revenue trends, client metrics, funnel analysis, and financial reports
Light, dark, and system theme switcher
Smart form defaults based on user history (AI-powered)
Search across all settings sections
Active sessions view, revoke individual or all sessions, login history with device, browser, and OS
Email, push, and in-app notification channels with invoice reminders, goal alerts, weekly/monthly digest, tax deadline alerts, and quiet hours
Canny integration for in-app user feedback and feature requests
Send invoices by email directly from Frihet with PDF attachment, CC/BCC, custom message
Send emails to multiple clients at once from the client list
14+ automated email types: welcome, followup, digest, win-back, reminders, smart alerts
Developer persona page at /para/desarrolladores with API, webhooks, MCP, and integration docs
Developer section on features page with 4 cards: API REST, Webhooks, MCP Server, Programmatic Integrations
Developer tools and documentation: API, webhooks, MCP server, programmatic integrations
Comprehensive MCP server documentation page on docs.frihet.io
Februar 2026
XML generation + SOAP submission to AEAT with auto-submit and status badges. Sandbox verified (4 apr 2026).
Certificate upload (.pfx/.p12) for AEAT digital signing with AES-256-GCM encryption
Export invoices/expenses in ContaPlus, DATEV, Xero, QuickBooks, and generic CSV formats
Aggregated tax deadline timeline across all client workspaces
Batch generate Modelo 303 for multiple clients as ZIP
Activity notifications when clients create invoices or expenses
Multi-currency support for 123 countries and 170+ currencies with precision-aware rounding and live exchange rates
Locale-aware currency display with correct decimal precision per currency
Precision-aware toMinorUnits/fromMinorUnits for all 170+ currencies
Per-series branding: logo, accent color, trade name, footer
Accountant dashboard viewing multiple client workspaces
Switch between client workspaces from sidebar
Create invoices on behalf of clients with their numbering series
Clients upload documents visible to their accountant
Data-layer guards on CRUD operations based on role permissions
Import data from Google Sheets with column mapping and fuzzy matching
Tax estimates, cash flow projections, overdue alerts
Auto-import Stripe payments as Frihet invoices every 6 hours
Automatic detection of non-Spanish users, country selector, currency-aware UI
Multi-series numbering (FRI-XXX, BRT-XXX)
Full VeriFactu compliance with AEAT XML submission, certificate upload, status badges and PDF indicators
MCP server for AI agents with 62 tools (incl. deposits), 11 resources, 10 prompts. npm + remote (Cloudflare Workers). MIT licensed
Create, edit, send professional invoices with customizable templates
Track expenses with OCR receipt scanning
Centralized product/service catalog with CSV import
Client and vendor management with interaction history
Real-time business KPIs and financial overview
Automatic quarterly tax model calculations
Bank account sync, transaction reconciliation, and intelligent bank rules engine
Gemini-powered AI assistant with 55+ function tools, streaming, OCR, persistent chat, KPI cards
Keyboard-first workflow tools
Multi-user access with role-based permissions and multi-client workspace
Account security and authentication management
Password change form with strength meter
Link and unlink Google, GitHub, Microsoft auth providers
Account lifecycle management, billing, and preferences
Multi-step churn prevention with retention offers (30%, 50% discount, pause, downgrade)
Usage meters, plan comparison, upgrade/downgrade, annual/monthly toggle
Full GDPR-compliant data export as JSON with encrypted backup
Scheduled account deletion with 30-day grace period and cancel
GDPR cookie consent banner with version tracking and granular opt-in
Export data in accountant-compatible formats (CSV, Excel)
Built-in referral system with tracking codes
RESTful API with API key authentication, cursor pagination, field selection, 6 filters. Action endpoints: e-invoice XML, credit notes, late fees, deposits, billable expenses
Create, revoke, and view API keys with expiration dates
94 event types with HMAC-SHA256 verification and retries. Covers invoices, expenses, clients, payments, accounting, bank rules, and more.
Progressive Web App: installable, offline-capable. Precache 20MB to 738KB (97% reduction). Manifest shortcuts, share target for expense OCR
Native email sending via Resend with full lifecycle automation
Transactional emails for invoices, payments, team invites (ES+EN)
Custom logo, colors, invoice footer branding
This page is auto-generated from the product manifest on every build.