esaFiskaly
Changelog

Every release, on the record.

What lands in esaFiskaly, when, and why — including the tax-regulation updates that drive the changes.

  1. 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.

  2. 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()').

  3. 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).

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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).

  9. 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.

  10. 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.

Note: the repository ROADMAP is the source of truth for in-progress features. Read the docs.