Home / Blog / Contractor invoice reminder texts: 7 problems and how to fix them
Contractor invoice reminder texts: 7 problems and how to fix them
Troubleshooting invoice reminder texts for HVAC and plumbing shops: reminders after the customer paid, duplicate texts, stale links after a partial payment, voided invoices, opt-outs, SMS costs and when to stop texting and call.
Most invoice reminder texts go wrong in one of a few ways: they keep going after the customer paid, they arrive twice, they link to the wrong balance, or they keep chasing an invoice nobody should pay. Each problem has a specific fix. Check the balance right before every send, send each step once, and hand anything past about three weeks to a person.
Contractors wait a long time to get paid. In a 2025 ServiceTitan report on more than 1,000 specialty contractors, mostly plumbing, HVAC and electrical shops focused on construction work, the majority said 38 days is the average time to get paid, and nearly 80% named timely billing as a top strategy for being profitable. That survey covers construction-focused firms and comes from a software vendor, but residential shops know the feeling too: the job is done, the customer was happy, and the invoice sits.
A text with a pay link is the cheapest nudge there is. Here's how to fix the ways it goes wrong. The fixes come from building and testing our invoice payment-reminder recipe for Jobber shops.
Before you troubleshoot: check what Jobber already does
If you're on Jobber's Connect plan or higher, Jobber's pricing page lists "Automate quote and invoice follow-ups" among the features added above Core. Try that first. You may not need a custom workflow at all, and you should never run two reminder systems on the same invoices, because that's problem 2 below. Build your own only if you need something the built-in follow-ups don't do, such as an owner hand-off list or a fresh link for a partial balance.
Problem 1: The customer already paid and still got a reminder
Symptom: a customer texts back "I paid this last week." Nothing loses goodwill faster.
Cause: the reminder schedule was set when the invoice went out, and nothing checked the balance before each send. Or the payment came in by check and nobody recorded it.
Fix: check the live balance at send time, not at schedule time. In our recipe, a daily sweep reads each open invoice's balance from Jobber and skips anything at zero. In Stripe mode, a paid link stops reminders right away. Record checks and cash in Jobber the same day so the sweep sees them. Add a line for the edge case you can't fully close: "Already paid? Thank you - please ignore this."
What our test showed: in the mock run, an invoice paid between reminders got no further texts, and an invoice that was already paid when the sweep ran was skipped.
Problem 2: Customers get the same text twice
Symptom: two identical texts a few seconds or minutes apart.
Cause: webhooks are delivered "at least once." If your workflow is slow to answer, the sender retries and you process the same invoice event twice. Running a built-in reminder and a custom one together causes the same thing on a schedule.
Fix: keep a record of what you've sent, keyed by invoice and reminder step, and check it before every send. Then a retried delivery or a same-day re-run does nothing.
What our test showed: a repeated Jobber delivery produced no second text, and running the daily sweep a second time on the same day sent nothing twice.
Problem 3: The link asks for the full amount after a partial payment
Symptom: a customer paid $200 by check, and your reminder still links to the original total.
Cause: the pay link was created once, for the original amount, and reused.
Fix: when the balance changes, create a new link for the new balance and turn off the old one, so nobody can pay the stale amount. When the balance hasn't changed, reuse the existing link so the customer doesn't see a new URL every time.
What our test showed: after a mock partial check payment, the recipe created a new $200 link and deactivated the old one. A partially paid invoice was billed at its $150 balance in the first sweep, and an unchanged invoice reused its link.
Problem 4: A voided invoice is still being chased
Symptom: you canceled the job or re-issued the invoice, and the customer still gets "your invoice is open."
Fix: skip voided invoices explicitly, and re-check status before each step, not just at the start. If you built your integration a while ago, confirm it reads Jobber's voided status at all.
What our test showed: a voided invoice was never chased, and one voided mid-ladder stopped.
Problem 5: Customers who said STOP
Symptom: a customer replied STOP to an earlier text, and the reminders keep coming, or they stop but your other texts don't.
Fix: treat an opt-out as applying to the customer, not just to one workflow, and include "Reply STOP to opt out" in the first text. Texting rules for businesses are covered in our guide to whether missed-call text-back is legal, and most of it applies to payment texts too. This isn't legal advice.
What our test showed: opted-out customers were skipped in the daily sweep.
Problem 6: The texts cost more than you expected
Symptom: the bill shows double the number of messages you sent.
Cause: SMS is billed per segment. Twilio prices US texts at $0.0083 per segment, and a plain-text segment holds up to 160 characters. On top of that come carrier fees (Twilio's examples are $0.0035 for AT&T and $0.0045 for T-Mobile per outbound text) and 10DLC registration fees. A reminder with a greeting, an amount, an invoice number and a pay link runs past 160 characters.
What our test showed: every reminder in our run was 2 segments, for example: "Hi Dana, friendly reminder from Ridgeline Heating & Plumbing: $412.50 is open on invoice #2201. Pay here: [link] Already paid? Thank you - please ignore this." At $0.0083 a segment, that's about 1.7 cents per text before carrier fees. That's small next to the card fee: Jobber lists online card processing at 2.9% + 30¢ in the US, which you'd pay on a card payment anyway.
Fix: don't cut the pay link to save a segment. Do cut filler words, and cap the number of reminders.
Problem 7: Reminders that never end
Symptom: day 30, day 45, still texting. The customer has stopped reading.
Fix: set an end. Our ladder texts on day 3, 7 and 14, then on day 21 the owner gets a list of what's still open instead of the customer getting more texts. A phone call from the owner at that point does more than a fourth text, and it's the right moment to find out whether there's a complaint behind the silence.
What our test showed: on the simulated October 27 sweep, invoices #2201, #2195, #2188 and #2205 got their first reminders, and the owner's digest listed invoice #2180 (Alicia Moreno, $640.00, 21 days). On later simulated dates, #2188 and then #2195 moved to the owner list once they reached day 21, and the day-21 digest went out once per invoice.
How we tested, and what we didn't
Everything above ran in n8n against mock versions of Jobber and Twilio. In Stripe mode, all 10 of 10 scenarios passed on October 28, 2026, and in Jobber client-hub link mode, 5 of 5 passed. In a separate run on October 27, 8 of 8 passed against Stripe's real test mode, paid with Stripe's test card, with Jobber and Twilio still mocked. We have not run it against a live Jobber account or sent real texts. Two limits to know: paid detection in Stripe mode reads up to 100 completed checkouts from the last 35 days per sweep, so a busy account needs pagination, and it was tested with USD card payments only.
Related fixes for HVAC and plumbing shops
Late payments are the last step in a chain that starts with the phone:
- Calls you miss: what missed HVAC calls cost and a missed-call text-back that books jobs, with the recipe and n8n and Twilio build guide.
- Calls you answer and don't book: HVAC CSR training with a call scorecard.
- Quotes that go quiet: a 3-touch estimate follow-up and its recipe.
- Night calls: an after-hours emergency triage plan.
- Turning a tech's voice memo into a draft invoice: voice memo to invoice.
See all five on the HVAC and plumbing hub. If your shop has a reminder setup that works, tell us about it.
Sources
- ServiceTitan press release (April 10, 2025): Commercial Specialty Contractor Industry Report, survey of more than 1,000 specialty contractors by Thrive Analytics; most noted 38 days as the average time to payment; nearly 80% named timely billing as a top strategy for being profitable. Vendor survey. servicetitan.com
- Jobber pricing page: invoice follow-ups on Connect and up; 2.9% + 30¢ online card processing. Checked October 28, 2026. getjobber.com
- Twilio US SMS pricing: $0.0083 per segment, carrier fees and registration fees. Checked October 28, 2026. twilio.com
- Test results: our invoice payment-reminder recipe, runs of October 27 and 28, 2026, against mocks (and Stripe test mode where noted).
Found an error or a better source? Corrections policy. More articles on the blog.