Leavora
Exact leave balances, holiday-aware working days, and rules for who can be off before anyone books.
For small teams that track leave in a spreadsheet. Often replaces Factorial, Vacation Tracker, Timetastic or absence.io.
Single license $99 · Extended license $229 · paid once, yours for good
What it does
Carried in, accrued, taken and pending, as of any date. Kept to the hundredth of a day, so a year of accrual lands exactly.
Bank holidays and your weekend never come off a balance. Load a year of public holidays in one click, then edit them.
Invite an employee and they get their own login: their balances, their history and a request form. Approving stays yours.
Change a pending or approved request in one step. Approved leave stays approved only if the new dates pass the approval checks.
On My leave a person asks to move approved leave. Their booked dates stand until you approve or decline.
Set how many of a department may be off on one day. An approval that would go over is refused, naming the day.
Stop planned leave around a stocktake or a launch, for everyone or one department. Sick leave is never blocked.
The request form shows booked leave, bank holidays ahead and no-leave periods. It says how many working days the dates are and whether they clash.
Give a holiday to one location, and each person's leave counts their own location's days.
Record extra time worked and it becomes leave on their balance.
A morning list of who's off goes to a Slack channel or your inbox. Names and dates, never reasons. A calendar feed shows the same in your calendar.
Annual, sick, unpaid or your own, each with annual or monthly accrual and a carryover cap.
Also: half days, attachments on requests, a team calendar, a PDF leave statement and CSV export, the decision email to the employee, and UK dates by default.
What Leavora deliberately doesn’t do.
- Single-tenant: one business per installation.
- Records leave only — no payroll, no wage calculation, no HRIS integration.
- Approving is always an administrator's act; self-service employees request but never decide — including their own request.
- Carryover is a single cap per leave type; tenure tiers, negative balances and part-time proration by hours are out of scope by design.
- Accrual — annual or monthly — counts a month only when the employee was employed at its start (no partial-month pro-rating), so balances imported from a pro-rating system can read slightly higher.
- Email sends through your own SMTP server; every employee email is off until you turn it on.
What renting costs instead
13 months of Factorial costs what Leavora costs once.
Read Sep 3, 2026 · source2 months of Vacation Tracker costs what Leavora costs once.
Read Sep 26, 2026 · source22 months of Timetastic costs what Leavora costs once.
Read Sep 3, 2026 · sourceThe full comparison: every rival, what each does better, and who should stay with them →
Replacing one of these? Factorial alternative · Vacation Tracker alternative · Timetastic alternative · absence.io alternative
Release history
For Leavora, 4.1 makes two changes that every app gets. What’s new in 4.1 →
For Leavora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and… What’s new in 4.0 →
3.3 lets booked leave change without the emails back and forth. What’s new in 3.3 →
3.2 put the rules of who can be off into the app.
The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar…
Decide-once now lives in a single function that browser, REST API and agent all pass through — a test asserts exactly one status-update site exists in the whole product.
Leavora 2.0 adds the 2.0 owner layer.
What’s in the zip
The tree as the zip ships it — the working leftovers the packager deletes are not listed
- .htaccess
- API.md
- Dockerfile
- LICENSE.txt
- QUICKSTART.txt
- README.md
- assets/
- bin/
- config.sample.php
- controllers/
- cron/
- deploy/
- index.php
- install/
- manifest.json
- offline.html
- router.php
- src/
- sw.js
- tests/
- views/
src/Leave.php: a real module, the first 24 of 387 lines
Chosen as the largest module in src/ that is not one of the shared cores — this product's own logic, not a file every product carries.
<?php
/**
* Leave.php — THE leave-math core Leavora stands behind (fully covered by tests/run.php, offline).
* Nothing here touches the database or the network. Every rule the product enforces —
* working-day counts (excluding weekends + company holidays), accrual (annual / monthly / none),
* carryover capped at the leave-year boundary, the as-of balance (accrued − taken − pending),
* overlap/double-request detection, and the CSV export hardening — lives here as pure,
* deterministic functions so it can be proven in isolation and reused identically by the web UI,
* the seeder, and the exporters.
*
* UNIT: leave amounts are INTEGER CENTIDAYS (1 day = 100). Half a day = 50. This keeps accrual
* arithmetic exact: a monthly accrual of "20 days/year" is credited as intdiv(2000 * months, 12),
* so 12 months lands on exactly 2000 (20 days) with zero float drift, and the intermediate months
* are exact hundredths of a day. Sums are done in PHP with a final clamp — never a SQL SUM() (INT
* overflow in SQL is a strict-mode 500 waiting to happen).
*
* Positioning: Leavora tracks LEAVE ONLY — entitlement, requests, approvals, balances. It is NOT
* payroll: it never computes wages, never touches money/cards/bank rails, and initiates no payments.
*/
declare(strict_types=1);
final class Leave
{
/** Centidays in one whole day. */Runs on: 2-minute web installer, plain PHP 8.1+ with MySQL (or SQLite for a trial), no Composer or build step — Docker image included. Tested on PHP 8.3. Or run it in Docker: the Dockerfile is in the zip.
Technical owners can install it with one line and their license key: curl -fsSL https://ownware.io/install.sh | sh -s -- leavora <your license key>
Nothing is obfuscated or encoded; what you read is what runs. Manual · API · the test run
Which license do I need?
It comes down to how many installations you need. Running your own business on one site is the Single license. A second domain of your own, or sites you build or run for other people, is the Extended license.
- Install it on one domain or subdomain you own or operate
- Change the source however you like for that installation
- Run your own business on it commercially, client work included
- Re-download the current build any time from your buyer portal
- A second site, or an installation you hand to a client as theirs, needs the Extended license
- No reselling, redistributing or sublicensing the source
- Not for offering it to other people as a hosted service
- Everything the Single license grants
- Install it on as many domains as you own or operate — no cap on the number
- Up to ten client installations, one per client project, handed over or hosted for each client; for more, buy another Extended license
- White-label: remove or replace the product name and logo in the screens of client installations
- Still no reselling or redistributing the source itself
- Running it as a multi-tenant service others sign up for needs a SaaS agreement
Every download carries the full terms as LICENSE.txt. The complete wording is on the terms page.
After you buy
The app’s Updates page installs a new release with your license key, with the release’s signature checked and a backup taken first. Your download link always serves the current build. Download again any time from your order page or the buyer portal; there is no renewal fee.
Email support for installation and for defects in the code as delivered: a person reads and answers every message. It does not cover custom development or server administration. What support covers
Refunds are handled by Lemon Squeezy as merchant of record, case by case. EU consumers keep the statutory 14-day right until delivery starts. Refund terms
It keeps running: your server, the full PHP source, no license check that can fail. If no stable release is published for 365 days, the domain limit lifts; after three such years your copy becomes MIT-licensed. The terms have the exact wording: continuity.
Questions
Is Leavora payroll?
How exact are the balances?
Can I use a fiscal leave year, not the calendar year?
Does it handle half-days and public holidays?
What if the developer disappears?
Can employees log in themselves?
Is Leavora a subscription?
Our HR platform charges per employee. How does this compare?
What exactly do I get for the money?
Can I get the leave records out?
Covered in these guides
- What's new in Own It 3.3
- Staff leave and PTO software you own
- The monthly minimum is the price, once your team is small enough
- What a rent-versus-own calculator must show you before its answer means anything
- The workforce stack, bought once: rota, timesheet, leave, onboarding and training records that agree with each other
- What's new in Own It 3.1
Also covered in: "You Own Your Data" Is Only True If You Can Restore It · What a Twelve-Staff Gym Pays for Software Every Year — Line by Line · What a Six-Person Café Pays for Software Every Year — Line by Line · Timetastic Alternative — Self-Hosted Leave Tracking You Buy Once (2026) · The Fee Stack Nobody Reads — Where the Second Price List Lives · The 2026 SaaS Rent Index — What a Small Business Actually Pays to Rent Its Software, and 1 more in the guides.
More about Leavora
Self-hosted staff leave & PTO — accruals, working-day requests, approvals, and live balances.
The problem it solves
For most small teams, "how much leave do I have left?" is a question only a shared spreadsheet can answer — and it is usually wrong. Accruals drift, half-days get miscounted, public holidays land inside a leave request, and two people book the same week off without anyone noticing. HR platforms fix all of it, then charge per employee, every month, forever.
- Balances that drift because the spreadsheet formula was off by a day
- Weekends and public holidays counted as leave by mistake
- Per-employee monthly SaaS pricing for what a team of twelve needs a few times a year
Every feature
- Employee self-service login. Invite an employee from their record and they get their own login: their balances, their history, and a request form — nothing else. The invite is bound to that employee, approving stays admin-only, and revoking access never touches their leave history.
- Decision email to the employee. Approved or declined, the employee is told by email — dates, type, days, who decided. Off by default, through your own SMTP, and it fires from the same code path whether the decision came from the browser, the API or an agent.
- Who's-off calendar feed. A token-guarded .ics feed (team-wide or per person) your Google/Outlook/Apple calendar subscribes to. One-time URL shown once; revoke a token and the feed goes dark.
- Employees with accrual. Each employee has a manager, a start date, and start-date-prorated accrual, so someone who joined in April earns the right fraction of the year's entitlement.
- Leave types with rules. Annual, sick, unpaid, or custom leave types, each with an accrual rule (annual up-front or monthly) and a carryover cap that never compounds across the leave-year boundary.
- Holiday-aware working days. A company holiday calendar and a configurable weekend are excluded from every working-day count, so a request that spans a bank holiday charges the right number of days.
- Requests with approvals. Working days are computed automatically, overlaps and double-requests are caught, half-days are supported, and each request runs a pending to approved or rejected workflow with approver and timestamp.
- Attachments on requests. File a sick note or a booking confirmation against the request it belongs to. It is served only to signed-in staff and never appears in a calendar feed.
- Live, exact balances. Carried-in + accrued − taken − pending, as of any date, kept to the hundredth of a day in integer centidays — so a full year of monthly accrual lands exactly on the entitlement with zero float drift.
- Team calendar + exports. A month grid of who is off with weekends and holidays shaded, a dependency-free per-employee PDF leave statement, and a formula-injection-hardened CSV export.
- Installable mobile app (PWA). Add it to a phone or tablet home screen straight from the browser — a full-screen app served from your own server, with no app store involved. Business data is not stored offline on the device; what you see is read live.
- Time off in lieu. Record extra time worked and it becomes leave on their balance.
- Who's off today, in your team chat. A morning list to a Slack channel or your inbox: names and dates, never reasons.
- Bank holidays in one click. Load a year of public holidays for England and Wales, Scotland, Northern Ireland, Ireland, the US, Germany or France, substitute days included, then edit them like any other day.
- Two offices, two calendars. Give a holiday to one location; each person's leave counts their own location's days.
- Not half the team at once. Set how many of a department may be off on the same day; an approval that would go over is refused, naming the day.
- Blackout dates. Stop planned leave around a stocktake or a launch, for everyone or one department. Sick leave is never blocked.
- Change booked leave. Change the dates of a pending or approved request in one step; approved leave stays approved only if the new dates pass the same checks as approval.
- Staff ask for a change instead of emailing you. On My leave a person asks to move their approved leave; their booked dates stand until you approve or decline the change.
- See what is booked while you pick dates. The leave request form shows your booked leave, the bank holidays ahead and the no-leave periods, and says as you choose how many working days the dates are and whether they clash.
- UK dates by default. New installs show dates the UK way (26 Sep 2026, 14:05); switch to the US style in Settings if you prefer.
- Updates from inside the app. The Updates page installs a new release with your license key: Ownware's signature is checked, a backup is taken first, and the app puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. It never checks by itself.
- Backups by themselves. Automatic backups, an optional copy to S3-compatible storage you own, and a weekly check that the latest backup reads back. The Health page names anything that needs attention.
- Own It 4.0.1 — fixes and an up-to-date manual. For Leavora, 4.0.1 fixes an installer that had lost its styling, a rollback that a page opened during an update could stop and a command-line update that ended in an error after putting the previous version back. Its manual, FAQ and QUICKSTART now cover everything 4.0 added, including two Nginx rules that keep the data folder private. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0.2 — the installer opens on every host. For Leavora, 4.0.2 fixes a fresh install on an Apache host: the one-page setup at /install/ looped back to itself and never opened, and now it opens. Your license covers it: press Check for updates on the Updates page, or download it from your order page.
Release notes in full
- Own It 4.1: client installations and your other tools. For Leavora, 4.1 makes two changes that every app gets. An Extended license bought from October 4, 2026 covers up to ten client installations, one per client project: hand each one over to the client or host it for them, with the client's logo and colors from the app's branding settings. The API reference now shows how to connect Leavora to Zapier, Make or n8n, using its own webhooks and API key. Your license covers the update: press Check for updates on the Updates page, or download it from your order page.
- Own It 4.0: it updates and backs itself up. For Leavora, 4.0 means updates from inside the app: the Updates page checks for a new release with your license key, verifies Ownware's signature, takes a backup and puts the previous version back by itself if the update is interrupted or the database step or start-up check of the new version fails. A new install can start with a sample business and remove it in one click; backups run by themselves, with an optional offsite copy and a weekly check that the latest one reads back; and the Health page says whether the install is looking after itself.
- Own It 3.3: booked leave that can change. 3.3 lets booked leave change without the emails back and forth. You change a pending or approved request in one step, and approved leave stays approved only if the new dates pass the same checks as approval; on My leave, a person asks to move their approved leave and their booked dates stand until you decide. The request form shows booked leave, bank holidays and no-leave periods while they pick dates, and new installs show dates the UK way.
- Own It 3.2: who can be off, settled before anyone books. 3.2 put the rules of who can be off into the app. Load a year of bank holidays in one click, give each office its own, cap how many of a department are off on the same day, and stop planned leave around a stocktake or a launch, while sick leave is never blocked. It also added time off in lieu and a morning list of who's off today in your team chat or inbox.
- Own It 3.1: it writes to the people you serve. The 3.1 wave gave the catalog a way to reach the other side of the transaction: counterparty email through your own SMTP server, calendar feeds your own calendar subscribes to, attachments filed where the paperwork belongs, and export presets other people's software imports. Each outbound feature ships switched off and runs on your own credentials; a failed send is recorded, and the action that triggered it stands. What this app gained is listed at the top of this section.
- Own It 3.0: works for your AI, not just for you. Decide-once now lives in a single function that browser, REST API and agent all pass through — a test asserts exactly one status-update site exists in the whole product. Deciding is deliberately separate from submitting, and six MCP tools work the same request cycle people do.
- Own It 2.0: API, 2FA, backups, dark mode. Leavora 2.0 adds the 2.0 owner layer. Upgrade by replacing the files — the database migrates itself, and it is still the same one-time purchase.
Browse self-hosted: Workforce management software · Gym & studio software · Office & finance software · School & training-provider software