Inspiration

Freelancers and small studios lose hours every month on invoices and awkward "just following up…" emails, and late payment is the norm. The tools exist (PayPal Invoicing is excellent), but someone still has to turn a messy client email into line items, remember who's late, and work out how firm a reminder should be. I wanted an agent that does the admin while the freelancer stays in control of anything that touches a client or money.

What it does

Settle is an AI accounts-receivable agent built on PayPal Invoicing and Claude.

  • Paste → invoice. Paste a client email, a timesheet or a one-line note ("bill Tom 6h at £60 for the logo"). Claude extracts the client, email, line items (hours × rate or fixed fees), currency and due date, and creates a real PayPal draft invoice.
  • Human-in-the-loop. Sending, reminding, recording a payment or cancelling is proposed by the agent and shown as an approval card. Nothing reaches a client until you click Approve.
  • Smart chasing. "Chase overdue" checks every invoice and drafts a reminder whose tone matches how late it is (friendly → firm → formal), sent through PayPal's /remind endpoint. It also uses judgment: it won't nag a client whose invoice isn't due yet.
  • No guessing. If the client's email is missing, it asks rather than inventing one.
  • Off-PayPal payments. Paid by bank transfer? Settle records it against the PayPal invoice.
  • Live receivables dashboard. Outstanding, Overdue and Collected, totalled per currency, straight from PayPal.

How we built it

  • Server: plain Node.js http with zero dependencies, deployed on Render.
  • PayPal Invoicing v2 (Sandbox): OAuth client-credentials, generate-next-invoice-number, create draft, send, remind, payments (record), cancel/delete, list and get.
  • Claude (Anthropic Messages API) with tool use: four tools: list_invoices, get_invoice, create_invoice_draft and propose_action.
  • Safety by design: the agent can only read and create drafts on its own. Every side effect goes through propose_action, which queues it for the user's approval. That keeps the AI's room for mistakes small, which is what you want from an agent that touches money.
  • Each browser gets its own conversation, and the deploy is password-protected so strangers can't use the API keys.
  • An offline test suite (mock PayPal + a scripted agent) covers the paste → draft → approve → send → remind → record-payment flow.
  • Claude Code was used to help write this codebase.

Challenges we ran into

  • Messy input. Real client messages mix hours, rates, fees and currencies. Tight tool schemas plus a clear system prompt made extraction reliable, including GBP/EUR/USD in the same account.
  • Keeping the agent safe without making it useless. Splitting tools into "free" (read/draft) and "needs approval" (send/remind/pay/cancel) gave the right balance.
  • PayPal details. The Invoicing feature has to be enabled on the sandbox app, and zero-decimal currencies (e.g. JPY) reject .00 amounts.

Accomplishments that we're proud of

  • An end-to-end agent that creates and sends real PayPal invoices from a one-line note.
  • An approval flow that makes an AI agent trustworthy around money.
  • Reminders whose tone matches how late the payment is, and the judgment not to send one too early.

What we learned

Good agent design is mostly about boundaries: what the model may do alone, what it must ask for, and what it should never guess.

What's next for Settle

  • Webhooks for instant "paid" updates and automatic thank-you notes.
  • Scheduled chasing (a daily check that proposes reminders).
  • Recurring invoices and multi-user accounts.
  • Live-mode onboarding for real freelancers.

Try it

Built With

Share this project:

Updates

Submission history