Billing & Platform
}: that prefix also carries signup, billing and widget endpoints, which belong to the platform group.
| Controllers | 8 |
| Endpoints | 18 |
| Tables | 35 |
| Screens | 2 |
| API reference | /api/ — group billing-and-platform |
| OpenAPI spec | /openapi/billing-and-platform.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/billing/**/api/webhooks/**/api/admin/**/api/system-admin/**/api/public/billing/**/api/public/signup/**/api/public/altcha/**/api/public/chatwoot/**
Controllers
| Controller | Base path | Endpoints | GET | POST | PUT | PATCH | DELETE |
|---|---|---|---|---|---|---|---|
| BillingController | /api/billing | 2 | 1 | 1 | — | — | — |
| BillingWebhookController | /api/webhooks | 1 | — | 1 | — | — | — |
| DemoDataController | /api/system-admin/demo-data | 3 | 1 | 2 | — | — | — |
| PublicAltchaController | /api/public/altcha | 1 | 1 | — | — | — | — |
| PublicBillingController | /api/public/billing | 1 | 1 | — | — | — | — |
| PublicChatwootController | /api/public/chatwoot | 1 | 1 | — | — | — | — |
| PublicSignupController | /api/public/signup | 2 | — | 2 | — | — | — |
| TenantAdminController | /api/admin/tenants | 7 | 2 | 2 | 1 | 2 | — |
Across the module: 7 GET, 8 POST, 1 PUT, 2 PATCH.
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 |
|---|---|---|---|
| BillingSubscription | billing_subscription | 14 | — |
| BillingWebhookEvent | billing_webhook_event | 9 | — |
| Bonus | bonus | 8 | Yes |
| CompanyProfile | company_profile | 20 | Yes |
| CrmPicklistItem | crm_picklist_item | 11 | Yes |
| CrmSettings | crm_settings | 12 | Yes |
| DeductionType | deduction_types | 10 | Yes |
| DeMinimisBenefitType | de_minimis_benefit_types | 12 | Yes |
| Department | department | 4 | Yes |
| Employee | employee | 24 | Yes |
| EmployeeDeduction | employee_deductions | 12 | Yes |
| LeaveBalance | leave_balance | 2 | Yes |
| LeaveRequest | leave_request | 8 | Yes |
| LeaveRequestType | leave_request_type | 3 | Yes |
| OvertimeRequest | overtime_request | 6 | Yes |
| PagibigContributionRate | pagibig_contribution_rates | 6 | — |
| Payroll | payroll | 10 | Yes |
| PayrollApproval | payroll_approval | 3 | Yes |
| PayrollChange | payroll_changes | 6 | Yes |
| PayrollSettings | payroll_settings | 71 | Yes |
| Payslip | payslip | 52 | Yes |
| PayslipDeductionItem | payslip_deduction_items | 4 | Yes |
| PayslipHistory | payslip_history | 8 | Yes |
| Permission | permission | 4 | — |
| PhHoliday | ph_holidays | 7 | Yes |
| PhilhealthContributionRate | philhealth_contribution_rates | 6 | — |
| Position | position | 4 | Yes |
| Role | role | 6 | — |
| SssContributionRate | sss_contribution_rates | 11 | — |
| Tenant | tenant | 11 | — |
| Timesheet | timesheet | 7 | Yes |
| User | users | 11 | — |
| UserLog | user_log | 5 | — |
| WithholdingTaxBracket | withholding_tax_brackets | 7 | — |
| WorkSuspension | work_suspensions | 5 | Yes |
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 |
|---|---|---|
/billing | Billing | system.admin.billing.manage |
/settings | Settings | system.admin.demo.data.manage |
Unauthenticated endpoints
6 endpoint(s) in this module are permitted without a token by PUBLIC_ENDPOINTS in backend/src/main/java/com/motorph/payroll/config/SecurityConfiguration.java.
| Method | Path |
|---|---|
POST | /api/webhooks/{provider} |
GET | /api/public/altcha/challenge |
GET | /api/public/billing/checkout-links |
GET | /api/public/chatwoot |
POST | /api/public/signup |
POST | /api/public/signup/verify |
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/.