NaughtyPay
South African payroll: PAYE, UIF, SDL, bank files and SARS outputs.
South African payroll has a lot of rules and not much software that respects them. NaughtyPay runs monthly, fortnightly or weekly pay runs for multiple companies, calculates PAYE, UIF and SDL, and produces payslip PDFs, a bank EFT file for FNB, Standard Bank, ABSA, Nedbank or Capitec, and an Excel journal for the accountant.
Leave follows the BCEA, with a public-holiday-aware working-day count, an approval workflow, and approved unpaid leave flowing into the next run. Employees get a mobile self-service portal for payslips, leave, expense claims and detail changes, with WhatsApp notifications.
Filing outputs cover the EMP201, the bi-annual IRP5/IT3(a) submission for e@syFile, the UIF declaration for uFiling and MIBFA contributions, each with pre-filing validation. The statutory outputs are being verified line by line before general release, which is why this sheet is stamped in build.
- Monthly, fortnightly or weekly pay runs with a calculate, review and finalise workflow.
- PAYE, UIF and SDL calculated per run; SA ID validation derives date of birth and gender.
- BCEA leave with a public-holiday-aware working-day count and an approval workflow; approved unpaid leave flows into the next run.
- Payslip PDFs, an Excel accounting journal and a bank EFT file for FNB, Standard Bank, ABSA, Nedbank or Capitec.
- EMP201, bi-annual IRP5/IT3(a) for e@syFile, UIF declarations for uFiling and MIBFA contribution files, each with pre-filing validation.
- Employee self-service for payslips, leave, expense claims and detail changes, with WhatsApp notifications.
- Payroll summary, leave-liability and journal reports.
| Item | Layer | Component |
|---|---|---|
| 01 | Framework | Python 3.12, Django 5.2 |
| 02 | Database | PostgreSQL |
| 03 | Front end | HTMX, Alpine.js, Tailwind CSS v4; mobile employee self-service portal |
| 04 | Documents | WeasyPrint for payslip PDFs, openpyxl for the accounting journal |
| 05 | Admin | django-unfold |
| 06 | Testing | pytest across the statutory calculation engine |
Integrations
Tell us what to build.
A web app, a mobile app, a platform, an integration nobody else wants to touch. Send the brief, we reply with questions, a scope and a price.