Site icon Efficient Coder

TaxHacker AI Bookkeeping: Automate Invoices, Receipts & Crypto for Freelancers

TaxHacker: How AI Transforms Bookkeeping from Nightmare to Autopilot

Core Question This Article Answers: How can a self-hosted, open-source tool help freelancers and small business owners completely eliminate manual bookkeeping nightmares through AI-powered automation of invoices, receipts, and multi-currency conversion?

The average freelancer or small business owner spends over 100 hours annually on bookkeeping and tax preparation. Hunting down invoices, manually entering data, converting currencies, categorizing expenses—these tedious yet essential tasks devour time that should be spent creating value. Worse still, when dealing with international transactions or cryptocurrency payments, traditional accounting tools either fall short or demand expensive subscription fees.

TaxHacker emerged to solve this real pain point. It’s a completely open-source, self-hostable AI-driven accounting application that automatically recognizes invoices and receipts, extracts key information, converts currencies (including cryptocurrencies), and organizes everything into a structured database. Most importantly, your financial data remains entirely under your control, with no dependency on third-party services.

Why You Need an AI-Powered Bookkeeping Tool

Three fundamental problems with traditional accounting software shaped TaxHacker’s design philosophy.

Problem one: the inefficiency of manual data entry. Every paper receipt, every PDF invoice requires someone to open it, read it, extract merchant names, dates, amounts, tax figures, and then type each detail into the system character by character. This process is not only time-consuming but error-prone—a single misplaced decimal point can throw your entire ledger into chaos.

Problem two: multi-currency management complexity. If your business involves international transactions, you must manually look up historical exchange rates, calculate converted amounts, and record both the original currency and conversion baseline for each transaction. For freelancers accepting cryptocurrency payments, the situation becomes even more challenging: mainstream accounting software simply doesn’t support exchange rate conversions for Bitcoin, Ethereum, or other digital currencies.

Problem three: data privacy and control. Most cloud-based accounting services require uploading financial data to third-party servers, meaning your sensitive information—client lists, revenue details, expense records—sits in someone else’s database. Once a service provider goes bankrupt, raises prices, or changes terms of service, you may face data loss or forced migration.

TaxHacker’s core design philosophy is straightforward: replace manual entry with AI, guarantee data sovereignty through self-hosting, and ensure transparency through open-source code. It doesn’t aim for feature bloat but focuses on solving the most critical pain points for freelancers and small businesses—making bookkeeping simple enough to complete daily rather than postponing until quarter-end or tax deadline.

How AI Automates Invoice Recognition and Data Extraction

TaxHacker’s AI engine handles virtually any type of financial document: supermarket receipts, restaurant bills, service invoices, bank statements, even handwritten receipts. Regardless of document language—Chinese, English, or others—and regardless of currency—dollars, euros, or Bitcoin—the system accurately identifies and extracts key information.

Complete Workflow from Upload to Structured Data

When you upload a receipt photo or PDF invoice, TaxHacker’s processing flow works as follows:

  1. Document preprocessing: The system uses Ghostscript and GraphicsMagick to convert and optimize PDFs, ensuring image quality sufficient for accurate OCR engine recognition.
  2. AI data extraction: Calls your configured LLM model (OpenAI, Google Gemini, or Mistral) to semantically understand document content and extract fields like dates, amounts, merchant names, item lists, and tax amounts.
  3. Automatic categorization: Based on document content and merchant information, the system automatically classifies transactions into preset or custom categories (such as “Office Supplies,” “Travel Expenses,” “Software Subscriptions”).
  4. Item splitting: If an invoice contains multiple items (like a shopping list with office supplies, marketing materials, and employee benefits), the system can split it into independent transaction records, each corresponding to a specific item.
  5. Structured storage: All extracted data saves to a PostgreSQL database, forming filterable, searchable, exportable structured records.

The key to this workflow lies in customizable AI prompts. TaxHacker allows you to modify system-level prompt templates and write dedicated extraction rules for specific fields, categories, or projects.

Real-World Scenario: Cross-Border Freelancer Bookkeeping Challenges

Imagine you’re a cross-border e-commerce seller processing purchase invoices, logistics fees, and platform commission bills from different countries monthly. These documents may contain English, Chinese, Japanese, involving USD, CNY, JPY, and other currencies.

Using traditional methods, you need to:


  • Open each invoice, manually identify and enter merchant names, dates, amounts

  • Look up historical exchange rates, calculate each transaction’s equivalent in your base currency

  • Categorize different expense types into separate Excel spreadsheets

  • Periodically consolidate data to generate financial reports required for tax filing

Using TaxHacker, you only need to:


  • Batch upload all invoices and receipts

  • System automatically identifies languages, extracts data, converts currencies, categorizes and files

  • At month-end, use advanced filtering to screen specific categories or project transactions

  • One-click export to CSV file with all original documents attached, ready for your accountant or tax filing

Time cost drops from 10 hours monthly to under 1 hour, while accuracy dramatically improves.

Why Customizable AI Prompts Matter So Much

Financial document formats and terminology vary enormously across industries. Construction industry quotes may include itemized “Material Costs,” “Labor Costs,” “Equipment Costs”; software company invoices may need to distinguish “One-Time License,” “Annual Subscription,” “Technical Support Fees.” If AI prompts are fixed, the system struggles to accurately extract this industry-specific information.

TaxHacker’s solution is a fully open prompt system. You can modify the following in settings:


  • System-level prompts: Define universal rules for how AI understands and processes all documents

  • Field-level prompts: Write dedicated extraction logic for custom fields (e.g., “extract project number from invoice”)

  • Category-level prompts: Guide AI on how to determine which category a transaction should fall into

  • Project-level prompts: Define different extraction priorities and naming conventions for different projects

For example, if you run a design studio and need to extract project names and urgency levels from client emails, you can create a custom field “Project Urgency” and write a prompt:

Extract the delivery deadline requested by the client from the document. If the document contains words like "urgent," "ASAP," or "as soon as possible," mark as "High"; if a specific date is mentioned and it's less than 7 days away, mark as "Medium"; otherwise mark as "Low".

This flexibility makes TaxHacker not just a bookkeeping tool but a data extraction platform adaptable to any business logic.

Automated Multi-Currency and Cryptocurrency Handling

One of the biggest headaches in global business is currency conversion. TaxHacker comes with a built-in exchange rate database covering 170+ fiat currencies and 14 mainstream cryptocurrencies, using historical exchange rates for conversion—meaning the system queries the rate from the actual transaction date rather than today’s rate.

Why Historical Exchange Rates Are Critical

Suppose you paid 0.5 BTC for server hosting on March 1, 2024. At that time, Bitcoin was approximately 30,000. But if you’re organizing accounts in December 2024 when Bitcoin has risen to 50,000, inflating your costs and deflating your profits.

TaxHacker’s historical rate feature avoids this problem. The system automatically identifies the transaction date, queries the BTC/USD rate from March 1, 2024, and uses it as the conversion baseline. This ensures not only financial data accuracy but also complies with most countries’ tax authority requirements for foreign currency transaction accounting.

Supported Cryptocurrency List

The current version supports exchange rate conversion for these 14 cryptocurrencies:


  • Bitcoin (BTC)

  • Ethereum (ETH)

  • Litecoin (LTC)

  • Polkadot (DOT)

  • Ripple (XRP)

  • Cardano (ADA)

  • Solana (SOL)

  • Dogecoin (DOGE)

  • Binance Coin (BNB)

  • Tether (USDT)

  • USD Coin (USDC)

  • Tron (TRX)

  • Polygon (MATIC)

  • Avalanche (AVAX)

If your business involves other cryptocurrencies, you can expand support by modifying database configurations or submitting feature requests.

Real Application: Remote Team Cross-Border Payroll Management

A startup employs 10 remote workers in the US, China, and India, needing to pay monthly salaries in USD, CNY, and INR, plus freelancer fees in USDT. Traditional bookkeeping process requires:

  1. Manually record each payment’s original currency and amount
  2. Look up exchange rates on payment dates
  3. Calculate each payment’s equivalent in the company’s base currency (assume USD)
  4. Consolidate and generate monthly financial reports

Using TaxHacker, the entire process simplifies to:

  1. Upload bank transfer records and USDT transaction screenshots
  2. System automatically identifies currencies, extracts amounts, queries historical rates, completes conversions
  3. Filter all transactions under “Payroll” category for the current month, one-click export report

Saves at least 3 hours of manual calculation monthly while avoiding accounting discrepancies from exchange rate lookup errors.

Fully Customizable Fields, Categories, and Projects

The biggest problem with standardized accounting software is its assumption that all businesses have identical financial structures. In reality, different industries, sizes, and countries have completely different financial data classification needs.

TaxHacker’s design philosophy is zero assumptions, full customization. The system presets some common categories (like “Office Expenses,” “Travel,” “Software Subscriptions”), but you can delete, modify, or add any categories at any time.

Custom Fields: Excel-Like Flexibility

The custom fields feature lets you add any number of additional columns to transaction records. These fields can be automatically extracted by AI or manually filled.

Application Scenario 1: Law Firm Client Code Management

Law firms need to associate each expense with specific client cases for subsequent client billing. You can create a “Client Case Number” field and write an AI prompt:

Extract the client case number from the invoice or email. Case numbers typically start with "CASE-" or "C-" followed by 6 digits. If not explicitly marked in the document, look for client names and attempt to match known case lists.

The system will automatically extract case numbers from uploaded documents and populate this field. At month-end, you can filter all expenses by client case number to generate client invoices.

Application Scenario 2: E-commerce Seller SKU Tracking

E-commerce sellers need to track product SKUs corresponding to each purchase to calculate actual product costs. You can create a “Product SKU” field to extract from supplier invoices:

Extract product SKU from the invoice. SKUs are typically 8-12 character alphanumeric combinations, possibly marked with "SKU:" or "Item No:". If an invoice contains multiple SKUs, split them into independent transaction records.

This way, each SKU’s purchase cost is recorded separately, ready for direct profit calculations.

Project Management: Financial Isolation for Multiple Business Lines

If you simultaneously operate multiple businesses (like a software product, consulting service, and content subscription), you need to separately account for each business’s revenue and expenses. TaxHacker’s project feature allows you to assign each transaction to a specific project and group by project when filtering and exporting.

Real Case: Independent Developer Product Portfolio Management

An independent developer maintains three SaaS products: A, B, and C. Each product has separate server costs, advertising spend, and customer service expenses. Using TaxHacker, you can:

  1. Create three projects: “Product A,” “Product B,” “Product C”
  2. Define custom cost categories for each project (e.g., Product A needs to track “API Call Fees,” Product B needs to track “Video Storage Fees”)
  3. Upload all expense invoices; the system automatically assigns them to corresponding projects based on invoice content
  4. At month-end, separately export financial reports for all three products to evaluate each product’s profitability

This financial isolation not only aids decision-making (like deciding whether to shut down a loss-making product) but also quickly provides accurate financial data when fundraising or selling a product.

Self-Hosting and Data Privacy: Why This Matters

In the cloud service era, hosting data on third-party platforms seems the obvious choice. But for financial data, this convenience comes with non-negligible risks.

Three Major Risks of Cloud Accounting Services

Risk one: data breach exposure. Financial data is among the most sensitive information for businesses and individuals. If a service provider suffers a hacker attack, internal personnel leak, or government data request, your client lists, revenue details, and supplier information could all be exposed.

Risk two: service interruption or shutdown. Cloud service companies may go bankrupt due to poor management or get acquired by larger companies that change service terms or dramatically raise prices. If all your financial data is stored on these platforms, migration costs can be extremely high—especially when platforms don’t provide complete data export functionality.

Risk three: compliance issues. Certain countries or regions require financial data to be stored on local servers and prohibit transmission abroad. If your cloud service operates in another country, you may violate local regulations, facing fines or other legal consequences.

TaxHacker’s Self-Hosting Solution

TaxHacker provides a complete Docker containerized deployment solution, deployable to your own server, NAS device, or home computer within minutes.

Simplest deployment method:

curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
docker compose up

This command automatically downloads and starts the TaxHacker application container and PostgreSQL database container, completes database migrations, and runs the application at http://localhost:7331.

Production environment custom configuration:

If you need to connect to an existing PostgreSQL database or modify the default port, edit the docker-compose.yml file:

services:
  app:
    image: ghcr.io/vas3k/taxhacker:latest
    ports:
      - "8080:7331"  # Modify external port
    environment:
      - SELF_HOSTED_MODE=true
      - UPLOAD_PATH=/app/data/uploads
      - DATABASE_URL=postgresql://myuser:mypassword@mydb.example.com:5432/taxhacker
    volumes:
      - ./data:/app/data
    restart: unless-stopped

Key Configuration Variables:

Variable Description Example
UPLOAD_PATH Local directory for file uploads and storage ./data/uploads
DATABASE_URL PostgreSQL connection string postgresql://user@localhost:5432/taxhacker
PORT Application port (default 7331) 8080
BASE_URL Base URL for the application http://localhost:7331
SELF_HOSTED_MODE Enable self-hosted mode (auto-login, custom API keys, etc.) true
DISABLE_SIGNUP Disable new user registration false
BETTER_AUTH_SECRET Authentication secret key (minimum 16 characters) your-secure-random-key

LLM Provider Configuration:

Configure in-app or via environment variables:


  • OpenAI: OPENAI_MODEL_NAME and OPENAI_API_KEY

  • Google Gemini: GOOGLE_MODEL_NAME and GOOGLE_API_KEY

  • Mistral: MISTRAL_MODEL_NAME and MISTRAL_API_KEY

Data Ownership and Portability

All TaxHacker data is stored in your own PostgreSQL database. You can backup, migrate, or delete this data at any time without platform restrictions.

The system also supports complete data export functionality. You can:


  • Export filtered transaction records to CSV files

  • Include all original documents (PDFs, images, etc.) when exporting

  • Download complete data archive files for migration to other systems

This design ensures zero vendor lock-in. Even if the TaxHacker project stops maintenance, your data remains fully accessible, ready for migration to other tools or developing your own frontend interface.

Practical Summary and Action Checklist

Core Features at a Glance


  • AI-Powered Invoice Recognition: Upload receipts or invoices, automatically extract dates, amounts, merchants, tax amounts, and more

  • Multi-Currency Auto-Conversion: Support for 170+ fiat currencies and 14 cryptocurrencies, using historical exchange rates for precise calculations

  • Fully Customizable: Custom fields, categories, projects, and all AI prompts

  • Advanced Filtering and Export: Filter by date, category, project, amount, or any condition; export CSV with original documents

  • Self-Hosted Deployment: Docker containerized deployment, complete data control

  • Open Source Transparency: MIT license, publicly auditable code

Five-Minute Quick Start

  1. Deploy the Application

    curl -O https://raw.githubusercontent.com/vas3k/TaxHacker/main/docker-compose.yml
    docker compose up
    
  2. Configure LLM Service


    • Visit http://localhost:7331

    • Go to settings page, enter OpenAI, Gemini, or Mistral API key
  3. Upload Your First Invoice


    • Click “Upload Document”

    • Select a receipt photo or PDF invoice

    • Wait for AI to automatically extract data
  4. Review and Edit Transaction Records


    • View extraction results in transaction list

    • Manually correct or supplement information as needed
  5. Export Financial Reports


    • Use advanced filtering to screen transactions by time period or category

    • Click “Export CSV,” download archive with all original documents included

Local Development Environment Setup

If you want to participate in development or deeply customize TaxHacker:

# Clone repository
git clone https://github.com/vas3k/TaxHacker.git
cd TaxHacker

# Install dependencies
npm install

# Configure environment variables
cp .env.example .env
# Edit .env file, set DATABASE_URL and other configurations

# Initialize database
npx prisma generate && npx prisma migrate dev

# Start development server
npm run dev

Visit http://localhost:7331 to see your locally running instance.

Production build:

npm run build  # Build application
npm run start  # Start production server

Reflections and Unique Insights

Through developing and using TaxHacker, I’ve gained several profound insights.

First, AI’s value lies not in showing off but in solving real pain points. Too many “AI-powered” products treat AI as a gimmick rather than a tool. But with bookkeeping, the pain points are crystal clear: manual entry is too slow, error-prone, and can’t handle complex formats. AI perfectly solves these problems—it doesn’t need to understand your business logic, just accurately extract structured data from images or PDFs. This is AI’s ideal application scenario: tasks with high repetition, clear rules, but low manual operation efficiency.

Second, data sovereignty matters more than feature richness. Many choose cloud services because they’re feature-packed and beautifully designed. But when you realize your financial data sits on someone else’s servers and could lose access anytime due to provider decisions, those fancy features become less important. TaxHacker’s self-hosting design, while sacrificing some convenience (like needing to deploy and maintain yourself), provides complete data control in exchange. This is a more long-term, sustainable solution.

Third, customization capability determines a tool’s lifecycle. A tool that only works with fixed templates is destined to serve only specific scenarios or periods. But if a tool provides sufficient customization—whether fields, categories, or AI prompts—it can evolve as your business grows. This is why TaxHacker doesn’t limit the number of fields you can create or lock down AI prompts. Tools should adapt to people, not people to tools.

Fourth, open source is not just about public code but the foundation of trust. Financial data sensitivity means users must be able to audit tool behavior. If code is closed, you can never be certain whether the application uploads data in the background or contains security vulnerabilities. Open source makes everything transparent—anyone can inspect code, suggest improvements, or even fork their own version. This transparency is something traditional commercial software cannot provide.

Frequently Asked Questions

1. Does TaxHacker support multi-user collaboration?

The current version is primarily designed for individual users and small teams. While you can create multiple accounts on a self-hosted instance, collaboration features (like permission management, approval workflows) aren’t fully developed yet. If your team has these needs, you can submit a feature request on GitHub.

2. What if AI-extracted data contains errors?

The system displays extracted data in an editing interface where you can manually correct it anytime. For frequently incorrect fields, consider adjusting that field’s AI prompt to provide clearer extraction rules or examples.

3. Does it support local LLM models (like Ollama, LM Studio)?

Official documentation mentions “local LLM support coming soon,” but the current version hasn’t implemented this yet. You can follow the project’s GitHub repository for latest updates.

4. Can the database use MySQL or SQLite?

TaxHacker currently only supports PostgreSQL 17+. Due to using some PostgreSQL-specific features, migration to other database systems isn’t currently possible.

5. How do I backup and restore data?

Directly backup your PostgreSQL database and UPLOAD_PATH directory. For restoration, restore the database and file directory, then restart the application. You can also use the in-app export feature to periodically export CSV and original documents as redundant backups.

6. Does TaxHacker comply with tax regulations in various countries?

TaxHacker is a data extraction and organization tool, not providing tax advice or filing services. Specific tax compliance questions require consulting local accountants or tax advisors. The application’s export feature generates CSV formats compatible with most accounting software requirements, facilitating integration with professional tools.

7. How frequently is the project updated? Is there a long-term maintenance plan?

The project is currently in early development stages with relatively frequent updates. Official documentation recommends “starring the project to get notified about new features and bug fixes.” As an open-source project, even if the original author stops maintaining it, the community can continue development.

8. If I don’t understand Docker, are there other deployment methods?

Docker deployment is currently the primary recommendation. If you’re familiar with Node.js and PostgreSQL, you can also directly clone the code repository, manually run npm install and npm run build, then configure database connections. See the “Local Development” section for specific steps.


TaxHacker isn’t designed to replace professional financial software or accountants but to help freelancers and small business owners dragged down by bookkeeping reclaim control of their time. It uses AI to eliminate the most tedious data entry work, uses self-hosting to guarantee data sovereignty, and uses open-source code to provide auditable transparency. If you’re exhausted by monthly bookkeeping work, perhaps give TaxHacker a chance—after all, your time deserves to be spent on more valuable things.

Exit mobile version