DEV Community

Ella
Ella

Posted on

I built a payment proof tracker for agencies fed up of “I’ve paid” messages

The Problem:

Every freelancer or agency has encountered the following scenario at some point:

  • Client says: "I've paid"
  • You ask for proof of payment
  • Client sends a random screenshot
  • You scroll through your chat logs trying to find a match for a project
  • Your spreadsheet is outdated and useless
  • Your team has no idea what's been paid and what has not been paid

It gets messy real quick.

And it's not just about money... it's about trust, verification, and visibility among your team members.

What I Built

I built ProofPay API. It is a lightweight backend for payment tracking and proof verification.

It allows you to:

  • Track payments from your clients
  • Upload and verify payment proofs
  • Manage projects and track the status of payments
  • Provide teams with a unified overview of what is paid and what is pending

Instead of using chats and spreadsheets to keep track of everything, everything is now in one system.

What It Does

  • Authentication: User Registration & Login, JWT-based authentication
  • Projects: Create client projects, Add payments to projects & Project status tracking
  • Payments: Record payments per project, Add proof to payments (image, file, reference), Mark payments as (pending, verified, rejected)
  • Team / Agencies: Multiple users under a single workspace, Visibility to all team members
  • Dashboard: Overview of (total payments, pending proofs, verified transactions)

Example Flow:

So, here is an example of how it would work:

  • Create a project
  • Add a payment
  • Client uploads proof
  • You verify or reject it
  • Dashboard updates automatically

No more guessing. No more “check WhatsApp”.

API Example

Here’s what a typical request looks like:

Create Payment:

POST /payments

Headers:
Authorization: Bearer <token>

Body:
{
  "projectId": "123",
  "amount": 50000,
  "method": "bank_transfer",
  "proofUrl": "https://..."
}
Enter fullscreen mode Exit fullscreen mode

Tech Stack

  • Backend: Node.js (Express / TypeScript)
  • Database: Postgresql
  • Auth: JWT
  • Docs: Postman (auto-generated)

Docs

You can explore the full API here:
https://documenter.getpostman.com/view/43051527/2sBXijHWgD

Why I Built It This Way

I didn’t want to overcomplicate things.

  • No heavy “fintech” system
  • No unnecessary abstractions

Just:

  • clear endpoints
  • simple flows
  • real-world usefulness

What This Doesn’t Do

  • It’s not a payment processor (like Stripe)
  • It doesn’t move money
  • It focuses purely on tracking + verification

Is This Actually Useful?

Honestly:

  • For solo freelancers: helps you stay organized
  • For agencies: offers team-wide visibility
  • For clients: adds accountability

It’s not trying to replace payment processors.

It does just one thing exceptionally well:

“Has this client actually paid?”

What Next

  • Notifications for payment verification
  • Improvements for reporting and exports
  • Frontend dashboard (maybe 👀)

Feedback I Want

  • Would you actually use this in your workflow?
  • What’s missing for real-world usage?
  • Does the API structure make sense?

Top comments (1)

Collapse
 
fluffyfi3 profile image
Ella

api doc: here