We use Harvest to track all our time by client, project, sprint, and developer. We then import these hours into Quickbooks for invoicing. We accept payments via ACH, Bill.com, and Check. Customers always have access to real-time reports of hours accrued.
A typical “Statement of Work” includes a set number of Sprints. We try to keep a narrow scope for each Sprint so that we can tightly control how hours get spent to avoid overruns. We typically avoid adding tasks to a running Sprint so that the scope does not grow. That's also why we have an allocation for “General Support”, which is work that falls outside of the current Sprint. This is for special requests, meetings, pair programming sessions, extra documentation, etc.
All of our engagements are on a Time & Materials basis. We charge a 20% upfront deposit which is billed as a retainer for “General Support” and invoiced in advance of services (Due on Receipt) in order to commence an engagement. Sprints are billed as 80-hour retainers and invoiced in advance of services, typically on Net-30 terms. All unused prepaid balances are refundable or can be applied to outstanding invoices. As soon as we exhaust the 80-hours in a Sprint, we move all outstanding work to the next Sprint. Every time we finish a Sprint, we prepare a “True-Up” invoice – it's where we pull all hours worked from the Sprint into an invoice, then apply a credit for the amount already paid towards that particular invoice. The remaining balance is what is owed.
If at any time you have questions about an invoice you've received, please do not hesitate to reach out to our account department.