Sefism is free for learners. We are here to help you grow, one step at a time.Join for free
Sefism.
Web

Freelancer Time, Invoice and Multi-Currency Income Tracker

A web app for freelancers paid in foreign currency that tracks time per client, turns time or milestones into numbered invoices, and records every payment with platform fee, transfer fee and the exchange rate actually received. An intermediate final year project about correct money handling and real effective hourly rates.

Difficulty

Intermediate

A small team, or one strong student willing to learn something new.
Effort

8 to 10 weeks · 1 to 2 students

Deliverables

7 to ship

3 optional extras

Suggested stack

Next.jsTypeScriptPostgreSQLPrismaTailwind CSSreact-pdfPlaywright
A suggestion, not a requirement. Swap anything for what you already know.

What you should ship

  • Clients and projects with an hourly rate or a fixed price and milestones, in any currency
  • A start and stop timer plus manual entries, each tagged billable or unpaid admin
  • Numbered invoices generated from time entries or milestones, exported as PDF, with gap-free numbering per account
  • A payment log recording gross amount, platform fee, transfer fee, exchange rate and net received, all stored as integers in minor units
  • A report of effective hourly rate per project, comparing estimated with actual hours
  • A monthly income summary in local currency with CSV export for tax records
  • Unit tests for fee, rounding and currency calculations and one end-to-end invoice flow

If you have time left

  • Fetch reference exchange rates daily and show the gap to the rate actually received
  • Overdue invoice reminders by email
  • Import completed orders or earnings exports from a platform CSV

The problem: freelancers do not know what they actually earn

A new freelancer quotes a fixed price of 200 dollars for a website. It takes 25 hours. The platform keeps a share, the transfer service takes a fee, and the exchange rate that lands in the bank is worse than the one on the news. The freelancer thinks they earned 200 dollars; the real figure per hour is a fraction of what they imagine. Multiply that across a year and it drives bad pricing decisions.

Records are scattered across platform dashboards, Payoneer or Wise statements and a bank app. When tax season comes, or a bank asks for proof of income, the freelancer rebuilds a year from screenshots. This is a common situation for freelancers in Pakistan, India, Egypt and the Philippines who earn in dollars and spend in local currency.

What already exists and the gap

  • Toggl Track and Clockify are popular time trackers; invoicing needs a separate tool or integration.
  • Harvest combines time tracking and invoicing and can accept payments through Stripe or PayPal.
  • Bonsai and FreshBooks are all-in-one freelancer suites with contracts, invoices and multi-currency support.

These tools answer "what did I bill?". They rarely answer "what did I actually receive, after every fee and the real exchange rate, per hour worked?". Most assume the payment arrives in full through their own processor. The gap is a small tool built around the net-received ledger and the effective hourly rate, for people paid through platforms and transfer services, with a monthly summary in local currency.

What you build

A single-user web app used daily:

  • Clients and projects with hourly or fixed pricing and milestones.
  • Time tracking: timer and manual entries, billable or not.
  • Invoices: generated from time or milestones, sequential numbers, due dates, PDF export.
  • Payments: gross amount, each fee, the rate received and the net amount in local currency, linked to one or more invoices.
  • Reports: effective hourly rate per project, estimate versus actual, monthly income in local currency, CSV export.

The technically interesting part

Money is where student projects usually go wrong, and that is the point of this one. Store every amount as an integer in minor units with its currency code, never as a float. Keep exchange rates as exact decimals with a stated precision. Decide and document rounding rules: when a 2.5 percent fee on 133.33 dollars produces a fraction of a cent, which way does it round, and at which step? Stripe's documentation on zero-decimal currencies is a good reference for why the currency matters.

A payment may cover two invoices, or an invoice may be paid in two parts through different channels. Model payments and allocations separately so balances always come from the ledger, never from an editable field. Invoice numbers must be gap-free and unique per account even under concurrent requests, which is a small but real database problem. Show your evaluators the test suite for these edge cases.

How to evaluate it

  • Calculation tests: at least 30 table-driven cases for fees, rounding, partial payments and multi-invoice allocation, checked against hand calculations.
  • Real data: use it for your own freelancing or a classmate's for at least one month; report estimated versus actual hours and the gap between gross billed and net received.
  • End-to-end: a Playwright test that creates a client, tracks time, invoices it and records a payment.
  • Usability: ask 5 freelancers to record a real payment without help and time them.

Suggested plan

  1. Week 1: interview three freelancers; collect real payment statements (with personal data removed).
  2. Weeks 2 to 3: data model for money, clients, projects, time tracking.
  3. Weeks 4 to 5: invoices, numbering, PDF export.
  4. Weeks 6 to 7: payment ledger, allocations, reports.
  5. Weeks 8 to 10: tests, one month of real use, write-up.

Path to a product

The first users are freelancers in your network and university freelancing societies. A realistic model is free for one currency pair and a small yearly fee for unlimited clients, CSV imports and reminders. Freelancer communities and trainers who run freelancing courses are a natural distribution channel. Keep it a record-keeping tool; that keeps the regulatory side simple.

Scope warning

Do not process payments or connect to bank accounts. Treat tax as a record-keeping export, not tax advice, and say so in the interface. Keep to one user per account. No teams, no project management.

Learn what you need on Sefism

Get help with this idea

Small and finishable, but only strong if the money handling is correct and tested. Tauseef can help you design the ledger, choose rounding rules and plan a month of real use as evaluation. If you are new here, create a free account first.

Ideas and guidance, not finished projects

These are project ideas and scoping guidance, published free for students to use as a starting point. I do not build, write, or sell final-year projects, and I do not complete coursework for anyone. Take an idea, make it yours, and build it.

Not sure this one fits you?

I help students pick an idea that matches their skills and their deadline, then scope it down until it is finishable. Guidance only, never done for you.

Discuss this idea
Work with me

Stuck on something specific?

Writing only gets you so far. If you want an answer to your situation rather than the general case, book a session and we will work through it together. Sessions are free for approved Sefism members, and a few slots open each week.