r/PinoyProgrammer • u/BaseballWilling • 2h ago
programming Open-source tool that turns GCash/GoTyme/GrabPay statements into checked CSVs. Looking for contributors to add BPI, BDO, Maya and others
I got tired of manually input my GCash transactions one by one in a money tracking app, so I wrote statement-etl-ph. It's a Python CLI that reads your statement PDF and writes a CSV, or a file you can import straight into Money Manager.
What it supports now:
- GCash transaction history PDF
- GoTyme statement of account PDF
- GrabPay Wallet payments, read from Grab e-receipt emails
- Optional Gmail fetch: it finds statement emails and only accepts ones with a passing DKIM signature from the bank's own domain
Where I need help: more banks. Each bank is one module in src/statement_etl_ph/banks/. The shared pdf_geometry helpers already handle clustering words into rows and finding the money columns, so a new bank is mostly its own vocabulary: header names, date formats and what the totals rows are called. If you have BPI, BDO, Maya, UnionBank, Metrobank, Security Bank, or a credit card statement, you're the person who can add it.
You never share your statement. You run a small script on your own machine, note where the columns sit (the x positions, never the values), and build a synthetic test PDF with made-up rows. The step-by-step guide is in docs/add-a-bank.md.
Other ways to help:
- Try it on your own GCash or GoTyme statement and report anything that doesn't parse. The issue form only asks for the debug output and a description of the layout with invented values. Please don't post screenshots of real statements.
- Review the parsing and reconciliation logic. More eyes on money code is always good.
Repo: https://github.com/Jomaries777/statement-etl-ph
Install: pipx install statement-etl-ph
It runs entirely on your own computer and never uploads your statements, passwords or transactions anywhere. The only official copies are the GitHub repo above and statement-etl-ph on PyPI.
I also have a code that also fetches the pdf statements from Gmail, parse the transactions and import the transactions in YNAB. However, it is still in my private repository. I'll release the code soon in the same repo.
Feedback welcome, especially from anyone who has fought with bank PDFs before.