Navigation
14.7. Add Fixed, Hourly, Usage, and Bucket Contract Lines with Reusable Presets
Configure AlgaPSA contract lines for MSP billing using fixed monthly fees, hourly labor, usage charges, and bucket allowances, with reusable presets and example contract structures for common MSP scenarios.
Contract lines are the billable parts of a contract — the actual rules that turn a signed agreement into invoiced revenue. A single contract can include more than one line, which lets your MSP model real agreements such as a fixed monthly base fee plus per-GB backup overage on top of it. This page covers how to choose the right billing model, build reusable contract line presets, configure each line type in depth, layer a bucket allowance on top of an Hourly or Usage line, and add finished lines to a client contract.
Pick the right billing model
Every contract line uses one of three billing models. Pick the one that matches how you actually charge for the service.
| Billing model | Best for | MSP example |
|---|---|---|
| Fixed | Predictable recurring charges that don't depend on activity | Managed endpoint plan, SOC monitoring, backup platform fee, vCIO retainer |
| Hourly | Billable labor based on approved time entries | Project work, after-hours support, onsite work outside the agreement |
| Usage | Charges based on measured consumption | Backup storage, cloud hosting usage, licensed devices, security events, data ingestion |
| Bucket / included allowance | A fixed allowance with optional overage on a specific Hourly or Usage service | 10 included support hours, 1 TB included backup storage, 25 included managed endpoints |
Buckets are not a separate line type in AlgaPSA. Instead, an Hourly or Usage line can carry a bucket overlay on a single service that defines the included amount and the overage rate. See Bucket overlay below.
Figure 1: A contract can combine multiple line types — for example, a Fixed monthly base fee paired with a Usage line for storage overage.
Billing timing: advance vs. arrears
Billing timing controls when a line is invoiced relative to the service period it covers. In AlgaPSA the Billing Timing field only appears on Fixed lines; Hourly and Usage lines always bill in arrears because the amount can only be calculated after the activity occurs.
- Advance — invoice at the start of the period. Use this when the client pays before or at the start of the service period. Common for managed services, platform fees, and per-seat agreements where the price is known up front.
- Arrears — invoice after the period closes. Use this when the amount depends on activity that happens during the period. Required for time, usage, and overage charges.
A typical MSP contract uses both at once:
- A Fixed monthly base fee billed in advance.
- A Usage or overage line billed in arrears after actual consumption is known.
Example: GreenLeaf Dental Group flat-rate backup plan with storage overage
GreenLeaf Dental Group buys a managed backup plan that combines a predictable platform fee with metered overage:
- Managed Backup Platform Base Fee: $300.00 per month, billed in advance (Fixed line).
- Cloud Backup Storage Overage: 1,000 GB included, then $0.20 per GB, billed in arrears (Usage line with a bucket overlay on the storage service).
If GreenLeaf consumes 1,250 GB during the month, only the 250 GB of overage is billed:
| Charge | Calculation | Amount |
|---|---|---|
| Base platform fee | 1 x $300.00 | $300.00 |
| Storage overage | 250 GB x $0.20 | $50.00 |
| Pre-tax subtotal | $300.00 + $50.00 | $350.00 |
The result is one easy-to-read invoice: a predictable base fee plus a clearly explained overage line.
Contract Line Presets
Presets are reusable contract line templates. Build them once for the offerings you sell most often, and your team can drop them onto any client contract instead of rebuilding the same configuration by hand.
Navigate to Billing > Contracts > Contract Line Presets to manage the library.
Creating a preset
- Click Add Contract Line Preset.
- Enter the Contract Line Preset Name (e.g. "Managed Support - Gold").
- Select a Billing Frequency (weekly, monthly, quarterly, etc.).
- Choose a Billing Timing. Only enabled for Fixed; Hourly and Usage lines are locked to Arrears.
- Pick a Billing Model: Fixed Fee, Hourly, or Usage-Based.
- Configure the model-specific fields and add the services that belong to this line (see sections below).
- Click Create Contract Line Preset.
Presets are independent of any specific contract. Editing a preset does not retroactively change contract lines that were created from it — it only affects future uses.
Fixed Fee configuration
Used for recurring charges like managed services fees, platform fees, retainers, or an agreed number of seats. Choose whether each service allocates part of a bundle fee or bills its own quantity multiplied by a unit rate.
Line-level fields
- Contract Line Preset Name (required): Descriptive name (e.g. "Standard Managed Services Fee").
- Billing Frequency: How often this line is invoiced.
- Billing Timing:
- Arrears — invoice after the period closes
- Advance — invoice at the start of the period
- Recurring Base Rate: The recurring fee for bundle-priced services. When you add bundle-priced services to a Fixed line, this field seeds to the quantity-weighted sum of those services' resolved catalog rates as a starting suggestion. Once you edit it manually, your entered value is authoritative and survives adding or removing services. A preset can also suggest this amount when added to a contract. Recurring seat services bill separately at quantity multiplied by unit rate and do not affect this field.
- Adjust for Partial Periods: Toggle on so the recurring fee scales to the covered portion of a service period when the contract starts or ends inside that period. When enabled, you also pick a Billing Cycle Alignment (Start of Billing Cycle, End of Billing Cycle, or Proportional Coverage).
Adding services and products to a Fixed line
- Click Add Item in the Services & Products section.
- Select a service or product from the catalog. Both services and products appear in this picker — Fixed is the only line type where products can be added.
- Set the Quantity (default 1).
- When you select a service, the rate field pre-populates from the service's catalog price for the contract currency (from
service_prices) if one exists, or from the service's default rate as a suggested value if not. Review the pre-filled amount before saving — it is editable and the catalog default is treated as a starting point, not a binding price.
In the service configuration, How does this service price? makes the quantity's purpose explicit:
| Option | How the quantity is used | Next period |
|---|---|---|
| Bundle price | Allocates a share of the line's fixed total for reporting and tax allocation. Changing the allocation quantity does not turn it into billable seats or change the bundle fee. | The bundle fee repeats. |
| Recurring seats/units | Bills the agreed quantity multiplied by Unit rate. No bundle total takes precedence over this service's seat calculation. | The same quantity and rate repeat until an effective change; no usage entries are needed. |
For example, GreenLeaf Dental Group buys 35 managed endpoints at $45.00 per endpoint per month. With Recurring seats/units, a full month bills 35 × $45.00 = $1,575.00 before tax, and the following full month bills the same amount without a usage report. A quantity of zero bills zero.
If the agreement instead specifies a $1,500.00 bundle fee, choose Bundle price. An allocation quantity of 35 helps distribute that fee; it does not produce a $1,575.00 charge.
When changing recurring seat quantity or rate, review the displayed effective unbilled service-period boundary. A change to 40 × $45.00 = $1,800.00 should start at the agreed boundary; earlier periods retain their previous quantity and rate. Preview that period before finalizing the invoice.
Product items added to a Fixed line support the same scheduled quantity and price change workflow as Recurring seats/units services. Open the line's schedule panel to stage a future quantity or rate change — for example, bumping a license seat count on a known renewal date — without editing the current billing period.
Hourly configuration
Used for labor billing based on approved time entries. Hourly lines always bill in arrears.
Line-level fields
- Contract Line Preset Name (required): Descriptive name (e.g. "Out-of-Scope Support Labor").
- Billing Frequency: How often hourly work is invoiced.
- Minimum Billable Time (minutes): The smallest increment billed. Time entries shorter than this are rounded up.
- Round Up To Nearest (minutes): Round time entries up to the nearest interval. Set to 0 or 1 to disable rounding.
Adding services to an Hourly line
- Click Add Hourly Service in the services section.
- Select a service from the catalog. Only services are shown — products cannot be added to Hourly lines.
- The Hourly Rate pre-populates from the service's catalog price for the contract currency, or from the service's default rate as a suggested value. Review and adjust as needed.
- Optionally enable Recommend bucket of hours to attach a bucket overlay to that service.
- On a real contract line, you can also configure User Type Specific Rates that override the default hourly rate for technicians, engineers, project managers, and other roles.
Usage-Based configuration
Used for quantity-driven billing such as monitored endpoints, storage, licenses, or transactions. Usage lines always bill in arrears.
Line-level fields
- Contract Line Preset Name (required): Descriptive name (e.g. "Endpoint Monitoring Per Device").
- Billing Frequency: How often usage is invoiced.
Adding services to a Usage line
- Click Add Usage-Based Service.
- Select a service from the catalog. Only services are shown — products cannot be added to Usage lines.
- The Rate per Unit pre-populates from the service's catalog price for the contract currency, or from the service's default rate as a suggested value. Review and adjust as needed.
- Confirm or enter the Unit of Measure (e.g. GB, device, user, API call).
- Optionally enable Recommend bucket of consumption to attach a bucket overlay.
In the service configuration, choose How is usage measured?:
| Option | What to record | How corrections behave |
|---|---|---|
| Record consumption as it occurs | Dated entries for each consumption event. Quantities add together. | Entries of 10 and 12 represent 22 units before pricing rules. Edit an existing entry to correct it. |
| Report a count for each period | One whole-period count for this service on this contract line. | Changing a report from 10 to 12 replaces it with 12; it never creates 22 units. |
Both modes require new records for the next period. A prior count does not carry forward, and a quantity saved on a Usage line is not a standing recurring-seat commitment. Report an explicit zero when appropriate; an absent record means usage is unreported.
Existing Usage entries retain their additive behavior. Changing measurement mode is prospective at an eligible unbilled period boundary, and existing records can block the change for that period. If moving to recurring seats, create and review the Fixed commitment separately, coordinate the end of usage billing, and check outstanding entries so the same service is not charged twice.
Tiered pricing (per service)
Usage-based services support progressive pricing. The tiered toggle is per service, not per line, so one Usage line can mix tiered and flat-rate services.
- On the service, turn on Enable Tiered Pricing for {service name}.
- Add tiers with unit ranges and per-unit rates (for example, 0–100 at $5/unit, 101–500 at $4/unit, 501+ at $3/unit).
- Optionally set the applicable minimum: Minimum per entry for additive consumption or Minimum per period report for a period count.
When tiered pricing is on for a service, the tier table becomes the active pricing model for that service. The Default Rate per Unit is used only when tiered pricing is off.
For dated additive entries, the minimum and tiers apply separately to each entry. For a period count, they apply once to the reported total. A minimum can raise an explicitly reported zero to a billable quantity, but it does not create usage or a charge when no report exists. Use Fixed recurring pricing for a guaranteed recurring commitment.
Bucket overlay
A bucket overlay can be added to an individual service inside an Hourly or Usage line. It defines an included allowance with overage billing once the allowance is exceeded. Buckets are stored per service, so a single Hourly line could carry two services with different bucket sizes side-by-side.
Bucket overlay fields
| Field | Description |
|---|---|
| Total {{units}} in Bucket | The included allowance for the period. Hourly buckets are entered in hours and stored as minutes; Usage buckets are entered in the configured unit of measure. |
| Overage Rate per {{unit}} | The charge applied to each unit consumed beyond the included amount. |
| Allow unused {{units}} to roll over | Toggle on to carry unused allowance into the next period. |
The overlay inherits the bucket period from the line's billing frequency, so there is no separate bucket-period selector in this workflow.
Example
A managed support contract includes 10 hours of support per month. Hours beyond 10 bill at $150/hour:
- Total Hours in Bucket: 10
- Overage Rate per Hour: $150
- Allow unused hours to roll over: Off
For a per-GB storage example, see the GreenLeaf Dental Group case at the top of this page.
Contract bucket, prepaid block, or weighted pool?
These three mechanisms all track an allowance, but they answer different billing questions. Choose based on where the allowance comes from and how it should survive across periods.
| Mechanism | Choose it when | Balance behavior |
|---|---|---|
| Contract bucket allowance | One Hourly or Usage service on a recurring contract includes a defined allowance | Period-scoped and attached to that service. The next service period replenishes its allowance; optional rollover follows the contract line's rule. |
| Prepaid hour block | A client buys a bundle of hours without a recurring contract | Blocks can stack, burn oldest first across months, and remain available until consumed or expired. |
| Weighted bucket-hour pool | Several services need to share one hour pool at different burn rates | Each service draws from the shared pool using its own multiplier, and overage is apportioned by actual pool consumption. |
Use the existing bucket overlay when the agreement says, for example, "10 support hours are included each month on this contract." Use a prepaid hour block when the client buys hours independently of a recurring agreement and expects the remaining balance to continue into later months. Use a weighted pool when standard support, after-hours work, or other services all need to consume one allowance but should not count equally.
See 14.28. Sell and Track Prepaid Hour Blocks Without a Recurring Contract for FIFO examples, calendar-date expiration, alerts, and weighted-pool overage arithmetic.
Adding contract lines to a contract
From the Contract Detail page, open the Contract Lines tab:
- Click Add from Presets to drop in a preconfigured line, or Create Custom to build a one-off configuration.
- Confirm or override the line settings. For Fixed services, review the bundle fee or recurring-seat quantity and unit rate. For Usage services, review the measurement mode.
- Add or adjust services on the line.
- Save the line. Repeat for each billable part of the agreement.
Editing and removing contract lines
- Click Edit on a contract line to change its settings, services, or rates.
- Click Delete to remove a contract line from the contract.
The services on a contract line can be edited after the line is created. You no longer have to delete and rebuild a line because the wrong service was attached to it, or because a client's plan changed which services it covers.
Edits affect future billing periods. Periods that have already been invoiced are not changed.
Check a change before you make it. The contract simulator runs an edited scenario across 3, 6, or 12 billing periods and compares the result against the untouched live contract, without writing anything. On Pro, it is worth using before any line change that alters what a client pays.
Example MSP contract structures
Use these examples as starting points when designing contracts for real clients. Every example below maps to the line types covered on this page — Fixed, Hourly, and Usage, with an optional bucket overlay on Hourly or Usage lines for included quantities and overage rates.
Example 1 — Managed endpoint bundle
Scenario: A 35-seat professional services client buys a complete managed IT plan.
| Line | Billing model | Example setup |
|---|---|---|
| Managed Endpoint Care | Fixed | 35 endpoints priced into a single monthly fixed fee, or a per-unit fixed service that multiplies the per-endpoint rate by the seat count. |
| Security Monitoring | Fixed | One monthly security operations fee. |
| Microsoft 365 Management | Fixed or Usage | Fixed if the client pays a flat management fee; Usage if you pass through license counts that change month to month. |
Best when you want a predictable monthly invoice and simple client communication. Pass-through licenses can be modeled as product-kind services on the Fixed line, or as a Usage line if the count varies. See 14.8. Pricing Schedules for pricing tiers and seat-count math.
Example 2 — Block-of-hours support bank
Scenario: A co-managed IT client prepays for 20 support hours per month and pays overage for extra work.
| Line | Billing model | Example setup |
|---|---|---|
| Support Hours Bank | Hourly with bucket overlay | One Hourly line with a bucket overlay configured for 20 included hours per period and an overage rate (for example, $185/hour) applied to time beyond the bank. Optionally enable rollover so unused hours carry into the next period. |
The bucket overlay lives on the Hourly line itself, so a single line covers both the included hours and the overage charge. You only add a second Hourly line if you want to bill a different category of work (for example, after-hours emergency labor) at a separate rate that should not draw down the bank. Approved time flows in during invoice generation (see 14.14. How Accounting Works in AlgaPSA) and is netted against the bucket.
Best when the client wants predictable support coverage but understands that excess labor is billable.
Example 3 — Backup storage with included allowance
This is the GreenLeaf Dental Group scenario described at the top of this page: a Fixed monthly base fee plus a Usage line with a bucket overlay for backup storage, billed at $0.20/GB beyond a 1,000 GB included allowance. See the worked example near the start of this doc for the full setup and per-period math. Usage is recorded through 14.15. Usage Tracking before invoices are generated in 14.12. Generating Invoices.
Example 4 — Security event ingestion
Scenario: A client buys managed SIEM or MDR services where log volume varies each month.
| Line | Billing model | Example setup |
|---|---|---|
| MDR Base Service | Fixed | Monthly monitoring and response fee. |
| Log Ingestion | Usage with bucket overlay | Bill by GB ingested, events processed, or protected workload count. Configure the bucket overlay with an included allowance (for example, 500 GB) and an overage rate per unit. |
Best when operating cost changes with volume and you want invoice transparency. The bucket overlay handles the "included up to X, then per-unit overage" pattern in a single Usage line.
Example 5 — Project retainer with billable extras
Scenario: A client retains your team for a cloud migration or compliance project but expects overage for out-of-scope work.
| Line | Billing model | Example setup |
|---|---|---|
| Project Retainer | Fixed | Monthly retainer or milestone fee. |
| Out-of-Scope Engineering | Hourly | Approved time billed in arrears. Add a bucket overlay if part of the retainer is meant to cover a defined number of hours. |
| Materials or Licenses | Fixed (with product-kind services) or Usage | Pass-through items modeled as product-kind services for licenses and hardware, or as a Usage line when the quantity varies each period. |
Best when the contract has predictable recurring project management plus variable engineering effort.
Choosing the structure
Ask these questions before creating the contract:
- Is the charge predictable every period? Use a Fixed line.
- Does the amount depend on approved labor? Use an Hourly line.
- Does the amount depend on measured consumption? Use a Usage line.
- Does the customer get an included allowance with overage above it? Add a bucket overlay to the Hourly or Usage line; configure included quantity, overage rate, and rollover.
- Are you reselling licenses or hardware? Use product-kind services on a Fixed line, or a Usage line if the quantity varies.
- Should the client see one combined invoice? Put related lines in the same invoice window and cadence where possible.
For most MSPs, the most common contract pattern is a Fixed monthly managed services line plus one or more variable lines for time, usage, licenses, or overage.
Related topics
- 14.3. Service Catalog — define the services Hourly, Usage, and Fixed lines pull from.
- 14.6. Creating Client Contracts — where contract lines live.
- 14.8. Pricing Schedules — apply per-client pricing on top of contract lines.
- 14.12. Generating Invoices — how Billing Timing turns into actual invoices.
- 14.15. Usage Tracking — how measured consumption flows into Usage lines and bucket overlays.
