Every release, on the record.
What lands in esaFiskaly, when, and why — including the tax-regulation updates that drive the changes.
- v0.12.0May 29, 2026
Session-Based Bank Reconciliation Workflow
- Feature
Bank reconciliation is now session-based per period: start a session (account, period, statement balance), match transactions, flag outstanding items (deposits in transit / outstanding cheques), then close. One open session per account.
- Feature
Decomposed reconciliation summary: Book Balance vs adjusted Statement Balance (+ deposits in transit − outstanding payments) with the residual variance to explain — not just comparing two numbers.
- Feature
Bank adjustment journals posted directly from the reconciliation screen (admin charges, interest). Real journals post through the same journal engine and auto-match — no shadow ledger. Financial statements only change AFTER the adjustment is posted.
- Compliance
Strict completion guard: a session can only close when the variance is zero. A closed session can only be reopened by OWNER/ADMIN with a mandatory reason (full audit trail).
- Compliance
Reconciliation never mutates ledger balances — it only flags cleared journal lines. Tenant isolation via Postgres RLS on the session table. Backward-compatible: the legacy per-line endpoint now auto-attaches ticks to a session.
- Feature
- v0.11.0May 29, 2026
POS Production-Ready + Customer Receivables Workflow
- Tax
POS price mode toggle: 'inclusive' or 'exclusive' of PPN, with a per-tenant default. Subtotal, DPP, PPN, and grand total are server-computed (no client-side tax math) and shown live in the cashier UI via /pos/quote.
- Feature
Per-line and per-transaction discounts (PERCENT or FIXED) that propagate into DPP + PPN. Pinned order of operations: gross → line discount → subtotal → txn discount → DPP → PPN.
- Feature
Hold / Suspend cart — cashier can park an in-progress sale with label + note, resume later, or discard. Audit-grade lifecycle: HELD → RESUMED / DISCARDED.
- Feature
Camera-based barcode/QR scanner (native BarcodeDetector, zero added libraries), with a clear fallback for Firefox + USB-wedge-scanner instructions. Formats: EAN-13/8, Code-128/39, UPC-A/E, ITF, QR.
- Feature
POS receipt printing: 80mm thermal and A4 layouts (which also doubles as the 'Save as PDF' path via the browser print dialog). A4 carries the business header + NPWP, product lines, and full DPP/PPN breakdown.
- Feature
POS credit sale (Piutang) — cashier can choose 'Credit' payment method, pick a customer, and set a due date; system automatically creates an AR record with Dr Accounts Receivable / Cr Revenue journal.
- Feature
ERP-style customer payment flow: Customer Payment (cash receipt) decoupled from Payment Allocation (link to invoices). Supports bulk payment across many invoices, advance/DP receipts with zero allocations, FIFO auto-allocation, and manual allocation.
- Feature
Customer statement page: Outstanding / Advance / Net summary, aging buckets (Current / 1–30 / 31–60 / 61–90 / >90), Open Invoices tab, Payment History tab, and a running-balance Ledger tab.
- Feature
Payment reversal (with mandatory reason) — per-allocation or full-receipt cascade — restricted to OWNER/ADMIN. Original rows preserved, reversing journals auto-posted, full audit chain intact.
- Feature
Manual journal entry: /journals/new page with a multi-line editor, account dropdown grouped by type (Asset/Liability/Equity/Revenue/Expense), live 'Selisih' indicator, and save-as-DRAFT vs save-and-POST. For adjustments, opening balances, and corrections.
- Compliance
New standard CoA account: 2-1600 Uang Muka Pelanggan (customer-advance clearing); auto-seeded for new tenants and backfilled into existing tenants via migration.
- Compliance
POS void hardening: a transaction cannot be voided if its date is on or before the tenant's 'POS Closing Date' or if any receivable payment has already been recorded. Each case returns a distinct 409 error code.
- Security
Security/integrity fix: warehouse + product unique indexes corrected to true (tenant_id, code) composites — previously globally unique, which caused the second tenant's default 'MAIN' warehouse seed to fail.
- Security
Postgres RLS on every new table (held_carts, receivables, customer_payments, payment_allocations) with FORCE ROW LEVEL SECURITY — tenant isolation guaranteed even from the table-owner role.
- Feature
Payroll PPh 21 fix: the Run Payroll button now populates the required 'Date' field for PTKP / bracket / position-allowance registry lookups — previously failed with 'Input.Date is required'.
- UI
Render fix: /customer-payments/[id], /customers/[party_id]/statement, /receivables/[id], and /pos/transactions/[id] pages now use the right useParams pattern for Next.js 14.2.5 (previously failed with 'An unsupported type was passed to use()').
- Tax
- v0.10.0May 20, 2026
UI Polish & Marketing Surface
- UI
Dashboard sidebar can collapse to an icon-only rail (w-16) on desktop, with the preference persisted to localStorage.
- UI
Dashboard mobile drawer (slide-in, backdrop, body-scroll-lock, auto-close on route change) plus header hamburger toggle.
- Feature
New public pages: /blog, /changelog, /legal/privacy, /legal/terms — with bilingual SEO metadata and prerendering.
- Feature
TenantSwitcher dropdown in Header for consultants with multiple workspaces (consumes /me/memberships + /auth/switch-tenant, clears React Query cache on switch).
- UI
- v0.9.0May 10, 2026
SaaS Subscription & Billing Foundation
- Feature
MVP subscription lifecycle: 30-day trial → active → expired-but-data-preserved. Manual bank transfer with super-admin approval.
- Security
SubscriptionGuard middleware returns 402 on writes when status ∈ {PAST_DUE, EXPIRED, CANCELED}. Read-only enforcement applies on both backend and frontend.
- UI
Public /pricing page with monthly + yearly cards, FAQ, and FAQPage JSON-LD.
- Feature
Super-admin queue for payment-proof approval/rejection, extension, and suspension.
- Feature
- v0.8.0April 20, 2026
Super-Admin Foundation & Auth Hardening
- Security
Super-admin is now a platform attribute (users.is_super_admin) fully orthogonal to tenant RBAC. RequireSuperAdmin reads from the DB on every request — revocation takes effect immediately.
- Security
Client token lifecycle: refresh-and-retry on 401, single-flight refresh, silent-refresh scheduler, multi-tab logout sync, intended-route preservation.
- UI
Auth pages redesign: AuthShell split-layout, password strength meter, remember-me toggle, session-expired banner.
- Security
- v0.7.0March 25, 2026
Product Showcase & Marketing Visuals
- UI
High-fidelity React mockups (DashboardMockup, POSMockup, InventoryMockup, PayrollMockup, SPTTahunanMockup, ConsultantWorkspaceMockup) replace PNG screenshots.
- UI
New /why-esafiskaly, /solutions/umkm, /solutions/consultants pages. FAQPage JSON-LD on landing and solution pages.
- UI
- v0.6.0February 28, 2026
Documentation Platform — Phase B
- Feature
MDX engine (next-mdx-remote/rsc, remark-gfm, rehype-slug). 18 bilingual docs (36 MDX files) covering Accounting, Tax, and Workflows.
- Feature
Sticky TOC with IntersectionObserver, Prev/Next nav, and registry-driven sidebar search.
- Feature
- v0.5.0January 30, 2026
Tax Core Complete
- Tax
12% VAT & DPP Nilai Lain (PMK 131/2024) — effective 11% non-luxury, full 12% luxury. Faktur Pajak OUT/IN with period summary.
- Tax
PPh 21 monthly TER (PP 58/2023, full A/B/C brackets). December run automatically triggers year-end progressive settlement (UU HPP).
- Tax
PPh 23, 25, 26, 4(2), Final UMKM 0.5% — all with input validation and decimal-string-literal rates (no float drift).
- Tax
Bukti Potong (PPh 21/23/26/4(2)) — create/issue/void with atomic per-tenant sequence numbering.
- Compliance
SPT Masa XML + CSV for PPh 21, 23, 26, 4(2), VAT. SPT Tahunan OP 1770 & Badan 1771 (UU HPP progressive for OP; 22% + Pasal 31E for Badan).
- Tax
- v0.4.0January 10, 2026
Security Hardening
- Security
FORCEd RLS on every tenant-scoped table — superuser/table-owner bypass is gone. Migrations run at startup with a schema_migrations tracking table.
- Security
Tenant GUC no longer leaks across pooled connections — middleware runs the whole request inside a transaction with SET LOCAL.
- Security
Atomic per-tenant document sequences replace timestamp-based numbering for invoices, BPs, and journal entries.
- Security
- v0.3.0December 15, 2025
Core Accounting Complete
- Feature
Chart of Accounts (80+ Indonesian-standard accounts). Journal entry create/post/reverse with balance validation and transactional reversal.
- Feature
Invoice lifecycle (DRAFT → ISSUED → PARTIAL/PAID) with AR auto-posting and PMK 131/2024-compliant VAT validation.
- Feature
Bank reconciliation: statement import for BCA/Mandiri/BNI/BRI/generic CSV with auto-match suggestions against unreconciled journal lines.
- Feature
Note: the repository ROADMAP is the source of truth for in-progress features. Read the docs.
