Naarvin reads submitted salary slips from Frappe HR, the HR and payroll app of ERPNext, into its payroll register: each employee's basic pay, allowances, deductions and net pay by month. It uses a read-only Frappe user's API key, reads nothing until someone with payroll access switches the payroll register on, and never writes to Frappe.
What does Naarvin read from Frappe HR?
Three Frappe document types, and only these: Company, for each company's currency and country; Employee, for joining and leaving dates and the employee number; and Salary Slip, for pay. Only submitted slips are read. Drafts and cancelled slips are not.
| Payroll register field | From the salary slip |
|---|---|
| Employee code | The Frappe employee ID (HR-EMP-…), or the employee number field if you choose it |
| Name and department | The employee name and department on the slip |
| Basic, housing, transport, overtime | Earnings rows recognised by component name or abbreviation, in English or Arabic |
| Other allowances | Every other earnings row, added up |
| GOSI employee share | A deductions row named like GOSI, social insurance or تأمينات |
| Deductions and net pay | The slip's total deduction and net pay |
Component names are each company's own, which is why Naarvin recognises them by name. Check the first sync: a basic-pay component with an unusual name lands in other allowances until it is renamed.
How does it relate to ERPNext?
Frappe HR runs on the same framework as ERPNext, and often on the same site. The two are separate connections in Naarvin. ERPNext brings the ledger and can receive approved journals; Frappe HR brings only the payroll register. A Frappe HR connection can link to a company the ERPNext connection already loads, so payroll detail sits next to that company's books.
Which months are read, and how much?
The first sync reads the last 12 months; later syncs read again from the month before the last sync. Each slip counts in the month of its end date, and two slips for one employee in the same month are added together. Frappe returns a slip's earnings and deductions only when the slip is read on its own, so a sync reads at most 5,000 slips. Above that, the sync stops and asks you to import the payroll register as a file for now.
Each month the connection reads replaces only what this connection loaded before, so a cancelled slip disappears with its month. A month imported from a payroll file, or loaded by another connection, is kept, and the sync warns with the month.
Which companies and currencies does it handle?
Every Frappe company the user can read is listed, and each one you choose links to a company in Naarvin with the same currency. A slip in a currency other than its company's is left out and counted in a warning.
Who can switch payroll on, and who sees it?
A new Frappe HR connection reads nothing. Someone who manages connections and may see payroll detail for every company of the connection switches the payroll register on from the connection card, and the change is audited. Afterwards only people with payroll detail access for a company see its lines; sync statistics count lines and warnings name months, never people.
What does the connection not do?
- It never writes to Frappe.
- It does not read nationality, bank accounts or IBANs, the employer's GOSI share, or leave balances.
- It brings no ledger, invoices or payments: those come from the ERPNext connection.
How do you connect Frappe HR?
- Create a read-only user in FrappeGive the user read access to Company, Employee and Salary Slip only, and generate its API key and secret.
- Add the connectionEnter the site address, choose which employee code to use (the Frappe ID, or the employee number if your other payroll files use it), then the key and secret. They are encrypted when saved and never shown again.
- Link the companiesLink each Frappe company to its company in Naarvin, often the one your ERPNext connection already loads.
- Switch on the payroll registerFrom the connection card, by someone with payroll detail access for every linked company.
- Run the first sync and check the componentsCompare one month with the salary register in Frappe, and look for basic pay that landed in other allowances.
Questions people ask
Do we need ERPNext to use the Frappe HR connection?
No. It reads Frappe HR on its own. If you also use ERPNext, both can link to the same company in Naarvin.
Which employee code should we choose?
The one your other payroll files use. If those files carry the employee number rather than the Frappe ID, choose the employee number, so the same person matches across sources.
What if we have more than 5,000 slips in the months read?
The sync stops with a message, because each slip is read on its own. Import the payroll register as a file for those months for now.