Enterprise HR & Payroll

Payroll that holds up
to Pakistan's rulebook.

PrimeForce runs the employee lifecycle end to end and calculates pay against FBR slabs, EOBI, PESSI and SESSI, gratuity, provident fund and Zakat — from effective-dated rate tables, not hand-maintained spreadsheet formulas. Then it posts the journal entries into SAP Business One.

Multi-tenant · Hosted · SQL Server
Every rate table effective-dated. Every run auditable. Every posting traceable.

The statutory regime, built in — not configured in
FBRIncome tax slabs and tax rules, versioned by effective date
EOBIRate history, employee registrations, employer share
PESSI / SESSIProvincial social security, mapped per payroll config
GratuityPolicies, ledgers, in-service withdrawals, clearance checks
Provident FundPolicy, challan, balance, withdrawal, append-only ledger
ZakatA first-class deduction with its own config, not a custom component
Minimum WageWage history, so prior periods still recompute correctly
WithholdingWH agents, monthly FBR challans, annual tax certificates
Modules

One system, from the employee record to the journal entry.

Nine modules on a shared multi-tenant core. Sub-modules are licensed individually, so a company only sees and pays for what its plan includes.

Human Resources

The employee master is the spine of the product. Create and maintain employee records, attach the salary card that drives payroll, and action confirmations, transfers and exits from the Lifecycle Dashboard rather than burying them in a form.

  • Effective-dated salary card — a raise is a new row
  • Around 20 employee sub-records: documents, dependents, education, skills
  • CNIC uniqueness enforced per company
  • Separation types carry gratuity and notice rules
  • Final settlement closes the loop
Explore Human Resources

Organization

Build the company tree, then the job architecture that grades and designations hang off, then the individual positions employees occupy — structure, job architecture and position management as three connected sections.

  • Self-referencing org units, departments, cost centres
  • Versioned job descriptions
  • Pay bands per profile, grade and country
  • Vacancy dashboard — positions with no incumbent
Explore Organization

Payroll

Configure pay components and the formulas that value them, group employees into pay groups with their own policies, then execute a run plan period by period. The largest module in the product.

  • Multi-step formula engine with bound variables
  • Simulate a run, then compare Sim vs Actual
  • Input staging and immutable input snapshots
  • Numbered recalculation history per run
  • Cost-centre splitting at pay-line level
Explore Payroll

Tax & Statutory

Maintain the rate tables Pakistan's regime runs on, register employees with EOBI, administer gratuity and provident fund schemes, and produce the monthly FBR challan and annual tax certificates.

  • Every rate table versioned by effective date
  • Gratuity withdrawal availability calculator
  • Withdrawals net against final settlement
  • YTD override for mid-year joiners
  • Exemption certificates and withholding agents
Explore Tax & Statutory

Leave Management

Define leave types and the policies that grant them, publish holiday calendars and the working week, then process applications against live balances. Accrual runs monthly without anyone touching it.

  • Policy resolution by grade and tenure band
  • Automatic monthly accrual
  • Day-level applications — half-days are exact
  • Year-end carry forward with its own log
  • Encashment protected against double submission
Explore Leave Management

Workflow

A generic approval engine the other modules delegate to. Define steps, participants, triggers and applicability once; any document type that opts in routes through it. People action their queue from My Tasks.

  • Definitions you author, not hard-coded chains
  • Escalation on a timer, every 15 minutes
  • Delegation with automatic expiry
  • Full transition and step-evaluation logs
  • Standalone tasks with progress milestones
Explore Workflow

Service Calls

Field technicians log service calls that post into SAP Business One as service call documents. The only part of the product that captures offline — drafts queue on the device and upload when the connection returns.

  • Offline capture, keyed so nothing duplicates
  • Server-side queue, drained to SAP every 60s
  • Progress re-sync, because SAP users edit remarks
  • Location captured at submit
  • Posting Monitor reads without calling SAP
Explore Service Calls

Reports

Twenty-two built reports across payroll, pay run and leave — including the two that exist for finance rather than HR: Leave Liability and Pay Variance.

  • Pay Register, Pay Summary by Dept, Bank Disbursement
  • Overtime, Deduction Register, YTD Earnings
  • Run Exceptions and Sim vs Actual
  • Leave balance, utilisation, liability, carry forward
  • PDF and Excel export on every report
Explore Reports

Administration

Company admins manage their own users and role grants and configure the SAP connection. Platform staff provision new companies, manage plans and maintain global reference data.

  • Permission catalogue grouped module → sub-module → verb
  • New companies cloned from a complete blueprint
  • SAP B1 config, GL mapping, credit accounts
  • Reference data: countries, provinces, cities, banks
Explore Administration
The payroll run

Six stages. Nothing skipped,
nothing overwritten.

A run plan sets the schedule; a payroll run is one execution against one period and scope. Every stage leaves a record behind, which is what makes the result defensible six months later.

STAGE 1

Stage inputs

Attendance, calendar days, leave, overtime and performance land in separate staging tables — one row per employee per run.

STAGE 2

Simulate

Run the calculation without committing it. The simulation mirrors the real model line for line, so Sim vs Actual is a true comparison.

STAGE 3

Execute

Inputs are snapshotted immutably. Each employee gets one pay line, each pay line its component lines, each component line its cost-centre split.

STAGE 4

Review exceptions

Failures surface as run exceptions instead of silently zeroing a figure. Fix and recalculate — every recalculation is numbered and kept.

STAGE 5

Approve

Multi-level approval with a compliance checklist per run. Mid-period changes are handled as salary slices, not a retroactive overwrite.

STAGE 6

Disburse & post

Payslips issue, a bank file exports in your bank's format, and the GL journal entry posts to SAP Business One against your account map.

Statutory compliance

A rate change is a new row, not an edit.

Minimum wage history, EOBI rates, FBR slabs and tax rules are all versioned by effective date. Change a rate today and last quarter still computes on last quarter's numbers — which is the only way a correction or an audit ever comes out right.

  • PESSI and SESSI held as separate contribution tables, with province mapped per payroll configuration
  • Gratuity withdrawal availability returns completed years, years already withdrawn, years retained for settlement and the resolved monthly basis
  • Withdrawals net against final settlement and refuse deletion once netted
  • Provident fund runs its own chain: policy, challan, balance, withdrawal, append-only ledger
  • Opening entries and YTD overrides absorb balances from whatever you used before
Gratuity withdrawal · availability
Employee EMP-00418
Policy GRAT-STD-2024

Completed years 7.42
Years withdrawn 2.00
Retained for settlement 1.00
Available years 4.42

Monthly basis (resolved) 180,000.00
Available amount 795,600.00

Effective 09-Mar-2026
Status DRAFT → SUBMITTED → APPROVED
Journal entry · run PR-2026-03-HO
Posted to SAP B1 Service Layer
JE 4471    Date 09-Apr-2026

Dr Salaries & Wages CC-HO-001 297,000.00
Dr EOBI Employer CC-HO-001 1,850.00
Dr Gratuity Expense CC-HO-001 15,000.00
Cr Income Tax Payable 21,916.67
Cr EOBI Payable 2,220.00
Cr PF Payable 18,000.00
Cr Gratuity Provision 15,000.00
Cr Net Salary Payable 256,713.33
SAP Business One

Your ledger already exists.
Payroll should post into it.

PrimeForce talks to SAP Business One over the Service Layer. Payroll runs post GL journal entries against account maps you configure per pay component — including SAP's segmented account numbers — and cost-centre splits at pay-line level are what make those entries mean anything to finance.

  • GL account mapping and credit account mapping, per company
  • Field service calls post as SAP service call documents, queued and drained rather than posted synchronously
  • Posting Monitor tracks each document's state and re-syncs SAP progress notes
  • SAP credentials encrypted at rest with AES-256

Running payroll and SAP Business One posting for Sayeed International.

The kill switch
A config flag and encrypted credentials both travel inside a restored database backup. So SAP posting is gated on the connected database name matching a configured value — and if it doesn't match, the server refuses to start rather than starting quietly. A staging box restored from production physically cannot post to your live ERP.
Access control & audit

Authorization that fails closed.

Payroll data is salary data, CNICs and bank accounts. The permission model is the part of this system we would point at first in a security review.

256 permissions, four checks deep

Permissions read Module.SubModule.Verb. After the permission check, three more filters run: is this sub-module in the company’s plan, is this the caller’s own record, and does the payload validate.

Unguarded endpoints are denied

An endpoint nobody remembered to annotate returns 403 and logs a misconfiguration warning. Forgetting to guard something denies access instead of granting it.

Verified at every boot

Startup scans every action for unguarded employee parameters and logs each as a security error, then pushes any newly added permission to every existing company administrator.

Row-level security in the database

SQL Server row-level security with filter and block predicates on 23 leave and payroll-run tables, evaluated against the session's company — below the application, not inside it.

An audit log that can't be rolled back

Audit rows are written on their own transaction, so a failure in the audit sink can never roll back the operation it was recording. Blocked actions leave a row too.

Sessions you can see and revoke

Access tokens last 15 minutes and refresh rotates. Each device holds its own session, listed and individually revocable. Accounts lock after five failed sign-ins.

In development

Multi-factor authentication, single sign-on, and email delivery of payslips and approval notifications are not in the product today — notifications are in-app, and password resets are administrator-initiated. We would rather tell you here than have you find it in a security questionnaire. The mobile app is Android, distributed as a signed APK.

Read the full security summary →

Plans

Scoped per company,
enforced by the software.

Headcount, user seats, branches and the module set are agreed per company — and entitlement is enforced twice over: the navigation hides what your plan does not include, and the API refuses it.

Enforcement is not a billing exercise. Every request is checked against your plan before it reaches any data, and a module you are not entitled to is refused by the API — not merely hidden from the menu.

Enforcement order, per request
1 Authenticated? JWT
2 Password change due? middleware
3 Has permission? Module.Sub.Verb
4 Module in your plan? entitlement
5 Own record? ownership
6 Payload valid? validation

any failure → 403, logged

Scoped per company

Headcount, user seats, branches and the module set are agreed per company and written into your plan. Nothing is bundled that you will not use.

Two independent checks

Permission asks whether a user may do something. Entitlement asks whether your plan includes it at all. Both must pass — an administrator with every permission still cannot reach a module the plan does not cover.

Caps are counted, not trusted

Creating a user or an employee counts your current total against the plan limit first and refuses at the ceiling. No limit means unlimited.

Platform

For the person in the room who asks what it's built on.

Backend ASP.NET Core on .NET 10 C#, split across API, application, domain and infrastructure
Database Microsoft SQL Server Row-level security, session context and filtered indexes used directly
Frontend React 19 · TypeScript TanStack Query and Table, React Hook Form with schema validation
Scheduled work Background job engine Leave accrual, workflow escalation, delegation expiry, SAP drain and sync
Tenancy Multi-tenant, shared database Company ID on every row, applied automatically on save
Documents PDF and Excel Payslips can be password-protected, CNIC by default
Mobile Android The same application, packaged and distributed as a signed APK
Hosting Hosted by us Windows and IIS behind Cloudflare, HTTPS only
Book a demo

Bring one real
payroll period.

The fastest way to judge this is to watch it calculate a month you already know the answer to. Bring a period you've closed, and we'll configure the components, run it, and show you the variance against your own figures.

  • Your pay components and formulas, configured live in the session
  • The statutory stack applied — FBR, EOBI, provincial social security, gratuity, PF
  • A journal entry against a sample SAP Business One account map
  • An honest scope conversation about what we don't do yet
Please tell us your name.
Please enter a valid work email.

We'll reply within one business day to arrange a session.