Most invoicing software is built for one motion: either recurring subscriptions or one-off project invoices. But if you're a design agency, consultant, or service firm, you probably have both. Two clients paying a fixed monthly retainer, three paying by project scope. Your invoicing platform has to switch between these mental models every time you open it—and most tools don't. We tested FreshBooks, Wave, Zoho Invoice, and Orin against a real scenario: two retainer clients (fixed monthly fees, some hours tracking) and three project clients (custom quotes, variable scope, T&M or fixed-price). We looked at setup friction, how each handles prorating mid-cycle, automation of recurring invoices, and whether you can actually reconcile payments back to contracts without manual work. The test scenario To make this fair, we used the same five clients across all four platforms: Client A (retainer): $3,000/month digital marketing, billed on the 1st, no hourly breakdown required Client B (retainer): $5,000/month with 20 hours included; overage at $150/hr. Starts mid-month (proration test) Client C (project): Fixed-price web build, $12,000, 50% deposit, 50% on completion Client D (project): T&M content work, $75/hr, approved through a contract, invoiced monthly Client E (project): Quarterly retainer upgrade: fixed base ($2,000) + project hours ($100/hr, cap at 50/month) For each platform, we measured: how many clicks to set up a retainer client, whether prorating is automatic or manual, how recurring invoices are triggered, whether the tool connects to a contract or estimate, and how payment reconciliation flows back to the original invoice. FreshBooks: Best for time tracking, weak on automation FreshBooks is built around the freelancer-agency mindset. Its strength is time tracking and hourly billing. Setting up a retainer client took 6 clicks: new client, create a recurring invoice template, set frequency (monthly), set amount, pick anchor date, and save. Proration for Client B (starting mid-month) required manually adjusting the first invoice and then switching to recurring. Not ideal. The time-tracking integration is genuine: team members log time in Orin (FreshBooks' team app) or directly in FreshBooks, and invoices can automatically pull those logged hours. For Client D (T&M) and the hourly overage on Client B, this is elegant. You don't manually add hours. But here's the friction: if you have both retainer and project clients, you're living in two different workflows. Retainers use the recurring invoice builder (template-based). Project work uses time logs or line items. They don't share a common view. When Client B's month ends and overage hours exist, you have to manually check and override the recurring amount, or create an adjustment invoice. Recurring automation is too simple for mixed models. Payment reconciliation works, but you have to land in the Accounting section and match deposits to invoices. There's no automated bank feed to contract linking. Setup time (5 clients): ~20 minutes. Recurring invoice creation: easy. Proration: manual first invoice. Mixed-model friction: medium. Wave: Cheapest option, but recurring invoices are an afterthought Wave is free for invoicing. It's tempting, especially if cash is tight. Setting up a retainer client is straightforward: new client, new recurring invoice, set amount and frequency. Done in 4 clicks. The problem surfaces immediately with complexity. Wave's recurring invoices are dumb: they invoice the same amount on the same day, forever. There's no built-in logic for "invoice recurring amount unless there are project hours to add." You could theoretically use Zapier to trigger custom invoice logic, but that's an extra tool, an extra cost, and an extra failure point. Proration for mid-month starts doesn't exist. You create the first invoice manually, then switch the client to recurring. No automation, no prorating logic. Project billing (Client C with a deposit split) requires manual line items on each invoice. There's no contract linking. You're not comparing the invoice to an original scope document; you're typing amounts into fields. The biggest red flag for mixed-model work: Wave doesn't know the difference between a retainer invoice and a project invoice. They're just invoices. If you have five clients and two are on recurring monthly cycles, Wave will happily send five identical recurring invoices on day 1 of the month, whether they're retainers or not. You have to remember which clients should be recurring and manually adjust the others. Setup time (5 clients): ~15 minutes. Recurring invoice creation: easy but inflexible. Proration: none. Mixed-model friction: high. Best for: single-product businesses or pure project shops. Zoho Invoice: Middle ground, but switching between retainer and project is visual clutter Zoho Invoice is part of the Zoho ecosystem. If you're already in Zoho CRM or Zoho Books (accounting), you get native data flow. If you're