{% extends "base.html" %} {% block title %}Payroll · {{ month_name }} · WageWise Neo{% endblock %} {% block content %}
Payslip
⇓ Download PDF
{% if run.status == 'finalized' %}

🔒 This run is finalized — attendance, OT hours, and bank transfer figures for {{ month_name }} are locked to prevent a mismatch with what may already have been reported to PF/ESI or paid out. {% if run.finalized_at %}Finalized {{ run.finalized_at[:10] }}{% if run.finalized_by %} by {{ run.finalized_by }}{% endif %}.{% endif %} {% if run.revision_count and run.revision_count > 0 %} Last revised {{ run.last_revised_at[:10] if run.last_revised_at else '' }}{% if run.last_revised_by %} by {{ run.last_revised_by }}{% endif %}. {% endif %} {% if is_admin %}Only an Admin can reopen it for correction.{% endif %}

{% endif %} {% if is_admin %} {% endif %} {% if audit_log %}

Finalize / Reopen History

{% for a in audit_log %} {% endfor %}
WhenActionByReason
{{ a.created_at[:16] if a.created_at else '' }} {{ a.action }} {{ a.full_name or a.username or '' }} {{ a.reason or '—' }}
{% endif %} {% if date_warnings %}

⚠ {{ date_warnings|length }} employee(s) have a Date of Joining or Date of Leaving that couldn't be read — treated as if that restriction doesn't apply for this run, so their pay may be wrong until you fix their record:

{% endif %}
Total Gross Earned
₹{{ "{:,.0f}".format(totals.gross) }}
{{ slips|length }} employees
Total Net Pay
₹{{ "{:,.0f}".format(totals.net) }}
bank transfer amount
Total PF (Employer)
₹{{ "{:,.0f}".format(totals.pf_er) }}
Employee: ₹{{ "{:,.0f}".format(totals.pf_emp) }}
Total ESI (Employer)
₹{{ "{:,.0f}".format(totals.esi_er) }}
Employee: ₹{{ "{:,.0f}".format(totals.esi_emp) }}

Employee payslip breakdown

{% for slip in slips %} {% endfor %}
Employee Days Gross Earned PF (Emp) ESI (Emp) PT TDS Net Pay
{{ slip.full_name }}
{{ slip.designation or '' }}
{{ slip.days_worked }} ₹{{ "{:,.0f}".format(slip.gross) }} ₹{{ "{:,.0f}".format(slip.pf_employee) }} ₹{{ "{:,.0f}".format(slip.esi_employee) }} ₹{{ "{:,.0f}".format(slip.pt) }} ₹{{ "{:,.0f}".format(slip.tds) }} ₹{{ "{:,.0f}".format(slip.net_pay) }}
Total — ₹{{ "{:,.0f}".format(totals.gross) }} ₹{{ "{:,.0f}".format(totals.pf_emp) }} ₹{{ "{:,.0f}".format(totals.esi_emp) }} ₹{{ "{:,.0f}".format(totals.pt) }} ₹{{ "{:,.0f}".format(totals.tds) }} ₹{{ "{:,.0f}".format(totals.net) }}

Statutory liabilities this month

PF — Employee deduction₹{{ "{:,.0f}".format(totals.pf_emp) }}
PF — Employer contribution₹{{ "{:,.0f}".format(totals.pf_er) }}
Total PF to remit to EPFO₹{{ "{:,.0f}".format(totals.pf_emp + totals.pf_er) }}
ESI — Employee deduction₹{{ "{:,.0f}".format(totals.esi_emp) }}
ESI — Employer contribution₹{{ "{:,.0f}".format(totals.esi_er) }}
Total ESI to remit to ESIC₹{{ "{:,.0f}".format(totals.esi_emp + totals.esi_er) }}
Professional Tax (state)₹{{ "{:,.0f}".format(totals.pt) }}
TDS (to remit to IT dept)₹{{ "{:,.0f}".format(totals.tds) }}

Due dates: PF by 15th of next month · ESI by 15th of next month · PT by 20th · TDS by 7th of next month

{% if grat_cfg and grat_cfg.process_with_salary and grat_provisions %}

Gratuity Provision This Month

Rate: {{ grat_cfg.provision_rate or 4.81 }}% of Basic+DA  |  Total: ₹{{ "{:,.0f}".format(grat_total) }}

Monthly gratuity provision is enabled. This amount should be set aside (not deducted from employee) as a company liability. Add to your books accordingly.

{% for g in grat_provisions %} {% endfor %}
Employee Basic + DA Years of Service Monthly Provision
{{ g.full_name }}
{{ g.designation or '' }}
₹{{ "{:,.0f}".format(g.basic_da) }} {{ g.years_of_service }} ₹{{ "{:,.0f}".format(g.monthly_provision) }}
Total Provision ₹{{ "{:,.0f}".format(grat_total) }}
{% elif grat_cfg and not grat_cfg.process_with_salary %}

Gratuity is set to At Exit Only mode. No monthly provision is deducted or set aside. View the full gratuity register → Gratuity Register

{% endif %}

OT note: Employees with "In Gross" OT — overtime is included in gross earned, so ESI/PF are calculated on it. Employees with "External" OT — overtime is added directly to net pay, bypassing ESI/PF deductions. Both types appear in the Bank Slip with the correct final transfer amount.

{% endblock %}