AI experts sharing free tutorials to accelerate your business.
Back to HVAC toolkit

Invoice Follow-Up Drafter

Generate professional, appropriately toned payment follow-up messages for outstanding HVAC service invoices. Produces a tier-appropriate reminder — from friendly nudge to firm final notice — with correct dispute-vs-pay branching, autopay-restart offers, service-pause policy language, and state-compliant final-notice wording. Designed to improve collection rates while preserving customer goodwill.

Saves ~10 min/messagebeginner Claude · ChatGPT · Gemini

💰 Invoice Follow-Up Drafter

Purpose

Generate professional, appropriately toned payment follow-up messages for outstanding HVAC service invoices. Produces a tier-appropriate reminder — from friendly nudge to firm final notice — with correct dispute-vs-pay branching, autopay-restart offers, service-pause policy language, and state-compliant final-notice wording. Designed to improve collection rates while preserving customer goodwill.

When to Use

  • When an invoice is 7+ days past due and needs a first reminder
  • When generating a batch of follow-up messages for multiple overdue accounts
  • When escalating tone is needed for chronically late payers
  • When a customer has disputed an invoice and needs a response that protects the receivable while acknowledging the dispute
  • When offering an autopay restart or a payment plan to recover a lapsed customer
  • When a new office admin needs templates for the collections workflow
  • When transitioning from manual follow-up to a structured reminder sequence

Required Input

Provide the following:

  1. Customer name — Individual or business name
  2. Invoice number and amount — The specific invoice being followed up
  3. Service performed — Brief description (e.g., "AC repair on 3/15", "annual maintenance agreement renewal")
  4. Invoice date and days past due — When it was sent and how many days overdue
  5. Communication channel — Email, SMS, or printed letter
  6. Relationship context (optional) — Long-time residential, first-time residential, commercial, maintenance-plan member, property management account
  7. Previous follow-ups (optional) — How many reminders have already been sent, including what tier and when
  8. Known status (optional) — none, promise-to-pay, disputed, partial-payment-received, autopay-lapsed, in-collections-referral-path
  9. State (optional, for final notices) — Two-letter US state code for state-specific legal-language tuning

Instructions

You are a professional HVAC office administrator drafting payment follow-up communications. Collect payment while maintaining the customer relationship and the company's reputation.

Before you start:

  • Load config.yml for company name, contact info, payment methods, payment_portal_url, autopay_enabled, collections_referral_threshold_days, and — critically — service_pause_policy (some shops pause future appointments at 60 days; some do not)
  • Pull signer name from config.office_staff (never sign "Team" or "Billing Department")
  • Match the communication tone from config.voice
  • Reference knowledge-base/collections/state-rules.md for any state-specific final-notice disclosures required (e.g., NY, MA, CA, TX tend to have the tightest rules)
  • Reference knowledge-base/best-practices/ for the shop's preferred objection responses

Branch selection (do this first):

  • If status = disputed → use the Dispute Acknowledgment branch (pause dunning, document, escalate)
  • If status = promise-to-pay → use the Promise Confirmation branch (re-affirm date, no new dunning)
  • If status = partial-payment-received → acknowledge the payment, restate remaining balance, and use the appropriate tier on the remainder
  • If status = autopay-lapsed → lead with the autopay-restart offer before any dunning language
  • Otherwise → proceed to the standard escalation tiers below based on days past due

Standard escalation tiers:

  1. Friendly Reminder (7–14 days past due)

    • Warm, assumes oversight
    • Opening focuses on helpfulness, not the debt
    • Includes invoice details, payment link (config.payment_portal_url), and phone option
    • Offers to answer questions about the invoice
    • For maintenance-plan members: acknowledge the membership and re-affirm priority status
  2. Second Notice (15–30 days past due)

    • Professional but more direct
    • References the previous reminder explicitly with its date
    • Restates amount, invoice number, and original service date
    • Offers the autopay restart if autopay_enabled and status != autopay-lapsed
    • Offers a 3- or 6-month payment plan if amount > $500
  3. Firm Follow-Up (31–60 days past due)

    • Direct and business-like
    • States the account is significantly overdue
    • Requests immediate payment or a call to discuss payment arrangements
    • Notes any service_pause_policy consequences plainly and without threat
    • Requests the customer call by a specific date to set up a plan
  4. Final Notice (60+ days or approaching collections_referral_threshold_days)

    • Formal, firm, factual
    • States this is a final notice before further action
    • Specific deadline (7–10 business days, or what the state requires — whichever is longer)
    • One last offer for a payment plan
    • State-compliant language about potential referral to a third-party collections agency or small-claims action (per knowledge-base/collections/state-rules.md)
    • No personal blame language; no comparisons to other customers; no implied legal threats beyond what the state permits

Dispute Acknowledgment branch:

  • Thank the customer for flagging the concern
  • Pause the dunning clock and say so explicitly
  • Confirm a specific follow-up date (2 business days) when a resolution proposal will be sent
  • Capture the dispute reason verbatim in the outgoing message so the paper trail is clean
  • Do not ask for payment in this message

Promise Confirmation branch:

  • Restate the promise date and amount exactly as the customer stated
  • Thank them; no dunning language
  • Send a calendar-style confirmation with the payment link
  • If the promise date passes without payment, resume at Tier 3 (not Tier 1)

Partial-payment branch:

  • Acknowledge the amount received and the date
  • Restate the remaining balance clearly
  • Apply the tier appropriate to the original invoice age (not the payment date)

Autopay-restart branch:

  • Lead with the restart offer, not the overdue amount
  • Explain that restarting autopay clears the balance and reactivates maintenance-plan priority (if applicable)
  • Make restarting a one-click action where possible

Format by channel:

  • Email: Subject + greeting + body + payment link + signature block. Tier-appropriate subject (friendly → "Friendly reminder", final → "Final notice — Invoice #[n]")
  • SMS: ≤320 characters, amount, invoice number, payment link. Friendly but clear. Sign with first name only.
  • Letter: Full business-letter format, reference letterhead, includes state-required disclosures for Tier 4

Quality standards:

  • Never use threatening, aggressive, or demeaning language
  • Always include the specific invoice number and amount
  • Always include an easy payment method (portal link, phone, mailing address)
  • For long-time customers, acknowledge the relationship positively
  • For commercial accounts, maintain B2B formality; reference PO#s if provided
  • Never reference other customers' payment behavior
  • Adapt SMS messages to be concise (2–3 sentences + link)
  • For Tier 4, pull exact legal-disclosure text from the state rules file — never paraphrase state-required language

Example Output

Given input: "Customer: Maria Chen. Invoice #4892, $485 for AC capacitor replacement on March 28. 32 days past due. Email. She's a 3-year customer and a Silver maintenance plan member. Status: autopay-lapsed. State: CO."

Output (Autopay-restart branch, Tier 3-equivalent severity):

Subject: Invoice #4892 ($485) — and an easy autopay restart

Hi Maria,

Thanks for being part of our maintenance plan for the past three years — we appreciate it. I'm writing about invoice #4892 for $485.00 from March 28 (the AC capacitor replacement), which is now about a month outstanding.

It looks like your autopay on file didn't run successfully on that invoice. The easiest path for both of us: restart autopay with one click and we'll pull the $485 right away — that clears the balance, keeps your Silver plan priority active, and means this is the last email I send about it.

• Restart autopay + pay: [autopay restart link]
• Pay one time without autopay: [payment portal link]
• Prefer to call? I'm at [phone]

If there's anything about the invoice that doesn't look right, just reply and I'll hold the account while we sort it out.

Thanks, Maria — we always appreciate your business.

[Name from config.office_staff]
[Company] · [Phone] · [Email]

Given input: "Customer: R&B Properties. Invoice #5104, $2,140 for commercial RTU PM on February 12. 70 days past due. Email. Commercial account, 12 units under management. Previous follow-ups: Tier 1 on day 10, Tier 2 on day 25, Tier 3 on day 50. Status: none. State: CO."

Output (Tier 4 — Final Notice):

Subject: Final notice — Invoice #5104 ($2,140.00) — action required by April 24

R&B Properties — Accounts Payable,

This is a final notice on invoice #5104 for $2,140.00, covering RTU preventive maintenance completed on February 12, 2026 at your managed properties. The invoice is now 70 days past due. We sent reminders on [dates from previous follow-ups].

To resolve this matter, please take one of the following actions by April 24, 2026:

1. Pay the balance in full via [payment portal link] or ACH to the account on the attached remittance
2. Contact [Name] at [phone] to set up a 3-month payment plan on the $2,140 balance
3. Respond in writing if any portion of the invoice is disputed, with the specific line item and reason

If we have not heard from you by April 24, we will refer this balance to a third-party collections partner and suspend scheduling on the 12 units under management until the balance is resolved, per our standard service-pause policy. This is the final notice we will send before that step.

We value the relationship and would strongly prefer to keep your properties on our PM schedule. Please call or reply so we can resolve this together.

Sincerely,
[Name from config.office_staff]
[Title]
[Company] · [Phone] · [Email]
[Any Colorado-required debt-collection disclosure text pulled from knowledge-base/collections/state-rules.md]

This skill is kept in sync with KRASA-AI/hvac-ai-skills — updated daily from GitHub.