The payroll processing calendar entry (monthly by default, also weekly, biweekly or daily) that every payroll document hangs off: runs, adjustments, statutory challans, TDS projections, loan recovery windows and payslips are all scoped by PayrollPeriodId. It is deliberately not the accounting FiscalPeriod — it links to one through FiscalPeriodId, and posting resolves the open FiscalPeriod separately, so the payroll cadence can differ from the ledger calendar. StartDate and EndDate define the calendar-day window the calculation uses for proration and attendance, and PayDate is what the payroll accrual journal is dated with (falling back to EndDate). Status runs Open, Processing, Approved, Paid, Closed, Locked; grain is one row per pay cycle per company, optionally per branch.
Fields
| Field | Label | Type | Required | What it does |
BranchId | Branch | Lookup → Branch | Yes | An optional branch scoping for companies that run payroll separately per location. Nothing in the calculation filters employees by it — it is a dimension for organising and reporting on periods. |
CreatedById | Created By | Lookup → UserAccount | Yes | |
CreatedDateTime | Created Date | DateAndTime | Yes | |
EndDate | End Date | Date | | The last calendar day of the pay cycle. Besides closing the proration window it is the fallback date for the payroll accrual journal when no pay date is set, and a period ending in February switches professional-tax slab computation to its February treatment. |
FiscalPeriodId | Fiscal Period | Lookup → FiscalPeriod | Yes | |
Id | Id | Guid | Yes | |
InputCutoffDate | Input Cutoff Date | Date | | The intended deadline for payroll inputs for this cycle. It is advisory only — no first-party code reads it, and adjustments or declarations entered after it are still picked up by a later calculation. |
Label | Label | Text | | |
ModifiedById | Modified By | Lookup → UserAccount | Yes | |
Name | Name | Text, unique | Yes | |
OwnerId | Owner | Lookup → UserAccount | Yes | |
PartnerAccountId | Partner Account | Lookup → Account | Yes | The company the cycle belongs to. Periods are per company, and the payslip year-to-date rollup only sums over periods of the same company as the run, so a period on the wrong company quietly drops out of those totals. |
PayDate | Pay Date | Date | | The intended salary payment date, and the date the payroll accrual journal is stamped with when the run is posted (falling back to the period end). It does not drive the actual bank payment date, which comes from the payment batch. |
PayrollFrequency | Payroll Frequency | PickList | | The intended cadence of the cycle: Monthly, Weekly, Biweekly or Daily, defaulting to Monthly. It is descriptive — the calculation derives everything from the actual start and end dates, so this value does not itself change proration or how often runs happen. Values: Monthly, Weekly, Biweekly, Daily. |
PeriodName | Period Name | Text | | The human name of the cycle, such as the month and year operators refer to it by. It is free text with no parsing behind it; join on the period record itself rather than matching this string. |
RecordTypeId | Record Type | Guid, hidden | | |
StartDate | Start Date | Date | | The first calendar day of the pay cycle. |
Status | Status | PickList | | Values: Open, Processing, Approved, Paid, Closed, Locked. |
UIProps | UI Props | Text | | |
UpdatedDateTime | Modified Date | DateAndTime | Yes | |
Actions
| Action | Label | Type | What it does |
BulkDelete | Delete | Delete | Delete the selected records. |
Clone | Clone | ServerAction (Clone) | Create a copy of this record |
Delete | Delete | Delete | Delete this PayrollPeriod. |
DeleteRecord | Delete | Delete | Delete |
Edit | Edit | Edit | Edit this PayrollPeriod. |
EditInLine | Edit | EditInline | Edit |
EditRecord | Edit | Edit | Edit |
New | New | New | Create a PayrollPeriod. |
View | View | View | View this PayrollPeriod. |
Lookup filters
| Filter | Lookup field | Notes |
| BranchFilter | BranchId | |
| PartnerAccountFilter | PartnerAccountId | |