The Invoice That Cost Me a $60,000 Client

By Daniel Kim, Software Development Agency Owner — Seattle, WA


I built software for eight years at other companies before starting my own agency. By the time I went independent, I knew how to architect systems, manage sprints, and ship product. What I did not know — and what nobody teaches you in a computer science program or in a product management role — was how to bill.

My first year running Kim Development was profitable by most measures. Projects came in. Code shipped. Clients were happy. But the profitability was an illusion I only understood after I lost a $60,000 client over a billing dispute that should never have happened.

The Dispute That Changed Everything

I had spent four months building a custom inventory management system for a Seattle-area wholesale distributor. The project was scoped at $48,000. We had a signed statement of work. The client was happy with the build.

The problem was the invoicing. I had sent informal invoices at irregular intervals throughout the project — $12,000 here, $8,000 there, whenever I remembered or when I needed cash. No consistent structure. No phase milestones. No itemized deliverables.

When I sent the final invoice for the remaining balance, the client disputed it. They believed they had already paid more than the project scope warranted, based on their informal tracking of my invoices. My invoices did not reference the original statement of work. They could not reconcile what they had paid against what they owed.

The dispute cost me $4,200 I never collected. It also cost me the renewal engagement the client had mentioned during the project — a $60,000 custom reporting module build that went to another agency. A billing presentation problem destroyed a six-figure relationship.

What Unprofessional Software Billing Actually Costs

Invoice Flow app invoice editor of a software development agency — a custom-CRM milestone billed with a separate change-order line and project, sprint and SOW references in custom fields
A milestone and an out-of-scope change order on the same invoice — project, sprint and SOW references where procurement expects them.

Software billing mistakes tend to be larger than those in other service industries because the project values are larger. A $200 dispute in a service business is annoying. A $4,000 billing dispute in a software project is catastrophic.

The specific failures I had been making:

No milestone structure. Sending invoices whenever cash was needed rather than tied to defined project phases created confusion about what had been paid for.

No statement of work references. My invoices were generic — “Development Services — Month of March — $12,000.” No link to the original agreement. No deliverable documentation.

No retainer conversion. Every project ended with a fully delivered product and a fully closed invoice. There was no structure for the ongoing maintenance, feature requests, and updates that clients inevitably needed. That work came in informally and was billed inconsistently.

The Milestone System That Fixed Project Billing

After the dispute, I rebuilt my entire invoicing approach using InvoiceFlow.

The new project billing structure for any engagement over $15,000:

“Software Development Agreement — [Client Name] — Phase Billing:

Phase 1 — Requirements & Architecture (20%): Stakeholder interviews, technical specification document, database schema, system architecture diagram. Due at requirements sign-off. $9,600.00

Phase 2 — Core Development (35%): Primary feature build, API development, integration layer, unit testing. Due at internal QA pass. $16,800.00

Phase 3 — Integration & Testing (25%): UAT environment setup, client testing period, bug resolution, performance testing. Due at client UAT sign-off. $12,000.00

Phase 4 — Launch & Handover (20%): Production deployment, documentation delivery, team training session, 30-day post-launch support. Due at launch. $9,600.00

Total Project Value: $48,000.00”

I reference the original statement of work on every phase invoice: “Phase 2 as defined in Statement of Work SOW-2026-0341, dated January 15, 2026.” The client can match each invoice to their copy of the agreement.

Since implementing this structure, I have not had a single billing dispute. Clients know what each phase costs, what they get in each phase, and when the invoice arrives.

The Change Request Invoice That Protects Both Sides

Invoice Flow app recurring invoices of a software agency — monthly development retainers in USD and EUR generating automatically
Monthly retainers — including a EUR one — generate themselves, so predictable revenue arrives without manual billing.

Software projects change. Requirements evolve. Clients see the first build and want adjustments. The question is not whether change requests will happen — it is whether they will be priced and documented before the work begins.

I now issue a formal change request invoice for any work outside the original SOW:

“Change Request Authorization — [Client Name] — CR-2026-007: Description: Revised user authentication flow — add two-factor authentication via SMS and email verification options. Original SOW specified single-factor authentication only.

Estimated additional work:

This change request must be signed before work commences. Estimated delivery: 5 business days after authorization.”

Clients who understand that their request costs $4,550 make deliberate decisions. Some approve immediately. Some reduce the scope. A few decide their original requirements were fine. All of these outcomes are better than doing the work and either absorbing it or invoicing it as a surprise at project end.

The Retainer Model That Created Recurring Revenue

Invoice Flow app documents of a software agency — project milestones, a change order, a monthly retainer and a EUR international milestone
Milestones, a change order, a retainer and a EUR project — every strand of a multi-project agency in one list.

The software billing transformation that had the largest business impact was building a post-project retainer model.

After every project launch, I now present a maintenance and support retainer. The conversation is easy because the client has just experienced what my work looks like and they do not want to lose access to me when something breaks or needs updating.

My standard retainer tiers for software clients:

“Monthly Software Support Retainer — [Client Name]:

Tier 1 — Essential (8 hours/month): Bug fixes, security updates, minor configuration changes, technical support. $1,400/month.

Tier 2 — Active (16 hours/month): Above plus feature additions, performance optimization, API integrations, monthly code review. $2,800/month.

Tier 3 — Dedicated (32 hours/month): Dedicated capacity — ongoing development, all support, monthly architecture review, priority response. $5,600/month.”

I set up recurring invoices in InvoiceFlow for each retainer client. Nine of my last twelve completed project clients converted to retainer agreements. My current retainer income is $18,200 per month — recurring, predictable, not dependent on winning new projects.

Corporate and Enterprise Billing

Two of my agency’s clients are mid-size enterprises with formal procurement processes. The billing requirements are specific: vendor registration, PO numbers, net-45 payment terms, invoice format aligned with their systems.

I add all required fields through InvoiceFlow’s custom fields:

“Software Development Services — [Enterprise Client] — June 2026: PO Number: PO-2026-IT-ENG-0921 Vendor Registration: VR-84421 Cost Center: IT-OPERATIONS Project Code: INV-MGMT-V2 Phase 3 deliverables per SOW dated March 3, 2026: UAT environment, client testing support, bug resolution (14 issues), performance benchmarking. Amount: $28,500.00 Payment Terms: Net-45 Invoice Due: August 15, 2026”

Enterprise AP systems process invoices by matching fields to POs. Invoices that match get paid within terms. Invoices that don’t match sit in queues or get returned for correction. Getting this right is the difference between collecting on time and chasing payment for months.

The Agency After the Change

The $60,000 client loss was the event that forced me to take billing seriously. The agency today looks nothing like what it was in year one.

Current state:

The lesson I carry: software is a high-value service. The billing needs to match. An informal invoice from a serious engineering agency is a contradiction that costs you clients.

Download InvoiceFlow. Build your phase billing templates. Issue your first retainer proposal to your next completed project client. The recurring income will change how you run the business.


Daniel Kim is the founder of Kim Development in Seattle, Washington, building custom software solutions for wholesale distribution, logistics, and operations management clients.