xMatix
Sign in Request demo
xMatix
PRODUCTS
SalesField Sales & SFACRMRewardsClaimsInventoryProcurementWarehouse 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
Auto DMSConsumer Goods DMSSales Force Automation (SFA) 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/Payroll Run — entity reference
REFERENCE · Last reviewed

Payroll Run — entity reference

One month's payroll for one company: the header record that drives the whole payroll cycle through its actions. Project TDS refreshes the month's salary-tax projection, Calculate builds one Payroll Run Detail per employee with the component lines behind it, Generate Payslips creates Draft payslips, Post writes the accrual journal and one Payroll Payable open item per employee, Generate Payment builds a Draft salary payment batch, and Prepare TDS Challan drafts the period's salary-TDS deposit. Status is the run's lifecycle stage and is moved by these actions and by the approval process; Payroll Posting Status and the GL link are the proof that the accrual journal exists. Recalculating replaces the previous pass and is refused once the run is posted or one of its payslips is published. Nothing reopens a posted run: reversing its journal in Finance does not clear the GL link, so corrections go into a later period as payroll adjustments.

Fields

FieldLabelTypeRequiredWhat it does
ApprovalStatusApproval StatusPickListMirrors the approval process outcome on this run: Pending, Approved or Rejected, cleared on recall. Written by the approval bridge, not by the payroll actions. A final approval also posts the run's accrual unless the run is already posted.
BranchIdBranchLookup → BranchBranch dimension written onto the accrual journal, its lines and the Payroll Payable open items, and used for the bank journal when the batch is paid. Limited to branches of the selected company and defaulted on save from the creating user's default branch. It does not filter which employees are paid.
BusinessUnitIdBusiness UnitLookup → BusinessUnitBusiness unit stamped onto the Payroll Payable open items raised at posting. It is on no seeded form and does not reach the journal lines or the employee selection.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
GLIdGLLookup → JournalThe payroll accrual journal written by Post (or by final approval). While it is set the run counts as posted, so Post and Calculate are both refused, even if Payroll Posting Status was changed by hand.
IdIdGuidYes
ModifiedByIdModified ByLookup → UserAccountYes
NameNameTextYesThe run number. Filled automatically on save by the Payroll Run Name Setting (series PR, the month and year, and a six-digit counter), and used as the document number on the accrual journal, on each employee's Payroll Payable open item and in the payment batch name.
OwnerIdOwnerLookup → UserAccountYes
PartnerAccountIdPartner AccountLookup → AccountThe company whose payroll this is. Filled on save from the creating user's default company when left blank, and limited to partner accounts. The calculation picks employees whose Payroll Company or company matches it; the Payroll Payable control account, the salary bank account and the professional-tax slabs are all resolved under it. A run with no company calculates nobody and cannot generate a payment.
PaymentBatchIdPayment BatchLookup → PayrollPaymentBatchThe salary payment batch that paid this run. Set only when that batch is paid, so it stays empty while a generated batch is still Draft.
PayrollPeriodIdPayroll PeriodLookup → PayrollPeriodThe pay cycle. Its start and end dates set the calendar days for proration and the window for unpaid leave, its pay date (or end date) dates the accrual journal, and it selects the period's payroll adjustments and TDS projections. Without it a run calculates with no proration, adjustments or salary TDS, posts on today's date, and cannot prepare a TDS challan.
PayrollPostingStatusPayroll Posting StatusPickListWhether the accrual journal exists. New runs start at NotPosted, the calculation leaves it there and Post sets Posted. Failed and Reversed are never set by the system: reversing the accrual journal in Finance leaves this field and the GL link unchanged. Values: Not Posted, Posted, Reversed, Failed.
PeriodPeriodPickListYesThe month the run settles, chosen from January to December. It labels the run; the dates the calculation actually uses come from Payroll Period, so keep the two consistent. Values: January, February, March, April, May, June, July, August, September, October, November, December.
ProcessedResourcesProcessed ResourcesNumberNumber of employees who got a Payroll Run Detail in the last calculation.
RecordTypeIdRecord TypeGuid, hidden
SkippedResourcesSkipped ResourcesNumberNumber of employees considered but not calculated in the last pass: no active Resource Compensation naming a salary structure, or a structure with no active component lines. Chase these before posting.
StatusStatusPickListYesThe run's lifecycle stage. Calculate sets Calculated, Post sets Posted, Generate Payment sets PaymentGenerated and paying the salary batch sets Paid. When the shipped approval process is active, submission sets Pending Approval, a rejection returns the run to Review, a recall to Draft, and final approval posts the run. Inputs Loaded, Closed and Reversed are never set by the system. The field can also be edited by hand, which changes no figures and posts nothing. Values: Draft, PendingApproval, Inputs Loaded, Calculated, Processed, Review, Approved, Posted, Payment Generated, Paid, Closed, Reversed.
SubscriptionKeySubscription KeyGuid, hiddenYes
TotalNetPayTotal Net PayCalculated (calculated)Sum of net pay on the run's Payroll Run Detail rows, set by the last calculation. Posting and payment do not change it.
TotalResourcesTotal ResourcesNumberNumber of employees considered by the last calculation: every employee of the run's company who is linked to a person record and is not Exited. Compare it with Processed Resources and Skipped Resources.
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
BulkDeleteDeleteDeleteDelete the selected records.
CalculateRunCalculateServerAction (CalculatePayrollRun)Projects TDS, then replaces the run's previous calculation with a fresh one: one Payroll Run Detail and its component lines per employee, adjustments for the period, and one installment for every active loan or advance. Sets Status to Calculated. Refused when the run is posted or one of its payslips is Published.
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete
DeleteRecordDeleteDeleteDelete
EditEditEditInlineEdit
EditListRowEditEditEditListRow
EditRecordEditEditEdit
Form16Form 16ServerActionInactive. Form 16 certificates are issued from the Tax Center and printed from the certificate (Print Form 16), not from the run.
GeneratePaymentBatchGenerate PaymentServerAction (GeneratePaymentBatch)Builds a Draft salary payment batch with one line per employee with positive net pay, paying from the company's default bank account (or its only bank account), and sets Status to PaymentGenerated. Requires a posted run. It does not check for an existing batch, so each click creates another batch.
GeneratePayslipsGenerate PayslipsServerAction (GeneratePayslips)Creates one Draft payslip for every Payroll Run Detail that does not have one yet. Running it again only fills gaps.
NewNewNewNew
PostPayrollPost PayrollUIActionInactive screen-only action with no server behaviour. Use Post instead.
PostRunPostServerAction (PostPayrollRun)Posts the payroll accrual journal (debit expense, credit deductions and statutory payables, credit Payroll Payable per employee), raises one Payroll Payable open item per employee with positive net pay, and sets Status and Payroll Posting Status to Posted. Needs calculated lines, a Payroll Payable control account for the company, and GL mappings on every component used.
PrepareSalaryTdsChallanPrepare TDS ChallanServerAction (PrepareSalaryTdsChallan)Creates or refreshes the period's salary-TDS challan from the TDS on every posted run detail of the same company and period. A challan that is already paid is left alone and the difference is reported.
PrintPrint registerPrintPrints the Payroll register template (one line per employee, statutory deductions, net pay).
ProjectTdsProject TDSServerAction (ProjectTds)Recomputes the month's salary-TDS projection for every TDS-applicable, non-exited employee of the run's company, using the run's Payroll Period. Does nothing when the run has no period.
PublishPayslipsPublish PayslipsServerAction (PublishPayslips)On a posted run: renders each payslip from the Payslip print template, stores the PDF on the payslip, sets it Published and notifies the employee by push and email. Skips payslips that already have their PDF.

Lookup filters

FilterLookup fieldNotes
BranchFilterBranchIdBranchFilter
PartnerAccountFilterPartnerAccountIdPartnerAccountFilter