TaxPilot PH BIR-Compliant DAT File Generator
TaxPilot PH converts Excel and CSV files into BIR-compliant SLSP, QAP, SAWT, and MAP .DAT files in seconds. A multi-tenant SaaS built for Philippine accountants, bookkeepers, and SMEs.


TaxPilot converts Excel and CSV into BIR-compliant .DAT files for Philippine tax submission.
SLSP, QAP, SAWT and MAP formats, built multi-tenant so an accounting firm handles many client companies from one deployment.
What was in the way
BIR submission formats are exact.
A .DAT file is not a flexible export. It is a fixed specification with defined field positions, lengths and separators, and a file that is almost right is rejected. There is no partial credit and no helpful error message pointing at line 412.
Accounting staff were building them by hand from Excel. That is slow, and worse, it is silently error-prone. A misaligned column produces a file that looks fine, submits, and fails, usually near a deadline, usually with no clear indication of which of four hundred rows caused it.
The deeper problem is that this work is repetitive and high stakes at the same time, which is the worst combination for human error. The hundredth file gets the same attention as the first only in theory.
Six parts, each with a reason
Upload to .DAT in one step
Users upload Excel or CSV and the application outputs correctly formatted SLSP, QAP, SAWT and MAP files ready for submission.
The transformation is the product. Everything else on the page exists to support it.
Why it matters as a reference
Most integration work is against APIs that tolerate small mistakes. A malformed field gets a 400 with an explanation, and you fix it.
Compliance output does not work like that. The receiving system is a government one, it does not negotiate, and the feedback loop is slow and unhelpful.
If your project involves matching an external specification exactly, whether that is a government format, an EDI feed or a partner import, this is the closest example of how I approach it.
Format compliance as the core requirement
The whole value is matching a published government specification exactly, field by field.
This is the opposite of a feature you iterate towards. Ninety-five percent correct is zero percent useful, because the file is rejected either way. So the implementation is written against the specification rather than against sample files, and validated before output rather than after submission.
Google OAuth sign-in
Removes password management for a professional user base that already lives in Google Workspace.
Validation before output, not after rejection
Problems are surfaced against the uploaded spreadsheet, in terms the accountant recognises, before a file is generated.
Telling someone their file was rejected is useless. Telling them row 87 has a TIN with the wrong number of digits is actionable, and it moves the error discovery from the government portal near a deadline to the upload screen with time to fix it.
Multi-tenancy
Built as SaaS so an accounting firm handles multiple client companies with isolated data rather than separate installations.
An accounting firm is the real customer here, not a single business. One firm files for dozens of companies, and separate installations would mean dozens of upgrades every time the specification changes.
The engineering underneath
Custom PHP MVC with MySQL and a Tailwind interface.
Custom MVC rather than Laravel, deliberately. The application is narrow and well defined: upload, validate, transform, download. A framework would have added weight and a dependency surface for a codebase whose entire job is one transformation done exactly right.
The other reason is maintenance. This has to keep working when the BIR changes a specification, and the change may land with someone other than me. A small readable codebase where the format logic lives in one obvious place is easier to hand over than a framework application where it is distributed across service classes.
Format definitions are kept separate from the transformation code, so a specification change is an edit to a definition rather than a rewrite.
PHP with a custom MVC architecture, MySQL, Tailwind CSS, Google OAuth. Multi-tenant. Deployed on its own subdomain.
See it live
TaxPilot PH BIR-Compliant DAT File GeneratorThe live site · taxpilot.deeve.infoHire me for this
Full-Stack Web DevelopmentFrom $14/hrAPI & IntegrationsFrom $14/hrPHP & Laravel Source CodeFrom $14/hrProjects like this

Premier Metrics, Admin Dashboard
The office dashboard behind a mobile timer app. React and TypeScript on Vite with Supabase and Vercel: monthly...

Premier Timer, iOS and Android App
Taking over from a departing programmer: an unfinished React Native app rebuilt and shipped to the App Store...

Deeve Technologies Portfolio, Next.js Rebuild
This site: my portfolio rebuilt from a custom WordPress theme onto Next.js 16, React 19 and Supabase, with...
I build software, and I measure whether it works.
The same questions I research are the ones I ask on client builds: is it reliable, is it fast, is it easy to use, and is it secure. Those four drove satisfaction in my ICT portal study, and they shape how I scope and test every project.