What Khaonix verifies in payroll today, which document pairs are available, what a control covers, and how a run works. The product is PayrollCompare AI; the first market is Switzerland.
A letter against the payslip it should have produced. This is the control. It applies to any document that authorises a change to pay: today the salary letter and the termination letter.
Payslip against payslip, before and after a change. This is the comparison. It only makes sense for the document the process produces, so for now it is payslips only; letters are not compared with letters.
Each pair is a defined control, qualified against a frozen test population before it is used on a client's documents. Status as of October 2026.
Annual salary against monthly salary in 12 or 13 instalments, bonus, effective date, employee identity. Verified in the month the change takes effect.
Leaving date, final month's salary, vacation payout, pro rata 13th month, severance and other settlement items against the letter.
Every monetary field on every payslip: same, changed, missing or added. Pairs matched on employee number and name across both sets, independent of system or name order.
Your own letter templates, additional document types and other payslip layouts are added through the same specification and qualification. The method does not change, only the documents.
A control states exactly which fields it evaluates. Anything outside it is reported as not evaluated, never as fine, so coverage is a number you see on every run.
A person only sees what did not verify. Each case shows both documents side by side, the fields compared drawn on the page, both values and the rule that failed.
The review page for one run: the run in numbers, the queue of exceptions, both documents with the compared fields drawn on the page, and the evidence for each rule. Illustrative, with sample documents.
{
"employee_id": "000001",
"period": "2026-10",
"fields": {
"salary": { "letter": 125000.00, "payslip": 9615.38, "status": "SAME" },
"bonus": { "letter": 10000.00, "payslip": 8000.00, "status": "DIFF" },
"period": { "letter": "2026-10-01", "payslip": "2026-10", "status": "SAME" }
}
} // the full record adds page positions and versions
| Employee | Field | Reference | Outcome | Status | Rule |
|---|---|---|---|---|---|
| 000001 | salary | 125,000.00 | 9,615.38 | SAME | ÷ 13 |
| 000001 | bonus | 10,000.00 | 8,000.00 | DIFF | eq |
| 000002 | salary | 98,400.00 | 7,569.23 | SAME | ÷ 13 |
| 000515 | salary | 112,000.00 | UNPAIRED |
The same run as a machine-readable report for the audit trail or a workflow, and as a spreadsheet for everyone else.
The trigger documents and the payslips of one run, as PDF. No system access, no export format to agree, no interface to build.
Khaonix pairs each letter with its payslip, reads both, applies the control and records the evidence for every field.
The exceptions appear on the review page. Verified cases are listed with their evidence, not shown one by one.
One download holds the report, the review pages and a spreadsheet summary. The run is then deleted from the service; unexported runs expire on their own.
Two ways in, for two purposes. The browser interface is for bulk checks: a monthly run, a migration, a baseline, done by a person who uploads a set of documents and reviews the exceptions. In an automated workflow Khaonix is called through the API: the workflow submits the documents of a case or a run, receives the result as JSON, and routes the exceptions. Either way there is no connection to the systems that produced the documents.
Runs as a service hosted in the EU, or on your own servers where your security and compliance requirements ask for it. See Security and privacy.
One payroll month, or a handful of letter-and-payslip pairs, anonymised if you prefer. You see the review page, the evidence and the coverage on your own documents. Then decide what to automate.