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 (8)

Collapse
 
itskondrat profile image
Mykola Kondratiuk

the visibility problem is real - i've seen the same chaos at agency level. the "i've paid" message is almost always followed by a 20-minute hunt through 3 different tools. the interesting design challenge here is that the source of truth needs to be the system, not any individual's memory or a shared spreadsheet. once you have that, the trust issues mostly resolve themselves because both sides are looking at the same state.

Collapse
 
fluffyfi3 profile image
Ella

Exactly. The 20 minute hunt is way too real

I like the way you phrase that, making the system the source of truth instead of trying to rely on memory or disparate tools. That’s actually the essence of what I was trying to achieve here.

Once we have everything in one place, the discussion around the ‘did they actually pay?’ thing becomes much less complicated.

Collapse
 
itskondrat profile image
Mykola Kondratiuk

yeah once you have that single source of truth the whole dynamic shifts - it stops being a memory dispute and becomes just a lookup. good luck with it.

Collapse
 
yor profile image
Yosua M. Wowor

Hello its such a great project, you have here. Im new at this Backend Development and still learning how to code. So i cant give any good feedback, but while im testing duplicate users register, i stumble upon 500 internal status code, is it the correct status code? I certainly dont know😅, but overall i think it is an awesome project from my personal opinion, definitely adding it to my project list (if you dont mind)

Collapse
 
fluffyfi3 profile image
Ella

Hi Yosua, thanks for giving it a try, really appreciate it. You're right, a 500 wasn't the correct response in that case. It was a duplicate user problem, but it's fixed now, so please don't hesitate to try again.

Let me know if you spot anything else or want to test other edge cases, I'm up for it 👍. Also, please go ahead and add to your project lists.

Collapse
 
apex_stack profile image
Apex Stack

The decision to keep this as a pure tracking and verification layer instead of trying to be a payment processor is the right call. I see too many side projects die because they try to solve every adjacent problem at once. The best tools do exactly one thing well and become indispensable for that one thing.

From a product perspective, the webhook/notification system you mentioned for next steps would be huge — the real power of this kind of tool kicks in when it can alert you proactively instead of requiring manual checks. I run automated monitoring agents for a financial data platform, and the transition from "go check the dashboard" to "the system tells you when something needs attention" is what turns a nice tool into a daily driver. Have you thought about a Slack or email integration for the verification workflow?

Collapse
 
fluffyfi3 profile image
Ella

I really appreciate your thoughts on this Apex! It's great that you're developing agents too. I've definitely considered that we'll need to implement a Slack integration at some point; that's definitely part of the future plans for ProofPay to continue to be proactive in that workflow.

Collapse
 
fluffyfi3 profile image
Ella • Edited

api doc: proofpay api doc
github repo: proofpay github repo

Some comments may only be visible to logged-in visitors. Sign in to view all comments.