All posts

Total Cost of Ownership: SaaS ATS vs Self-Hosted Open Source

February 25, 2026 Joachim KolleAbout the author

The sticker price on an ATS subscription page tells you almost nothing about what that tool will actually cost your organization. Per-seat fees, implementation charges, integration add-ons, and data migration costs combine to create a total cost of ownership (TCO) that is often two to three times the advertised price.

This guide breaks down every cost category — visible and hidden — for both SaaS and self-hosted open-source ATS platforms. It includes real pricing data from popular vendors, actual infrastructure costs for self-hosted deployment, and a framework you can use to calculate your own TCO.

Why ATS Cost Is More Than the Sticker Price

When a SaaS ATS vendor quotes "$15 per user per month," that number excludes implementation fees, premium feature add-ons, integration costs, training, and the compounding effect of per-seat pricing as your team grows.

According to SelectSoftwareReviews, annual ATS costs range from $250 to $12,000 for small businesses and can exceed $125,000 for enterprises. But these ranges still understate the full picture because they only cover direct subscription costs.

The real cost of an ATS includes:

  • Direct subscription fees — The listed price per user, per month, or flat rate
  • Implementation and onboarding — Setup fees, data migration, and initial training
  • Hidden add-ons — Features locked behind higher tiers or sold separately
  • Integration costs — Connecting to your HRIS, email, calendar, and background check tools
  • Switching costs — Data export limitations, retraining, and productivity loss during migration
  • Opportunity cost — Vendor lock-in that prevents you from adapting your hiring workflow

A self-hosted open-source ATS like Reqcore eliminates subscription and per-seat fees entirely. The trade-off is that you manage infrastructure — but as we covered in our self-hosted vs cloud ATS comparison, modern deployment platforms have made that trade-off far less daunting than it used to be. And as you will see below, that infrastructure cost is often a fraction of what SaaS vendors charge.

The Hidden Cost Taxonomy

Before comparing specific numbers, here is a comprehensive checklist of every cost category you should include in a true TCO analysis. Most buyers only account for the first two.

Direct Costs (Visible)

  • License or subscription fee — Monthly or annual platform cost
  • Per-seat or per-user charges — Cost that scales with team size

Indirect Costs (Often Missed)

  • Implementation fee — One-time setup and configuration (some vendors charge $1,000–$10,000+)
  • Data migration — Importing candidates, jobs, and history from your current system
  • Training — Onboarding your HR team to the new platform
  • Premium feature unlock — Video interviews, assessments, advanced analytics, onboarding modules often cost extra
  • Integration maintenance — API connections to HRIS, payroll, Slack, calendars
  • Compliance and audit — GDPR/CCPA readiness, data retention controls
  • Support tier upgrades — Priority or phone support often requires a higher plan

Growth Costs (Compounding)

  • Per-seat expansion — Adding recruiters or hiring managers at $15–$165/user/month
  • Job slot limits — Some plans cap active job postings, forcing upgrades
  • Storage and candidate limits — Hitting candidate database caps on lower tiers
  • Contract lock-in — Multi-year prepayment requirements (Greenhouse requires annual prepay). See our Greenhouse vs open source ATS comparison for a full breakdown
  • Mandatory partner implementation — Greenhouse and Avature often require paying a certified third-party integrator $5,000–$15,000 to configure the system before you can go live

Exit Costs (Vendor Lock-In)

  • Data export fees — Some vendors make it difficult or expensive to extract your data
  • Retraining — Switching platforms means retraining your entire hiring team
  • Productivity loss — 4–8 weeks of reduced output during migration
  • Lost workflow customization — Custom automations and templates do not transfer

These exit costs are often the most underestimated. For a detailed breakdown of how vendor lock-in happens in ATS, see our dedicated guide.

Use this checklist when evaluating any ATS. If a vendor cannot clearly answer what each item costs, that is a red flag.

SaaS ATS: What You're Really Paying

Here is what popular SaaS ATS platforms actually cost, based on publicly available pricing and industry research:

PlatformPricing ModelStarting Price10-User Annual Cost (est.)
ManatalPer user/month$15–19/user/mo$1,800–2,280
JazzHRFlat rate$75/mo (Hero)*$900–$5,388
Zoho RecruitPer user/month$25/user/mo$3,000
Keka (HIRO)Per recruiter/month$50/recruiter/mo$6,000
Recruit CRMPer user/month$85/user/mo$10,200
HomebasePer location/month$30/location/mo$360–$2,388
WorkableFlat rate$299/mo$3,588
BambooHRPer employee/month~$8–14/employee/mo$3,000+
AshbyPer seat (tiered)$300/mo (Foundations)†$3,600–$8,000+
PinpointFlat rate$345/mo$4,140–$14,400
GreenhouseAnnual contract~$6,000/yr$6,000+
LeverAnnual contract~$6,000/yr$6,000+
ClearCompanyPer user/month$60/user/mo$7,200
AvatureAnnual contract~£60,500/yr£60,500+

Sources: Vendor websites and SelectSoftwareReviews buyer guide (2025).

What this table does not show:

  • Implementation fees (Keka charges setup/migration fees; Greenhouse requires annual prepay)
  • Feature add-ons (Workable charges extra for texting, video interviews, and assessments; Pinpoint charges extra for onboarding; AvaHR charges extra for eSignatures)
  • Support tier costs (BambooHR charges extra if you exceed your allotted support time)
  • Contract terms (Greenhouse standard contracts require one-year prepayment; Avature requires a minimum two-year contract)
  • Job slot limits on entry plans (JazzHR's $75/mo Hero plan caps you at 3 active jobs — most hiring teams need the Plus plan at $269/mo or Pro at $449/mo)

* JazzHR's Hero plan is limited to 3 active job slots. Active hiring teams typically require Plus ($269/mo) or Pro ($449/mo).

† Ashby shifted to an "Elevated Seat" model in 2025 at $800/seat/year (~$66/mo), which can significantly increase costs for larger hiring teams beyond the Foundations startup plan.

When you add these hidden costs, the effective annual spend for a 10-recruiter team using a mid-tier SaaS ATS is typically $5,000–$15,000 per year — and much higher for enterprise platforms.

Self-Hosted Open Source: The Real Numbers

A self-hosted open-source ATS eliminates subscription fees entirely. You pay only for infrastructure and the time to set it up.

Here is what it actually costs to run Reqcore — an open-source ATS built with Nuxt 4, PostgreSQL, and MinIO — on different hosting options:

Option 1: Railway (Simplest)

ComponentMonthly Cost
Web app (Nuxt server)~$2 usage
PostgreSQL database~$3 usage (covered by $5 plan credit)
MinIO (document storage)~$1 (deployed as container + Railway Volume at $0.15/GB/mo)
Railway Hobby plan base fee$5/mo
Custom domain$1/mo (annual registration)
Total~$6–10/month ($72–120/year)

Setup time: Under 30 minutes. You link your GitHub repository, set environment variables, and deploy. No DevOps experience required. Railway's $5/month Hobby plan includes $5 of usage credits — a minimal Reqcore deployment typically uses $6–7 in resources, so expect a small overage.

Option 2: VPS (Hetzner, DigitalOcean)

ComponentMonthly Cost
VPS (2 vCPU, 4 GB RAM)$5–15
Managed PostgreSQL$10–15 (or run on VPS)
MinIO (on VPS)$0 (included)
Domain + SSL$1/mo
Total~$10–30/month ($120–360/year)

Setup time: 1–2 hours with Docker Compose. Requires basic Linux familiarity.

Option 3: Bare Metal / On-Premise

ComponentMonthly Cost
Server hardware (amortized)$20–50
Electricity and internet$10–20
Backup storage$5–10
Total~$35–80/month ($420–960/year)

Setup time: 2–4 hours. Full control over hardware, network, and data residency.

What all three options share:

  • $0 software license (AGPL-3.0 open source)
  • No per-seat fees — unlimited recruiters, hiring managers, and admins
  • No feature gates — every capability is included
  • Full data ownership — your PostgreSQL database, your MinIO storage, your backups
  • No vendor lock-in — fork, modify, or migrate at any time

3-Year TCO Comparison

The following table compares total cost of ownership across three company sizes and three hosting models over a three-year period. SaaS estimates use mid-range vendor pricing and include a conservative $2,000 one-time implementation cost.

Small Team (5 Recruiters)

Cost CategorySaaS ATS (Mid-Tier)Reqcore on RailwayReqcore on VPS
Year 1 subscription/infra$4,500$120$240
Implementation$2,000$0$0
Per-seat growth (add 2 users Y2)+$1,200$0$0
Feature add-ons$500$0$0
3-Year Total$18,700$360$720
Monthly equivalent$519$10$20

Mid-Size Team (25 Recruiters)

Cost CategorySaaS ATS (Mid-Tier)Reqcore on RailwayReqcore on VPS
Year 1 subscription/infra$18,000$120$360
Implementation$5,000$0$0
Per-seat growth (add 10 users Y2–Y3)+$6,000$0$0
Feature add-ons$2,000$0$0
3-Year Total$67,000$360$1,080
Monthly equivalent$1,861$10$30

Large Team (100 Recruiters)

Cost CategorySaaS ATS (Mid-Tier)Reqcore on RailwayReqcore on VPS
Year 1 subscription/infra$60,000$240$600
Implementation$10,000$0$0
Per-seat growth (add 30 users Y2–Y3)+$18,000$0$0
Feature add-ons$5,000$0$0
3-Year Total$213,000$720$1,800
Monthly equivalent$5,917$20$50

The gap grows with every recruiter you add. At 100 users, a SaaS ATS costs 296× more than Railway hosting over three years.

The Per-Seat Tax: How SaaS Costs Compound

Per-seat pricing is the most expensive element of SaaS ATS ownership — and the one most buyers underestimate.

Here is how the math works for a growing company using a SaaS ATS at $50/user/month:

YearRecruitersAnnual CostCumulative Spend
Year 110$6,000$6,000
Year 218$10,800$16,800
Year 330$18,000$34,800
Year 445$27,000$61,800
Year 560$36,000$97,800

After five years, a company that grew from 10 to 60 recruiters has spent nearly $100,000 on ATS subscriptions alone — before implementation, add-ons, or support costs.

With a self-hosted open-source ATS, the same growth costs $0 in additional software fees. Infrastructure might scale from $10/month to $50/month to handle the load, but the total five-year spend stays under $3,000.

This is why we call per-seat pricing a "growth tax." It punishes exactly the behavior you want: hiring more recruiters to scale your company.

Real users confirm this pattern. One ATS reviewer noted that the "cost became too high for a small business as it grew" and that "additional features required upgrades, even when I only needed one item added." Another reviewer at a small team said their SaaS ATS pricing was "high for our small team, even though it was a useful HR platform." (Source: SelectSoftwareReviews user reviews)

Breakeven Analysis: When Self-Hosted Wins

Self-hosted open source wins on cost from day one in most scenarios, but the savings accelerate over time.

ScenarioSaaS Annual CostSelf-Hosted Annual CostYear 1 SavingsYear 3 Savings
Solo recruiter (1 seat)$900$120$780$2,340
Small team (5 seats)$4,500$120$4,380$13,140
Mid team (25 seats)$18,000$120$17,880$53,640
Large team (100 seats)$60,000$240$59,760$179,280

The only scenario where SaaS might be cheaper: If your team has exactly 1–2 recruiters, uses a free-tier ATS (like Zoho Recruit's free plan), and never needs premium features. Once you exceed free-tier limits or add a third user, the cost advantage shifts permanently to self-hosted.

What About the Ops Burden?

The most common objection to self-hosted software is maintenance overhead. Here is a realistic assessment:

  • Railway/PaaS deployment — Near-zero maintenance. Updates deploy automatically via GitHub. Database backups are handled by the platform. No SSH, no server patching.
  • VPS deployment — 1–2 hours per month for OS updates and backups. Docker Compose makes application updates a single docker compose pull && docker compose up -d command.
  • On-premise — 2–4 hours per month for hardware monitoring, backups, and updates. Comparable to managing any internal server.

For most teams, the maintenance cost of self-hosting is less than one hour per month when using a PaaS like Railway — far less than the time spent managing SaaS vendor relationships, negotiating renewals, and waiting on support tickets.

TCO Calculator: Build Your Own Estimate

Use this framework to calculate your own three-year TCO for any ATS:

SaaS TCO Formula

3-Year SaaS TCO =
  (Monthly per-seat fee × Users × 36 months)
+ Implementation fee
+ (Annual feature add-ons × 3)
+ (Estimated per-seat growth cost)
+ Training and onboarding costs
+ Integration/API costs
+ Support tier premium (if applicable)

Self-Hosted TCO Formula

3-Year Self-Hosted TCO =
  (Monthly infrastructure cost × 36 months)
+ Domain and SSL costs
+ (Staff time for maintenance × hourly rate × 36 months)
+ One-time setup time × hourly rate

Example Calculation

SaaS (mid-tier, 10 recruiters, growing to 15):

  • ($50 × 10 × 36) + $3,000 + ($1,500 × 3) + ($50 × 5 × 24) + $1,000 = $32,500

Self-hosted on Railway (same team):

  • ($10 × 36) + $36 + (0.5 hr × $50 × 36) + (0.5 hr × $50) = $1,321

Difference: $31,179 saved over three years.

Plug in your own numbers. In almost every scenario, self-hosted open source costs 90–99% less than SaaS.

Frequently Asked Questions

How much does an ATS cost per year?

SaaS ATS platforms cost between $250 and $12,000 per year for small businesses, $3,000–$25,000 for mid-size companies, and $15,000–$125,000+ for enterprises. Self-hosted open-source alternatives like Reqcore cost $72–$360 per year in infrastructure, with no license or per-seat fees.

What are the hidden costs of an ATS?

The most commonly missed costs are implementation fees ($1,000–$10,000+), feature add-ons (video interviews, assessments, onboarding modules), per-seat expansion as your team grows, integration maintenance, support tier upgrades, and contract lock-in penalties. See our hidden cost taxonomy above for a complete checklist.

Is a self-hosted ATS cheaper than SaaS?

Yes, in virtually every scenario. A self-hosted ATS like Reqcore costs $6–$30/month in infrastructure regardless of team size, while a SaaS ATS with 10 users costs $150–$1,650/month in subscriptions alone. The gap widens with every user you add because self-hosted has no per-seat fees.

What is the cheapest ATS for small businesses?

For a commercial SaaS ATS, Manatal ($15/user/month) and JazzHR ($75/month flat) are among the most affordable. For the lowest possible cost, self-hosted open-source options like Reqcore or OpenCATS run for $6–$10/month on Railway or a basic VPS. See our best open-source ATS comparison for a full breakdown.

Do I need DevOps experience to self-host an ATS?

Not with modern deployment platforms. Reqcore deploys to Railway in under 30 minutes by linking a GitHub repository and setting environment variables. No SSH, no server management, no Docker knowledge required. For VPS deployment, basic familiarity with Docker Compose is helpful but not mandatory — our self-hosting ATS guide walks through every step.

How do I calculate ATS ROI?

Divide the annual cost savings (SaaS cost minus self-hosted cost) by the self-hosted cost. For a team of 10 spending $6,000/year on SaaS versus $120/year on Railway hosting, the ROI is ($6,000 − $120) / $120 = 4,900% in the first year. Use our TCO calculator framework above to model your specific scenario.

The Bottom Line

ATS cost is not a subscription fee — it is a compounding obligation that grows with every recruiter, every add-on, and every contract renewal. SaaS platforms are convenient, but that convenience comes at a steep and escalating price.

Self-hosted open-source ATS platforms like Reqcore offer the same core functionality — job posting, candidate pipelines, application tracking, team collaboration — at 90–99% lower cost. The trade-off is managing your own infrastructure, but modern PaaS platforms like Railway have reduced that burden to near zero.

Before you sign your next ATS contract, run the numbers using the TCO framework above. Compare the three-year total — not just the monthly price tag. Your budget will thank you.


Ready to see what a $6/month ATS looks like? Explore Reqcore — open source, self-hosted, no per-seat fees. Or compare it against the competition in our open-source ATS comparison.

About Joachim Kolle

Joachim Kolle

Founder of Reqcore

Joachim Kolle is the founder of Reqcore. He works hands-on with open source software, programming, ATS software, and recruiting workflows.

He writes and reviews content about self-hosted ATS, data ownership, and practical hiring operations.

About the authorLinkedIn profile

Ready to own your hiring?

Reqcore is the open-source ATS you can self-host. Transparent AI, no per-seat fees, full data ownership.

Keep reading