Building Mutasi-Scraper: Lessons Learned from Automating Bank Transaction Scraping

When I started building mutasi-scraper back in 2022, I didn’t realize it would become one of my most impactful open-source projects. The idea was simple: automate the tedious process of checking bank transactions for payment verification. But as with most “simple” ideas, the implementation was anything but.

The Problem

Indonesian SMEs face a unique challenge. Unlike businesses in developed markets, many still rely on manual bank transfers for payments. Every day, business owners or their staff have to:

  1. Log into multiple internet banking portals
  2. Navigate through security measures
  3. Check transaction history
  4. Manually verify payments against orders
  5. Update their systems accordingly

This process takes hours and is prone to errors. While payment gateway APIs exist, they’re often too expensive for small businesses.

The Solution

Mutasi-scraper automates this entire workflow using browser automation with Puppeteer. It logs into internet banking accounts, navigates the UI, extracts transaction data, and provides it in a clean, structured format.

Technical Challenges

Challenge 1: Different Banks, Different UIs

Each bank has its own internet banking interface. BCA’s UI is completely different from BRI’s, which is different from Mandiri’s. I had to write custom logic for each bank while maintaining a consistent API.

Challenge 2: Security Measures

Banks rightfully implement various anti-bot measures:

  • CAPTCHAs (solved using Paddle OCR)
  • Token-based authentication
  • Session management
  • Rate limiting

Challenge 3: UI Changes

Banks frequently update their interfaces. A change in a single CSS class can break the entire scraper. I built the system to be resilient and easy to update.

Key Learnings

  1. Start with one use case: I began with just BCA before expanding to other banks
  2. Document everything: Good documentation is why people actually use the tool
  3. Community feedback is gold: Users report issues and suggest features I never thought of
  4. Maintain actively: A scraper needs constant maintenance

The Impact

Today, mutasi-scraper is used by hundreds of businesses across Indonesia. It’s become infrastructure that businesses rely on daily. That’s both humbling and motivating.

The project taught me that the best software solves real problems for real people. It doesn’t have to be flashy or use the latest framework. It just has to work.


Want to try it? Check out mutasi-scraper on GitHub or install via npm: npm install mutasi-scraper