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/Statutory Challan — entity reference
REFERENCE · Last reviewed

Statutory Challan — entity reference

A statutory deposit for a payroll period — the PF, ESI, PT, salary-TDS or LWF payment that clears the company-level liability payroll posting accumulated. It is company-level and period-level, not per employee; for per-employee withholding use PayrollRunComponentLine or PayrollRunDetail. The salary-TDS challan can be drafted from a payroll run, which sums TDS across every POSTED run detail of the period (a period may carry several runs) and is idempotent per company and period: it refreshes a Pending draft's amount, and reports rather than alters an already-deposited challan. Posting writes a two-line journal, Dr the statutory payable control / Cr Bank, then sets Status to Paid and stamps PaidDate and GLId. The quarterly salary TDS return picks up only challans of type TDS whose Status is exactly Paid, and cites their BSR code, challan serial and paid date as the CIN.

Fields

FieldLabelTypeRequiredWhat it does
AmountAmountCurrencyThe sum being deposited, and the exact figure posted to the journal — the Dr to the payable control and the Cr to bank both use it. When drafted from a payroll run it is the total TDS over every POSTED run detail of the period; edited afterwards it is taken at face value, since posting does not re-check it against what payroll actually withheld. Posting refuses a zero or negative amount.
BankGLAccountIdBankGL AccountLookup → GLAccountThe bank account credited by the deposit.
BsrCodeBSR CodeTextThe receiving bank branch's seven-digit BSR code — the first part of the CIN that identifies the deposit to the tax department. The quarterly salary TDS return copies it onto its challan annexure, and its checklist counts any challan missing the BSR code, challan serial or tender date as incomplete.
ChallanNumberChallan NumberTextThe bank or portal reference for the deposit. For salary TDS it is the legacy fallback for the challan serial: the quarterly return uses ChallanSerial when present and otherwise takes the first ten characters of this value.
ChallanSerialChallan SerialTextThe bank's challan serial number, the third part of the CIN alongside the BSR code and the deposit date. When blank the return falls back to a truncated ChallanNumber, which will not match the tax department's records unless that field happens to hold the serial.
CreatedByIdCreated ByLookup → UserAccountYes
CreatedDateTimeCreated DateDateAndTimeYes
GLIdGLLookup → JournalThe journal produced when the challan was posted. It doubles as the posted flag: a challan carrying a journal is refused a second post, and the salary-TDS draft routine treats it as already deposited and will not refresh its amount.
IdIdGuidYes
LabelLabelText
ModifiedByIdModified ByLookup → UserAccountYes
NameNameText, uniqueYes
OwnerIdOwnerLookup → UserAccountYes
PaidDatePa DateDateThe deposit date, which drives the journal date when the challan is posted — if blank at posting time, today's date is used and stamped back onto the record. It also becomes the tender date on the quarterly return's challan annexure, so an incorrect date here misstates whether the deposit was late.
PartnerAccountIdPartner AccountLookup → Account
PayableGLAccountIdPayableGL AccountLookup → GLAccountThe statutory payable control account to debit. Optional: when blank, posting resolves the control from StatutoryType, and only fails if no control account is configured for that type on the company. Setting it explicitly overrides that resolution.
PayrollPeriodIdPayroll PeriodLookup → PayrollPeriodThe payroll period whose liability this deposit clears, and the key that makes the salary-TDS challan idempotent — one challan per company and period, even where the period carries several runs such as off-cycle or correction runs. The return generator also groups deducted-detail rows to a challan through this period.
RecordTypeIdRecord TypeGuid, hidden
StatusStatusPickListThe deposit's lifecycle. In practice only two values are produced by code: a drafted or newly created challan is Pending, and posting sets it to Paid. The quarterly salary TDS return picks up only challans whose status is exactly Paid, so a challan sitting on any other value is invisible to return filing. Values: Draft, Paid, Reconciled.
StatutoryTypeStatutory TypePickListPF, ESI, PT, TDS or LWF. More than a label: when PayableGLAccountId is not set, posting resolves the control account from this value (PF to PfPayable, ESI to EsiPayable, PT to ProfessionalTaxPayable, TDS to TdsSalaryPayable, LWF to LwfPayable), falling back to the general Payroll Payable control for anything else — including Gratuity, which the picklist offers but posting has no dedicated control for. It is also the filter the salary TDS return uses to find deposit challans. Values: PF, ESI, PT, TDS, LWF, Gratuity.
UIPropsUI PropsText
UpdatedDateTimeModified DateDateAndTimeYes

Actions

ActionLabelTypeWhat it does
CloneCloneServerAction (Clone)Create a copy of this record
DeleteDeleteDeleteDelete this PayrollStatutoryChallan.
DeleteEntityDeleteDeleteDelete
DeleteHeaderDeleteDeleteDelete
EditEditEditEdit this PayrollStatutoryChallan.
EditEntityEditEditEdit
EditInLineEditEditInlineEdit
NewNewNewCreate a PayrollStatutoryChallan.
PostChallanPost ChallanServerAction (PostChallan)Invoking it saves the record and returns without writing a journal or changing Status. The posting logic itself exists in the platform and is exercised by tests, but the only routes that reach it today are the payroll run's own prepare/post actions. Do not tell a user that pressing this posts the challan.
ViewViewViewView this PayrollStatutoryChallan.

Lookup filters

FilterLookup fieldNotes
PartnerAccountFilterPartnerAccountId