/
PreiseBlogAnmeldenDemo anfragen
Zurück zum Blog
Updates

Capacity contracts: clients buy points, not hours

Clients buy a quarterly point allowance, and every request gets a size class before work starts. The price is fixed before anyone picks up the ticket.

Spedy Team5 min readAuf Deutsch lesen
Capacity contracts: clients buy points, not hours
#budget#billing#customers#time-tracking#moco#tickets

If you sell ongoing support by the hour, you know the conversation that follows the invoice: the client asks why a "small fix" took six hours. Capacity contracts flip the order. The client buys a point allowance per quarter, every request gets a size class before work starts, and the price is settled before anyone picks up the ticket.


Why points instead of hours

Billing by the hour puts the risk in the wrong place. When something takes longer than expected, the client pays, and you have the conversation about it afterwards. Small requests often never get raised at all, because they aren't worth a quote.

With a capacity contract:

  • The price is known up front. A class costs a fixed number of points, however long the work ends up taking.
  • You carry the hour risk. In exchange, you define the classes and their point values.
  • Hours stay internal. Your team keeps tracking time. That shows you what a class really costs, so you can recalibrate the point values after a quarter or two. The client sees none of it.
  • Invoicing stays where it is. Spedy records what was agreed and what was spent. The invoice is sent from outside Spedy.

How a ticket runs under a contract

A client files a request on a project attached to a contract. The ticket's Properties tab shows a Size class card.

  1. Propose a size class. Someone on your team picks a class and adds a short rationale: how many places are affected, how much testing it needs, how clear the requirement is. You can also do this when creating the ticket.
  2. Agree or object. The client gets a notification and an email. Agree to the class reserves the points. Object keeps the ticket on hold until you agree. Once per quarter a dispute can be settled without discussion: the next smaller class applies.
  3. Do the work. Only now can the ticket move into an active status. A ticket without an agreed class does not start.
  4. Accept the delivery. When the work is done, Spedy asks the client to accept it. The reserved points are only consumed on Record acceptance. Dragging a card to "Done" is not enough.

If a ticket turns out bigger than agreed, use Change the size class. The old reservation goes back first, the new class goes to the client for agreement again, and a ticket in progress pauses until then. A class can never be raised quietly.

What costs nothing

  • Free classes: Each package decides which classes are included, for example everything in XS.
  • Free work stays visible: a class that costs nothing still appears in the ledger with its point value. At the end of the quarter you know how much you gave away.

Limits you can pass on purpose

A contract governs pace as well as price.

  • Concurrent tickets: Every contract caps how many tickets can be in progress at once. When the cap is reached, the card says so before the status change is refused ("Concurrency limit reached (2/2)"). If a ticket has to start anyway, override the limit for that one ticket, with a reason.
  • Delivery times: Each class comes with a commitment in working days. The clock starts when the ticket goes into progress and pauses while it sits in a blocked status, for example while you wait on the client. The card shows the date with the pause included: "Committed by …".
  • Allowance used up: The client can still size and agree. The ticket is flagged Over allowance, and before acceptance you record how it will be settled: extra points, next quarter or goodwill.

What the client sees

Clients get a Contract item in the navigation. It shows their quarter in points: allowance, consumed, reserved, remaining. Below that are the sized tickets, the covered projects, the operating positions and every point movement, filterable by month, quarter or a custom date range.

Every covered board has a chip in its header, such as 42 points left. Clients on a contract project see hours nowhere: not on the ticket, not under "Time & Budget", not in the API.

Internally everything stays. Time booked on sized tickets is flagged non-billable by default and sent to MOCO that way, since the package pays for it.


Setting it up

Everything lives under Settings → Capacity contracts, split into three tabs.

  1. Classes: On first use Spedy seeds five classes with Fibonacci points: XS 1, S 3, M 8, L 21, XL 55. Names, point values, list prices, internal hours and order are all yours to change. A class that has already been used is retired rather than deleted.
  2. Packages: Templates for new contracts, with points per quarter, concurrent tickets, free classes and a delivery time per class. Editing a package later never touches a running contract.
  3. Contracts → Create contract: Pick a package, set the start date (quarters follow this date, not the calendar) and adjust values under More settings if needed.
  4. Attach projects: Add the client's projects on the contract page. The contract only takes effect from here. Tickets already in flight finish under the old arrangement.
  5. Request acceptance: Optionally pick the status, say "Ready for live", at which the client is asked to accept. Without one, any final status counts.

Two weeks before a quarter ends, Spedy produces a statement with deliveries, point movements and the remaining balance. Unused points expire at the end of the quarter, open reservations stay.

If you never create a contract, nothing changes for you. Every other project keeps running on hours.


Read more

Frequently asked questions

Quick answers to the most common questions about this topic.

What is a capacity contract in Spedy?
An agreement with a client over a fixed number of points per quarter. Every ticket on the attached projects gets a size class with a fixed point value before work starts, and the client agrees to it. Invoicing the contract still happens outside Spedy.
Does the client still see hours?
No. For a client on a project with an active contract, Spedy withholds every hour figure, in the UI and in the API. They see classes, points and what is left of their quarter. Your team keeps tracking time as before.
When are points deducted?
In two steps. Agreeing to a size class reserves the points, and the client accepting the delivery consumes them. If a ticket is cancelled or deleted, the reservation goes back to the allowance.
What if the client disagrees with a size class?
They object with a short note. If you can't settle it, the next smaller class applies, once per quarter and without further discussion. You set how many of those free downgrades a contract gets.
How does time on contract tickets reach MOCO?
As non-billable by default, because the package already pays for the ticket. The setting is called “Time on sized tickets is non-billable” and can be switched off per contract.
Capacity contracts: clients buy points, not hours | Spedy Blog