📲
Install Accountaja on this device
Quick access, offline support, and a full-screen app experience.
🇯🇲 Built exclusively for Jamaican businesses

Run Your Business &
Payroll in Jamaica
Without Stress

Automate invoices, payroll, NHT, NIS, GCT and taxes — all in one platform built for Jamaican compliance.

500+
Businesses
99.9%
Uptime
TAJ
Compliant
JMD
Native
Accountaja — Your Company Dashboard
Revenue
$4.2M JMD
Expenses
$1.8M JMD
Net Profit
$2.4M JMD
Payroll Due
$845K JMD
Platform Features
Everything your Jamaican
business needs
From invoicing to TAJ-compliant payroll — built for how Jamaica works.
📊
Accounting & Ledger
Full P&L, balance sheet, and cash flow — real-time.
🧾
GCT-Compliant Invoicing
Create invoices with 15% GCT auto-calculated, PDF export, email ready.
💰
Jamaica Payroll Engine
Auto-calculate NHT, NIS, PAYE, Education Tax, and HEART per TAJ rules.
🇯🇲
Tax Automation
GCT returns, PAYE summaries — formatted for TAJ submission.
📦
Inventory Tracking
SKU management, low-stock alerts, and valuation with real-time updates.
📈
Reports & Analytics
Export TAJ-ready reports, budget vs actuals, and department data.
Pricing
Simple, transparent pricing
All plans include Jamaica payroll compliance. No hidden fees.
Starter
7 Days Free
Try everything free — no card needed
  • ✅ All features unlocked
  • ✅ Full Finance & Payroll
  • ✅ POS Terminal
  • ✅ Reports & HR
  • Account pauses after 7 days
Growth
$31.99/mo USD
Finance, Operations & Reports
  • ✅ Finance (Invoices, Bills, Expenses, Ledger)
  • ✅ Operations (Customers, Inventory)
  • ✅ Reports
  • ❌ POS Terminal
  • ❌ Payroll & HR
Most Popular
Business
$75/mo USD
Finance, Ops, POS, Payroll, HR & Reports
  • ✅ Everything in Growth
  • ✅ POS Terminal & Register
  • ✅ Payroll Engine
  • ✅ HR & Employees
  • ✅ Pay Advice
Enterprise
Custom
Custom modules, white-label & add-ons
  • ✅ Everything in Business
  • ✅ Custom integrations
  • ✅ White-label branding
  • ✅ Dedicated support & SLA
  • ✅ Priority onboarding
📰 Get product updates
Occasional emails about new features and tips for running your business — no spam, unsubscribe anytime.
Welcome back
Sign in to your dashboard
Create account
Step 1 of 2 — Your details
👑 Platform Overview
Super Admin · Dato Suite
Super Admin
Total Companies
0
Total Users
0
Active Plans
0
Platform Status
● Online
🔔 Renewals Due Soon 0
Accounts inside their own renewal reminder window (7 days by default — change it per account from Admin Users). A summary is also emailed to you automatically once a day when any show up here.
📊 Feature Usage Last 7 Days
Self-tracked from real page visits across every company (your own Super Admin browsing isn't counted) — free, no external analytics service needed.
Loading…
🔥 Firebase Usage Today Estimate
Self-tracked by Accountaja from its own app traffic — not Google's official billing count. For the authoritative number, check Firebase Console → Firestore → Usage.
Loading…
Registered Companies
CompanyPlanStatusJoined
Recent Audit Activity
⚙️ Firebase Setup: Enable Admin Company View
🔧 Fixed Aug 7 2026: the old staff_users rule threw "Missing or insufficient permissions" whenever a Team Member was created, because it checked resource.data on a document that didn't exist yet. That silently failed the write, so the new team member's login record was never actually saved and they couldn't sign in. The rule below is corrected — you must re-publish it in the Firebase Console for the fix to take effect (editing this file alone does not change your live rules).
🔧 Added Aug 9 2026: a new admin_meta collection now backs the Firebase Usage card above (self-tracked reads/writes/deletes). It needs its own rule, included below — until you publish it, that card will show a permissions error instead of numbers.
🔧 Added Aug 16 2026: a new analytics_daily collection now backs the Feature Usage card above (self-tracked page views). Same deal — publish the rule below or that card will show a permissions error too.
🔧 Added Sep 3 2026: a new newsletter_subscribers collection now backs the Newsletter page (email outreach). It needs its own rule too, included below — until you publish it, landing-page signups will silently fail and the Newsletter subscriber list will show a permissions error.
To allow the Super Admin to view live data from any company dashboard, update your Firestore Security Rules in the Firebase Console to the following:
rules_version = '2';
service cloud.firestore {
  match /databases/{database}/documents {

    // Helper: check if current user is the platform superadmin
    function isSuperAdmin() {
      return request.auth != null &&
             request.auth.token.email == 'datosuite@gmail.com';
    }

    // Users collection
    match /users/{userId} {
      allow read, write: if request.auth != null &&
        (request.auth.uid == userId || isSuperAdmin());
    }

    // Companies collection — owner or superadmin or that owner's active team member
    match /companies/{companyId} {
      allow read, write: if request.auth != null &&
        (request.auth.uid == companyId || isSuperAdmin() ||
         (exists(/databases/$(database)/documents/staff_users/$(request.auth.uid)) &&
          get(/databases/$(database)/documents/staff_users/$(request.auth.uid)).data.companyId == companyId &&
          get(/databases/$(database)/documents/staff_users/$(request.auth.uid)).data.status == 'Active'));
    }

    // Team Access — staff/bookkeeper/accountant logins
    match /staff_users/{staffId} {
      allow read: if request.auth != null &&
        (request.auth.uid == staffId || isSuperAdmin() || request.auth.uid == resource.data.companyId);

      // IMPORTANT: create is split out from update/delete below. On create,
      // the document doesn't exist yet, so `resource` is null — referencing
      // resource.data in that state throws and denies the whole rule, which
      // is exactly what was causing "Missing or insufficient permissions"
      // when adding a team member. Creates must only reference
      // request.resource.data (the incoming write), never resource.data.
      allow create: if request.auth != null &&
        (isSuperAdmin() || request.auth.uid == request.resource.data.companyId);

      allow update, delete: if request.auth != null &&
        (isSuperAdmin() || request.auth.uid == resource.data.companyId);
    }

    // Platform (subscription renewal) invoices — one doc per company.
    // Only the Super Admin can create/edit; the company itself may only
    // read its own. Note this never touches resource.data, since the
    // company is identified by the DOCUMENT ID here, not a field — so
    // this rule has no create-vs-update split issue like the one above.
    match /platform_invoices/{companyId} {
      allow read: if request.auth != null &&
        (isSuperAdmin() || request.auth.uid == companyId);
      allow write: if request.auth != null && isSuperAdmin();
    }

    // Audit log — superadmin only
    match /audit_log/{logId} {
      allow read, write: if request.auth != null && isSuperAdmin();
    }

    // Self-tracked Firebase usage counter — every signed-in user's browser
    // increments today's doc as they use the app; only the Super Admin can
    // read the aggregate back. Low-stakes internal metrics, not user data,
    // so a simple "any signed-in user can write" rule is an acceptable
    // trade-off rather than needing per-field validation.
    match /admin_meta/{docId} {
      allow read: if request.auth != null && isSuperAdmin();
      allow write: if request.auth != null;
    }

    // Usage analytics — same trust model as admin_meta above: every
    // signed-in user's browser can increment today's aggregate doc as
    // they navigate the app, only the Super Admin can read it back.
    match /analytics_daily/{dayId} {
      allow read: if request.auth != null && isSuperAdmin();
      allow write: if request.auth != null;
    }

    // Newsletter subscribers — landing-page visitors are NOT signed in
    // when they subscribe, so writes are left open (no request.auth
    // check). No sensitive data lives here, just email/name/opt-in
    // status, so this trades a little spam risk for signups actually
    // working. Only the Super Admin can read the list back.
    match /newsletter_subscribers/{docId} {
      allow read: if request.auth != null && isSuperAdmin();
      allow write: if true;
    }
  }
}
Go to Firebase Console → Firestore Database → Rules → paste the above → click Publish. This replaces the whole rules file — if you've since added other collections (e.g. for future features), merge them in rather than overwriting.
🏢 All Companies
Manage registered companies and monitor trial countdowns
Super Admin
CompanyTypePlanTrial RemainingStatusModulesActions
🎁 Referrals
Track which companies signed up through a partner or referral link, for commission payouts
Super Admin
Partner Summary
Referring CompanyReferral CodeSignupsTier / CommissionEst. MonthlyTotal PaidActions
Individual Signups
Referral CodeReferred By (Company)Referred CompanyEmailPlanStatusJoined
👥 All Users
Platform-wide user list
NameEmailPhoneRoleCompanyStatusJoinedTrainingReminderActions
📋 Audit Logs
Activity tracking only · deleting logs does NOT affect user invoices, bills, expenses or any business data
TimeActorActionDetailActions
📰 Newsletter
Email outreach to promote Accountaja — free, via EmailJS
Subscribers
0
Unsubscribed
0
Campaigns Sent
0
EmailJS Status
⚙️ Setup needed: Newsletter EmailJS template
Reuses your existing free EmailJS account (200 emails/month). In EmailJS, create one more template — call it anything — with variables {{to_email}} {{subject}} {{message}} {{unsubscribe_link}}, then paste its Template ID into EMAILJS_NEWSLETTER_TEMPLATE_ID near the other EmailJS keys in the code. Always include {{unsubscribe_link}} somewhere in the template — every marketing email needs a working opt-out.
✉️ Compose Campaign
Sends one email per subscriber, a few seconds apart, from this browser tab — keep it open until it finishes. Free EmailJS accounts are capped at 200 emails/month, so this button is best for small lists; check 0 recipients against that cap before sending.
Subscribers
EmailNameSourceJoinedStatusActions
Dashboard
Your company
Total Revenue
$0
Paid invoices + POS
Total Expenses
$0
Bills + expenses + payroll
Net Profit
$0
Revenue − Expenses
Outstanding
$0
0 invoices
POS Revenue
$0
0 transactions
Payroll Cost
$0
0 employees
GCT Payable
$0
Net to TAJ
Inventory Items
0
In stock
Revenue vs Expenses
Expense Breakdown
Recent Invoices
Recent Expenses & Bills
Payroll Summary
Activity Feed
Live
Invoices
GCT-compliant billing
Total Invoiced
$0
Paid
$0
Pending
$0
Overdue
$0
📋 Quotations
Create and manage client quotes
Total Quotes
0
Draft
0
Sent
0
Accepted
0
Income
Other income not tied to an invoice or POS sale
Bills
Expenses
General Ledger
🏦 Bank Import & Reconciliation
Step 1 — Upload a statement
Export a CSV or OFX/QFX file from your online banking (NCB, Scotia, JN, etc.) and upload it here. Nothing is sent anywhere — the file is read entirely in your browser.
📑 Purchase Orders
Track what you've ordered from vendors before it becomes a bill
Total POs
0
Draft
0
Sent
0
Received
0
PO #VendorDateExpectedTotalStatus
🤝 Partners
Partner records and profit-share allocation for your Partnership
Partners
0
Total Profit Share Allocated
0%
NIS Verification Needed
0
NameTRNProfit ShareNIS Verified
A Partnership itself isn't taxed directly — each partner reports their share of the profit on their own individual return, based on the percentages set here. This feeds the Profit Distribution figures on the Reports → P&L tab.
📚 Chart of Accounts
Your list of accounts for double-entry bookkeeping — used by Journal Entries
This runs alongside your existing Ledger rather than replacing it — Invoices, Bills, Expenses and Payroll still post to the Ledger as before. Use Journal Entries here for formal double-entry adjustments (accruals, depreciation, corrections, etc.) that a bookkeeper or accountant would normally record.
CodeAccount NameTypeBalance
📝 Journal Entries
Manual double-entry postings against your Chart of Accounts
DateRefMemoDebitCredit
Customers
Inventory Management
Employees
HR records & employment status
🌴 Leave Management
Leave requests, approvals & balances
Leave Balances
📜 Payroll History
Every pay run across all employees
Year-to-Date Statutory Summary —
🇯🇲 Jamaica Payroll Engine
NHT · NIS · PAYE · Education Tax · HEART
Employee & Earnings
Deduction / Contribution Toggles
Turn off any deduction to pay employee their flat gross (or a custom net). Payslip PDF will reflect only enabled deductions.
NHT (Employee 2%)
NIS (Employee 3%)
Education Tax (2.25%)
PAYE Income Tax
🇯🇲 Statutory Rates 2025/26
NHT Employee2%
NHT Employer3%
NIS Employee3% (ceiling applies)
NIS Employer3% (ceiling applies)
Education Tax Employee2.25% of Statutory Income
Education Tax Employer3.5% of Statutory Income
HEART Employer3% of gross
PAYE Annual Threshold$1,902,360 JMD
Net Monthly Pay
Enter salary →
Gross
Gross Salary
Employee Deductions
NHT (2%)
NIS (3% w/ ceiling)
Education Tax (2.25%)
PAYE Income Tax
Net Pay
Employer Contributions
NHT Employer (3%)
NIS Employer (3%)
Ed Tax Employer (3.5%)
HEART (3%)
Total Employer Cost
Statutory Income
Gross − NIS − Pension

Saves this salary, pension, NIS ceiling, and deduction toggles to the selected employee so future payroll runs use them automatically.

📅 Pay Day & Reminders
🏢 Employer Statutory Registration

Your own company's TRN and statutory employer numbers — printed on pay advices and remittance/PAYE report PDFs so they're ready to file with TAJ/NIS/NHT/HEART without having to add them by hand each time.

⚖️ Minimum Wage Check

Jamaica's national minimum wage rises by law periodically (currently J$17,000/week for a 40-hour week, effective July 1, 2026 — verify against the latest Ministry of Labour order). Adding or editing a Full-time employee below this weekly equivalent shows a warning — it never blocks saving. Part-time and Contract aren't checked, since actual hours worked aren't tracked here.

📜 Statutory Rate History

NIS, NHT, Education Tax, HEART, and PAYE rates/thresholds change periodically by law. Payroll runs use the version in effect on the pay period's start date — this is what makes running a past/missed period retroactively accurate instead of applying today's rates to old pay. The list below is a best-effort seed compiled from public TAJ/NIS/MOF figures — please verify against official notices before relying on it for filing, and add earlier versions here if you ever need to run payroll from before April 2022.

💵 One-Time Contract Payments

For a single freelance or contract job — a quick payment record with no NIS/NHT/Education Tax/PAYE withheld, since the payee files their own taxes. Doesn't require setting up an employee profile. If you're paying the same person regularly, add them as an Employee with employment type "Contract" instead — that gets them into Payroll Run and pay-history tracking.

Payroll Run — Your Employees
Reports
Your data only · filter by date then download
DATE RANGE:
or to
Revenue
Expenses
🔐 Team Access
Give bookkeepers, accountants or staff their own login with only the access they need
NameEmailRoleAccessStatusActions
⚙️ Settings
Your plan, subscription status, and upgrade options
Current Plan
Upgrade Your Plan
Accountaja doesn't charge your card automatically — tap Request Upgrade below and our team will follow up with an invoice to activate it.
🎓 Training
Learn Accountaja at your own pace — check off each step as you go
0% complete
Your progress
0 of 0 steps completed
Work through each module below at your own pace. Tap Try it to jump straight to that part of the app, then come back and check the step off. Your admin can see your overall progress from the Super Admin panel.
🌟 Partner Certification
Learn how to refer Accountaja with confidence, then get certified as an Accountaja Alliance Strategist
0% complete
Your progress
0 of 0 steps completed
This track is separate from Accountaja Essentials — it's about referring the software to other businesses, not using it day-to-day. Every Accountaja account already has its own referral link and code (find yours under Profile) — this certification is proof you know how to use it well.
💰 Commission Tiers & Your Earnings
Commission is recurring — paid every month a business you referred stays on a paid plan, not a one-time bonus. Growth is $31.99/mo, Business is $75/mo.
TierBusinesses ReferredCommissionPer Growth ReferralPer Business Referral
🖥️ POS Terminal
No session open
🟢 Online ● Register Closed
🏷️ POS Products
Manage your product catalogue
🧾 Sales History
All POS transactions
💵 Cash Register
Session management
Session History
🧑‍💼 Manage Cashiers
Staff who can be identified as the cashier when a register session opens
Cashier Performance
🏷️ Discounts & Promotions
🖨️ Print Setup
Configure receipt printing for this device
Detected Device
Auto-detected from this browser. Printing setup is saved per-device, not per-account — each laptop, tablet, or phone you use for checkout needs its own setup.
Receipt Paper Size
Match this to what's loaded in your printer. It controls the on-screen receipt preview, the print layout, and the PDF page size.
Print Method
Guidance for Your Setup
Prints a small sample receipt using your current settings above, so you can confirm everything works before relying on it at checkout.
🚛 Pay Advice
Trip-based pay advice · Trucking & Haulage
Company & Period
Employee Details
Trip Earnings
No. of Trips Destination Rate Per Trip (JMD) Total Amount
Trip Total: $0
Other Deductions
Statutory Settings
NIS 3% · NHT 2% · Education Tax 2.25% of Statutory Income · PAYE (threshold $1,902,360/yr)
NET PAY
$0
Enter trips above
Earnings
Trip Total (Gross)$0
Statutory Deductions
Toggle deductions on/off:
NIS (3%)
NHT (2%)
Education Tax (2.25%)
PAYE Income Tax
NIS (3% · ceiling applied)$0
NHT (2%)$0
Education Tax (2.25% of S.I.)$0
PAYE Income Tax$0
Other Deductions
Salary Advance / Loan$0
Other Deductions$0
Total Deductions $0
NET PAY $0
💾 Saved Pay Advices
No saved pay advices yet.
🗓️ Weekend & Rest-Day Pay Calculator
Flexible work arrangements — dynamic weekly schedules, weekend & rest-day premiums
Each employee's work days and rest day can change week to week, so set this week's assigned schedule below, then enter the hours actually worked each day. Standard hours are 40/week — scheduled hours within that (weekday or weekend) pay at the regular rate, all scheduled hours beyond 40 pay Time-and-a-Half, and any hours worked on an employee's designated rest day (or a Public Holiday) are Double Time regardless of the 40-hour threshold. This is a calculation aid based on the rules configured here — confirm your setup against current Ministry of Labour guidance or a Jamaican labour attorney before relying on it for compliance.
Employee & Rate
Select an employee to estimate their hourly rate from salary ÷ 40 and load their standard work days from Payroll & HR, or enter details manually.
This Week's Schedule
Defaults to the employee's Standard Work Days set on their profile in Payroll & HR (Mon–Fri if none is on file) — change any of these below to match what they actually worked this specific week.
DayAssigned StatusHours WorkedHoliday