Skip to content

Editions

SAE Books ships as a single binary. The edition you run — and the features that are live — is controlled by your licence key and environment variables. There is no separate paid codebase.

Editions matrix

Five editions ship from a single codebase, arranged as a strict superset (Community ⊂ Offline ⊂ Business ⊂ Pro ⊂ Enterprise). Upgrading never removes a feature you already had.

Feature Community Offline Business Pro Enterprise
Ledger
Double-entry journal entries yes yes yes yes yes
Invoices, bills, payments, credit notes yes yes yes yes yes
Chart of accounts (AU standard seed) yes yes yes yes yes
GST / BAS preparation yes yes yes yes yes
P&L, balance sheet, trial balance yes yes yes yes yes
Fixed assets v1 (straight-line depreciation) yes yes yes yes yes
Fixed assets v2 (diminishing-value, partial disposal, bulk import) no yes yes yes yes
Foreign currency (FX) + revaluation no yes yes yes yes
Inventory (weighted-average cost) no yes yes yes yes
Projects + budgets no yes yes yes yes
Purchase orders yes yes yes yes yes
Users and access
Single admin user yes yes yes yes yes
Granular permissions matrix (45 codes × custom roles) no yes yes yes yes
Multiple companies per install (company switcher) no no yes (cap 2) yes (cap 3) yes (unlimited)
Themes
All UI themes (default, MYOB Classic, cloud, dense) no yes yes yes yes
Extended audit modes
Immutable ledger audit mode yes yes yes yes yes
Open journal + hybrid audit modes no yes yes yes yes
Outbound email
SAE-hosted SMTP relay (invoice / statement delivery) no yes yes yes yes
Compliance integrations
ABR lookup (entity name / GST status by ABN) no no yes yes yes
Bank feeds (SISS / ACSISS daily sync) no no yes yes yes
Stripe + Paperless integrations no no yes yes yes
AI document extraction (receipt / invoice OCR) no no yes yes yes
ATO SBR e-lodgement (BAS, STP via SAE lodge relay) no no no yes yes
LEI / GLEIF lookup no no no yes yes
UK Companies House lookup no no no yes yes
QBO data import (migration tooling) no no no yes yes
Ad-hoc SQL query tool no no no yes yes
Audit snapshot service no no no yes yes
Scheduled automated backups no no no yes yes
Per-company SISS credentials no no no no yes
Support
Community forum yes yes yes yes yes
Priority support (defined response SLA) no no no no yes
Signed releases + LTS branches no no no no yes

How edition gating works

The active edition is resolved at startup in this order:

  1. USB licence (Offline) — an Ed25519-signed licence file on a USB drive whose hardware ID is bound to the licence.
  2. Portal JWT (Business / Pro / Enterprise) — a signed JWT from license.saebooks.com.au, cached locally and refreshed daily.
  3. Community — fallback when no licence is present; no key required.

For development and testing, SAEBOOKS_EDITION in .env overrides the resolver entirely (a warning is logged so a misconfigured production box is obvious):

SAEBOOKS_EDITION=community   # community (default), offline, business, pro, enterprise

Feature gates in the code are transparent: require_feature(FLAG_BANK_FEEDS) returns 404 (not 403) on editions without the flag, so lower-tier installs don't advertise routes they can't fulfil.

Pricing

Current pricing is at saebooks.com.au/editions. Subscription licences are bound per install (per ledger_id); Offline is a perpetual USB-bound licence (one per physical drive).

AGPLv3 and forking

The entire codebase — including Enterprise feature code — is published under AGPLv3. You can fork it, run it, and modify it. The copyleft applies: if you distribute a modified version or run it as a service for others, you must publish your changes under the same licence.

The SAE Engineering relays (license, lodge, feeds) are private commercial services. A fork of the API binary cannot use SAE Engineering's Stripe keys, ATO Machine Credential, or SISS Data Services agreement. Forkers who want those integrations need to establish their own agreements.

Changing edition

To move between subscription tiers (Business / Pro / Enterprise), apply a new portal JWT from your account portal and restart:

docker compose restart api

The resolver picks up the refreshed JWT on start. No data migration, no reinstall. The feature flags flip in seconds.

To return to Community, remove any cached JWT/USB and set SAEBOOKS_EDITION=community in .env. Your data is untouched.