Inspiration

Freelancers spend a surprising amount of time on the unglamorous part of the job: writing invoices, tracking who has paid, and sending awkward “just checking in” reminders. I wanted to remove that friction. The hackathon theme of AI that can discover, decide and take action with real payment workflows was a perfect fit. The AI should do the paperwork, but a human should always stay in control of the money.

What it does

Get Paid Agent is an AI assistant for getting paid on time. Create invoices from one sentence. Type “Invoice Rahul Sharma $50 for logo design, due in 7 days.” The agent extracts the client, amount, description and due date, converts relative dates, and asks for anything missing, like the client’s email. Human approval. The agent shows a preview card, and nothing is sent until you click Confirm & send. Track payments. Ask “Which invoices are unpaid?” and it reads live data from PayPal. A dashboard shows total invoiced, paid and outstanding, with status badges. Chase late payers. The agent drafts a polite reminder in the tone you ask for, and you approve it before it goes out.

How I built it

AI agent: Groq (openai/gpt-oss-120b) with LLM tool calling Backend: Node.js and Express REST API Frontend: React (Vite) chat interface and invoice dashboard Payments: PayPal Invoicing API (sandbox) with OAuth2 Hosting: Render

The agent has three tools: create_invoice, list_invoices and send_reminder. The key design decision is that the AI can only propose actions. When the model calls a tool that sends an invoice or reminder, the server stores it as a pending action and returns it to the UI. Only the /api/confirm endpoint, triggered by the user’s click, actually calls PayPal. The safety guarantee is enforced by the server, not by trusting the model to behave.

Challenges I ran into

A regional account restriction. My first PayPal sandbox accounts were set to India. Checkout failed with a generic error, and Invoicing calls returned 403 NOT_AUTHORIZED. By inspecting the OAuth token’s scopes, I found the invoicing permission was missing even though the feature was enabled on the app. Creating US sandbox accounts and a new app fixed it. Switching AI providers. I had no OpenAI credits and Gemini was overloaded, so I moved to Groq and listed the models available to my key to find one that supported tool calling. Keeping the AI safe. An early version could have sent invoices directly. Redesigning it around a pending-action and confirm flow was the biggest architectural change. Time. As a solo builder, I cut my scope from a multi-agent escrow platform to a focused product I could finish.

Accomplishments that I’m proud of

A complete working flow: a plain sentence becomes a real PayPal sandbox invoice, with a human approval step in the middle. Diagnosing the PayPal permission problem by reading token scopes instead of guessing. A polished dashboard with live invoice status and revenue stats. Shipping a deployed, full-stack product on my own in a short time.

What I learned

How to design agents with tool calling and a human-in-the-loop approval step. How PayPal OAuth, scopes, sandbox accounts and the Invoicing API work, and how to debug permission errors. That a smaller product that works end to end beats a larger one that doesn’t. How to deploy a full-stack app with a React build served by Express.

What’s next for Get Paid Agent

Live payment updates through PayPal webhooks. Automatic reminder schedules for overdue invoices. Milestone-based escrow payments for larger projects. Multi-currency support and invoice templates.

Built With

Share this project:

Updates

Submission history