PH Statutory
"); } @Bean public GroupedOpenApi payrollApi() { return group("payroll", "/api/payroll", "/api/payroll-changes", "/api/payroll-settings", "/api/payroll-settings-changes", "/api/payroll-transactions", "/api/payslips", "/api/payslip-history", "/api/payslip-templates", "/api/payslip-template-settings", "/api/bonuses", "/api/employee-deductions", "/api/deduction-types", "/api/de-minimis-benefit-types", "/api/reimbursement-requests", "/api/reimbursement-transactions"); } Philippine statutory obligations: contribution tables, withholding tax, and the BIR forms built from them.
| Controllers | 9 |
| Endpoints | 61 |
| Tables | 14 |
| Screens | 9 |
| API reference | /api/ — group ph-statutory |
| OpenAPI spec | /openapi/ph-statutory.json |
URL prefixes
Endpoints belong to this module by URL, exactly as the OpenAPI group defines it in backend/src/main/java/com/motorph/payroll/config/OpenApiConfiguration.java.
/api/sss-contribution-rates/**/api/philhealth-contribution-rates/**/api/pagibig-contribution-rates/**/api/withholding-tax-brackets/**/api/government-forms/**/api/government-filings/**/api/tin-compliance/**/api/ewt-payees/**/api/ewt-transactions/**
Controllers
| Controller | Base path | Endpoints | GET | POST | PUT | PATCH | DELETE |
|---|---|---|---|---|---|---|---|
| EwtController | /api | 8 | 2 | 2 | 2 | — | 2 |
| EwtFormsController | /api/government-forms/ewt | 4 | 4 | — | — | — | — |
| GovernmentFilingController | /api/government-filings | 4 | 2 | 1 | — | — | 1 |
| GovernmentFormsController | /api/government-forms | 8 | 8 | — | — | — | — |
| PagibigContributionRateController | /api/pagibig-contribution-rates | 8 | 3 | 2 | 2 | — | 1 |
| PhilhealthContributionRateController | /api/philhealth-contribution-rates | 8 | 3 | 2 | 2 | — | 1 |
| SssContributionRateController | /api/sss-contribution-rates | 8 | 3 | 2 | 2 | — | 1 |
| TinComplianceController | /api/tin-compliance | 5 | 2 | 1 | 1 | — | 1 |
| WithholdingTaxBracketController | /api/withholding-tax-brackets | 8 | 3 | 2 | 2 | — | 1 |
Across the module: 30 GET, 12 POST, 11 PUT, 8 DELETE.
Tables
Everything this module's controllers can reach through a repository, including through a shared service — so this is the upper bound of what the module touches, not the set of tables it owns. A table appearing under two modules means two modules can read it.
| Entity | Table | Columns | Tenant-scoped |
|---|---|---|---|
| Bonus | bonus | 8 | Yes |
| CompanyProfile | company_profile | 20 | Yes |
| Employee | employee | 24 | Yes |
| EwtPayee | ewt_payees | 11 | Yes |
| EwtTransaction | ewt_transactions | 11 | Yes |
| GovernmentFiling | government_filing | 13 | Yes |
| PagibigContributionRate | pagibig_contribution_rates | 6 | — |
| PayrollSettings | payroll_settings | 71 | Yes |
| Payslip | payslip | 52 | Yes |
| PhilhealthContributionRate | philhealth_contribution_rates | 6 | — |
| SssContributionRate | sss_contribution_rates | 11 | — |
| Timesheet | timesheet | 7 | Yes |
| TinCompliance | tin_compliance | 3 | Yes |
| WithholdingTaxBracket | withholding_tax_brackets | 7 | — |
Screens
Frontend routes gated by a permission this module's endpoints also require — the link between a page and its API is the permission string, not the URL.
| Route | Component | Requires |
|---|---|---|
/contribution-rates | ContributionRates | payroll.sss.rates.manage or payroll.philhealth.rates.manage or payroll.pagibig.rates.manage |
/employees | Employees | hr.employees.view |
/ewt-registry | EwtRegistry | payroll.ewt.manage |
/government-forms | GovernmentForms | hr.employees.manage or payroll.manage |
/holiday-calendar | HolidayCalendar | payroll.holidays.manage or payroll.manage |
/payroll-analytics | PayrollAnalytics | payroll.dashboard.view or payroll.manage or payroll.approve |
/payroll-runs | PayrollRuns | payroll.dashboard.view or payroll.manage or payroll.approve |
/payroll-runs/:id | PayrollRunDetail | payroll.dashboard.view or payroll.manage or payroll.approve |
/tin-compliance | TinCompliance | payroll.tin.compliance.manage |
This page is rebuilt from the source on every docs build by docs-site/scripts/gen-code-wiki.mjs. Editing it has no effect — change the code, or, if what you want to say is prose, write it in docs/.