This article covers the rate-card-first workflow — the way PortaPro is designed to handle construction sites and any other customer who rents units month after month on a recurring cycle. If you're doing weekend event rentals, see the Weekend Event Rental workflow instead; if you're doing roll-off dumpsters, see the roll-off swap cycle guide.
The rate-card-first workflow is different from single-job dispatch. Instead of booking one delivery job that carries the units, you declare what's at each site on the customer's Rate Card, place the physical units on the map, and PortaPro bills the recurring cycle automatically. This article walks you through the full lifecycle: set up the customer, add sites and units, place them on the map, run cycle invoices, and set up autopay so the customer's card is charged on cycle close.
---
LTR-1: When to Use This Workflow
Use rate-card-first when:
Use single-job dispatch instead when:
Signals you're on the wrong workflow
---
LTR-2: Create the Customer and Their Site
Step 1: Create the customer
Step 2: Add a service location
Even if the service address is the same as the billing address, create it explicitly as a service location. The Rate Card attaches to service locations, not to the customer as a whole.
- Active — the site is live now; PortaPro treats it as billable immediately
- Pending Delivery — the site is contracted but the units aren't out yet; PortaPro will auto-generate a delivery job when you set a scheduled delivery date
Active sites go straight into the current cycle; pending-delivery sites wait for the auto-generated delivery job to complete before they activate.
---
LTR-3: Set Up the Rate Card (What's at the Site)
The Rate Card is where you declare "at this site, the customer has N of these units, at this rate, on this billing period." It's the contract in software form.
Step 1: Open the Rate Card
Step 2: Add a Rate Card row
Each row represents one unit type at one site. Fill in:
Save the row. Repeat for every unit type at the site.
Important: fill in every field
When a Rate Card row is missing product, unit type, or service day of week:
PortaPro shows a soft warning in the Rate Card modal when these fields are missing. Fix the warning before you save.
---
LTR-4: Place Units on the Map (Physical Ground Truth)
The Rate Card declares *what should be at the site*. Placing pins on the map records *where each unit physically is*. Both are needed:
Step 1: Open the customer's map
Step 2: Drop a pin at the exact location
Step 3: Attach units to the pin
PortaPro enforces that the sum of untracked counts across all pins at a site cannot exceed what you declared on the Rate Card. It shows a "placement discrepancy" warning if it does.
---
LTR-5: The Rentals & Services Tab — What's Actually Deployed
The Rentals & Services tab on the customer profile shows every site with active deployed inventory. As of the July 2026 update, this tab reads from three sources at once:
This is why customers on the rate-card-first workflow — where units are declared and placed, not job-assigned — used to see an empty Rentals & Services tab even though their cycle invoice billed $1,170 of active service. That's fixed. You'll now see the sites correctly, labeled with the source:
Unit counts on the tab
When a site has both declared and placed units, the tab shows the placed count (physical truth) — otherwise it shows the declared count (contractual). This keeps the tab honest: it never invents units the customer doesn't physically have.
---
LTR-6: Run the First Cycle Invoice
Once the site is active with a Rate Card, PortaPro will generate cycle invoices on the customer's schedule automatically. You can also generate one manually to verify.
Manual cycle invoice (verification):
The invoice appears in draft state. Review it, then send.
What lands on the invoice
What does NOT land here
---
LTR-7: Set Up Autopay (End the Dead End)
The recommended setup for cycle billing is: when the cycle closes and the invoice sends, the customer's card is charged automatically. To do that, PortaPro needs a card on file.
Step 1: Enable autopay on the customer
If no card is on file yet, autopay refuses to enable — that's intentional, because enabling autopay with no card would silently fail on every cycle close.
Step 2: Save a card
Step 3: Re-enable autopay
Now that a card is saved, click Enable Autopay again. PortaPro asks you to pick the default card and confirms; from this cycle on, when the cycle invoice sends, the card gets charged.
If autopay was "a dead end" before
Before the July 2026 fix, PortaPro correctly refused to enable autopay without a saved card, but there was no operator UI to save one — the setup-intent route existed but nothing called it. If you tried this before and got stuck, the Add Card button now works and completes the loop.
---
LTR-8: Auto-Generated Delivery Jobs (Pending-Delivery Sites)
When you add a site with status Pending Delivery *and* a Scheduled Delivery Date, PortaPro auto-generates a delivery job for that date. The job carries only Rate Card rows that have a product set — rows without one are skipped silently (which is why the field warning in LTR-3 matters).
Once the driver completes the delivery job:
Sites created as already Active
If you set a site straight to Active (because the units are already out), no delivery job is generated — this is by design. If you need a delivery job for record-keeping in this case, create it manually from the customer profile.
---
LTR-9: Troubleshooting
"The Rentals & Services tab is empty but the cycle invoice is $1,170."
Fixed in July 2026 — update to the latest deploy. The tab now reads from Rate Card declarations and map placements, not only from job assignments.
"I can't enable autopay — it says I need a payment method."
This is correct. Click Add Card in the same panel to save one; the setup-intent flow will let you enter the card details. Then re-enable autopay.
"Autopay 401 in the browser console."
Fixed in July 2026 (missing X-Organization-Id header on one fetch). Update to the latest deploy.
"The delivery job never got created for a pending-delivery site."
Two possible causes:
"The Rate Card modal warned about missing product / unit type / service day."
Fill those in before saving. Missing fields don't block save (data may be intentional), but they break the operational side of the workflow: delivery jobs, skills routing, and the driver route plan.
"One customer has both declared units on the Rate Card and pins on the map, and the counts don't match."
This is a placement discrepancy. Open the site inventory tool: if you have MORE placed than declared, that's a loud warning (you're deploying more than the contract). If you have FEWER placed than declared, that's a silent under-placement (the contract expects more units than are physically there — reconcile by either updating the Rate Card or placing more pins).
---
