xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField SalesCRMRewardsClaimsInventoryProcurementWarehouse ManagementField ServiceServiceSupportTelephony & MessagingFinance & AccountingPayrollExpense ManagementCommercePortalsAnalytics & ReportingData StudioMobile AppSee all products →
PLATFORM
Platform overviewApp BuilderAutomationIntegrationsSecurity & GovernanceChange ManagementDevelopers
SENSE AI
Sense AI overviewSense AssistSense ControlSense VisionAI StudioTrust & governanceIn Claude & ChatGPTUse cases
SOLUTIONS
FMCG & DistributionManufacturing & Dealer NetworksAutomotive & DealershipsPharma & HealthcareConsumer DurablesAgri-InputsBuilding MaterialsService NetworksWarehousing & 3PLFinancial AccountingERP SoftwareIndia GST ComplianceUAE VAT & e-InvoicingSaudi ZATCA & VATAll solutions →
RESOURCES
Knowledge CenterDeveloper & CLIBlogGuidesWhat is xMatix?Company facts
COMPANY
AboutCareersPartnersEventsContactAuthorsLegal
Sign in Request demo
Home/Docs/Entity Reference/Employee — entity reference
REFERENCE · Last reviewed

Employee — entity reference

The HR and payroll configuration record for a person, and a satellite of Resource rather than a replacement for it. Resource stays the canonical person and the universal keying anchor: payroll posting, open items, payslips, expense, leave and attendance all carry ResourceId, and an Employee is never itself a posting key - it resolves to a Resource through Employee.ResourceId, while Resource.EmployeeId is an unrelated plain code string that points at nothing. It carries the HR lifecycle (joining, probation, confirmation, exit, EmploymentStatus of Active/OnNotice/Exited, SettlementStatus of Active/ExitInProcess/Settled) plus payroll configuration, while statutory and bank identity such as PAN, UAN, ESI number, bank account and IFSC live on the Resource; the payroll calculation picks up employees whose PayrollCompanyId or PartnerAccountId matches the run's company, who have a ResourceId, and who are not Exited.

Fields

FieldLabelTypeRequiredWhat it does
BranchIdBranchLookup → BranchYes
BusinessUnitIdBusiness UnitLookup → BusinessUnit
ConfirmationDateConfirmation DateDate
CostCenterIdCost CenterLookupDeclared as a lookup but with no related entity named, so it does not resolve even though a Cost Center entity exists. No payroll or finance service reads the employee's copy of this field.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
DateOfExitDate Of ExitDateThe last day of employment. Posting a full-and-final settlement fills it from that settlement's Last Working Day only when it is still empty, and never overwrites an existing value. Note the seeded validation on this field is inverted: it raises its error when the joining date is earlier than the exit date, which is the normal case, and lets an exit date before the joining date through unchallenged.
DateOfJoiningDate Of JoiningDateYes
DepartmentIdDepartmentLookupIt cannot resolve, and no service reads it.
EmployeeCodeEmployee CodeTextYesThe organisation's own staff number for the person, distinct from the record id. It is also distinct from Resource.EmployeeId, which is a separate free-text code held on the Resource; no code path copies one into the other, so the two can disagree.
EmploymentStatusEmployment StatusPickListValues: Active, On Notice, Exited.
EmploymentTypeEmployment TypePickListYesThe declared engagement category. No first-party service reads it - payroll makes no distinction between a full-time employee, a contractor, a consultant and an intern. Its seeded value list has also drifted from the four values the domain documents, carrying an extra Permanent option and a leftover TEST entry. Values: Full Time, Contract, Consultant, Intern, Permanent.
EsiApplicableEsi ApplicableBooleanDeclares that Employees' State Insurance applies to this person. Configuration of record only - no first-party service reads it, and ESI is deducted because the assigned salary structure carries an ESI component, not because of this flag.
ExpenseAdvanceIdExpense AdvanceLookup → ExpenseAdvanceExpense advances are keyed on the Resource - query ExpenseAdvance by ResourceId instead.
ExpenseClaimIdExpense ClaimLookup → ExpenseClaimExpense claims are keyed on the Resource - query ExpenseClaim by ResourceId instead.
ExpenseVoucherIdExpense VoucherLookup → ExpenseVoucherQuery ExpenseVoucher by its own EmployeeId instead, which is the real link.
GradeIdGradeLookup → GradePoints at the Grade master, but nothing reads the employee's copy. The grade that actually drives grade-based expense-policy limits is the one held on the Resource, so evaluate policy and banding from there rather than from this field.
IdIdGuidYes
KYCDocumentIdKYC DocumentLookup → KYCDocumentA single KYC document pointer, though a person normally has several documents. No first-party service reads or writes it; find a person's documents by querying KYCDocument rather than following this field.
LabelLabelText
LwfApplicableLwf ApplicableBooleanDeclares that Labour Welfare Fund applies to this person. Configuration of record only - no first-party service reads it, so it neither triggers nor suppresses an LWF deduction.
ModifiedByIdModified ByLookup → UserAccountYes
NameNameText, uniqueYes
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountYes
PartnerResourceIdPartner ResourceLookup → PartnerResource
PaymentSalaryDisbursementIdPayment (Salary Disbursement)Lookup → PaymentSalaryDisbursementSalary disbursement records are keyed on the payroll run rather than on an individual, so there is nothing meaningful for this pointer to hold.
PayrollCompanyIdPayroll CompanyLookup → Account
PayslipIdPayslipLookup → Payslip
PayTypePay TypePickListDeclares whether the person is paid monthly, hourly, daily or by piece rate. No first-party payroll code reads it: the calculation always prorates the assigned monthly salary structure by payable days regardless of this value. Values: Monthly, Hourly, Daily, Piece Rate.
PfApplicablePf ApplicableBoolean
PfWageCapOverridePf Wage Cap OverreCurrencyAn employee-specific override of the statutory Provident Fund wage ceiling. Declaration only: no first-party service reads it, so PF is computed from the salary structure's PF component and the statutory rule masters and setting a value here changes nothing.
ProbationEndDateProbation End DateDateWhen probation finishes. The seeded validation requires this date to be on or after Confirmation Date, so confirming someone after their probation window has closed is rejected rather than the other way round.
PtApplicablePt ApplicableBooleanDeclares that Professional Tax applies to this person. Configuration of record only - no first-party service reads it, so clearing it does not stop a PT deduction that the salary structure produces.
RecordTypeIdRecord TypeGuid, hidden
ResourceAvailabilityIdResource AvailabilityLookup → ResourceAvailabilityA single pointer to one attendance record, which cannot represent attendance at all - availability is a per-day series queried by Resource. No first-party code reads the employee's copy of this field.
ResourceCompensationIdResource CompensationLookup → ResourceCompensationA single pointer to a compensation record that payroll never uses. The salary structure that drives the calculation is found by querying ResourceCompensation by ResourceId and taking the latest active row that names a salary structure, so this field is neither read nor kept current.
ResourceIdResourceLookup → ResourceYesThe Resource this record configures, and the identity everything else keys on: payroll posting, open items, payslips, expense, leave and attendance all carry ResourceId, so joins from payroll data to a person go through this field rather than through the Employee id.
SalaryComponentIdSalary ComponentLookup → SalaryComponentSalary components belong to a salary structure, not to a person - read them by querying SalaryComponent for the structure named on the employee's latest active ResourceCompensation.
SalaryPaymentModeSalary Payment ModePickListThe declared disbursement channel for salary. Configuration of record only - no first-party service reads it, and neither the payroll calculation nor the payment path branches on it. Values: Bank Transfer, Cash, Cheque.
SalaryStructureIdSalary StructureLookup → SalaryStructure
SettlementStatusSettlement StatusPickListTracks the exit-settlement pipeline separately from Employment Status, with values Active, ExitInProcess and Settled. Only posting a full-and-final settlement moves it, and it jumps straight to Settled - nothing in first-party code ever writes ExitInProcess, so that value appears only when a user or integration sets it. Values: Active, Exit In Process, Settled.
TaxRegimeTax RegimePickListValues: Old Regime, New Regime.
TdsApplicableTds ApplicableBoolean
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete this Employee.
DeleteRecordDeleteDeleteDelete
EditEditEditEdit this Employee.
EditInLineEditEditInlineEdit
EditRecordEditEditEdit
NewNewNewCreate a Employee.
ViewViewView, inactiveView this Employee.

Validations

ValidationApplies toError messageNotes
Date of ConfirmationConfirmationDate, ErrorConfirmation date cannot be less than Joining DateConfirmation date cannot be less than Joining Date
Date Of ExistDateOfExit, ErrorDate of exist cannot be less than Date of confirmationProbation End Date cannot be less than Confirmation Date
Probation End dateProbationEndDate, ErrorProbation End Date cannot be less than Confirmation Datedate

Lookup filters

FilterLookup fieldNotes
BranchFilterBranchId
PartnerAccountFilterPartnerAccountId