Roll-off terms have three fields the original swap-cycle article only briefly mentioned. They matter because two of them (Included Days and Overage $/day) drive a whole class of charges, extended-rental fees, that customers see as a separate line on the final statement, and the third (Debris Type) shows up on the driver's card and the invoice for material-type disputes.
If you're new to how roll-off bills, start with the Roll-Off Swap Cycle Workflow; this article expands three fields it treats briefly.
---
OD-1: The Three Fields at a Glance
| Field | Column | Where you set it | What it does |
|---|---|---|---|
| Included Days | `rental_terms.included_days` (default 14) | Set on the wizard (from Step 2 schedule) or the product default | The number of days included in the base rental before day-overage kicks in |
| Overage $/day | `rental_terms.daily_overage_rate` | Set on the wizard, EditTermDialog, or the product default | Dollars per day the container is out past the included days |
| Debris Type | `rental_terms.debris_type` | Set on the wizard or EditTermDialog | Free-text label for what the customer is loading (e.g. "Construction", "C&D", "Roofing") |
None of these are enforced. Included Days defaults to 14 if you don't set it. Overage $/day is optional, leave blank if you don't charge day overages. Debris Type is optional, leave blank if you don't need to track material type.
---
OD-2: Included Days, How the Term's Length Is Decided
Every roll-off term has an expected end date, when the customer expects to be done and dispatch expects to pull the box. Two ways it lands on the term:
The chosen number is stored on the term as `included_days`; the pickup cron computes `expected_end_date = start_date + included_days` if the operator didn't set an explicit end date.
Wizard behavior: on the Products & Services step, the Roll-Off Rental Term panel shows a summary line: "Included days: N (from the Step 2 schedule)." If the product's catalog default is different from what Step 2 has, an extra note appears: "this container's catalog default is M days." The Step 2 value wins; the product default is shown for comparison so the operator can spot a mismatch before saving.
---
OD-3: Overage $/day, What Extended-Rental Fees Look Like
A customer keeps a 20-yard box on their site for 45 days when they were quoted 14. Two separate things happen:
Both are legitimate. The rental base covers the rental *itself*; the day-overage fee is the *penalty* for holding the box past the agreed term. Many operators use them together as a way of nudging customers toward pickup without hard-blocking. Some operators use just one or the other, that's a business decision, not a system requirement.
Leave `daily_overage_rate` blank if you don't charge day-overage fees; the base re-tiers on pickup either way.
---
OD-4: Debris Type, Where It Shows Up
`debris_type` is a free-text field on the term. It shows up in three places:
Common values: "Construction debris" (or "C&D"), "Roofing", "Concrete", "Green waste", "Household junk." Operators often standardize a small vocabulary internally so the search filter is useful; the system doesn't enforce any vocabulary.
Debris type does NOT gate disposal-site selection or refuse the load, it's descriptive, not enforcing. Enforcement (which materials go to which landfill) is your dispatcher's/driver's job.
---
OD-5: Setting the Three Fields
At term creation (job wizard, most common path)
After the term exists (EditTermDialog): Sidebar → Roll-Off Rentals → the term row → pencil icon. All three fields are editable. Save also fires `recompute-charges` for the term's completed, un-invoiced pulls, so a rate change picks up any pulls already run.
As product-level defaults (catalog): Inventory → the product → Roll-Off Rental Defaults card → set "Overage $/day" and "Included days." Debris type is NOT stored per-product (it varies per job, not per container type). See Roll-Off Container Setup.
---
OD-6: Troubleshooting
"The final statement shows a $0 day-overage line for a 30-day term that went 45 days."
Either: `daily_overage_rate` is null/zero on the term (edit the term to set a rate; the recompute on save will retro-stage), or the pickup hasn't completed yet, so `actual_end_date` is still null and the fee hasn't been staged. Complete the pickup, then check.
"The customer says they were only quoted a 14-day rental but the term is showing 30 days."
The wizard's Step 2 (`rental_duration_days`) is the authority, not the product catalog default. If the operator entered 30 on Step 2, the term is 30 days. Fix by opening the term (Roll-Off Rentals page → pencil) and editing Expected pickup to match the actual agreed date.
"The debris type I need isn't in a dropdown."
It's free-text, there's no dropdown. Type it in on the wizard or EditTermDialog. Standardize the vocabulary internally so your search works consistently.
"Can I make debris type required?"
Not through settings. The field is optional at every entry point. If your ops require it, treat it as a dispatcher-process rule, not a system rule.
"The customer sends a mix of debris types, can I split a term?"
No. One term equals one debris_type. If a customer is running a mixed-material job and you want to bill differently by material, use separate terms (separate delivery jobs at the same site).
---
