# Chase past-due JobNimbus invoices with escalating emails

> Every weekday, find every unpaid JobNimbus invoice, email each customer one reminder that gets firmer as it ages, and post a receivables summary to Slack.

- Workflow type: agent
- Services: JobNimbus, Gmail, Slack Bot
- Categories: Finance
- Published: 2026-08-04

## What it does

- Checks your invoices and payments every weekday morning and works out what is genuinely still unpaid, ignoring anything a payment already covers
- Sends one reminder per customer instead of one per invoice, so a homeowner with three open invoices hears from you once with all three listed
- Escalates the tone as the debt ages: a friendly nudge at 7 days, a firmer notice at 14 days, and a final notice at 21 days that also creates a task for the account owner to phone the customer
- Posts a single Slack summary with total dollars outstanding, how many invoices sit in each aging bucket, and the five largest balances by customer

## What you'll need

- A JobNimbus account with your invoices and payments recorded in it
- A Gmail account to send the payment reminders from
- A Slack workspace and a channel for the daily receivables summary
- Customer email addresses filled in on your JobNimbus contact records
- A task type set up in JobNimbus so the 21 day call tasks have somewhere to land

## Prompt

Every weekday at 8am, review all outstanding JobNimbus invoices, email each customer a single payment reminder whose tone escalates with how overdue they are, and post one receivables summary to Slack.

Start by pulling the full picture from JobNimbus. Use List Invoices to get every invoice and List Payments to get every payment. Both endpoints return an envelope shaped { count, results } where count is the total number of records in the account and not the size of the page you received, so page through with the size and from parameters (size up to 1000, from as a zero based offset) until a page comes back with fewer rows than you asked for. All timestamps are Unix epoch seconds. If you need to narrow the pull, these list endpoints accept an ElasticSearch style filter parameter, for example a range clause on date_updated.

Reconcile the payments against the invoices yourself rather than trusting a single status field. For each invoice, sum every payment that applies to it and subtract that from the invoice total to get the genuinely outstanding balance. Skip any invoice whose recorded payments already cover its balance, and skip anything where the remaining balance is zero or negative. Only invoices with a real outstanding amount and a due date in the past go any further.

Bucket every remaining unpaid invoice by how many days past its due date it is: 1 to 6 days, 7 to 13 days, 14 to 20 days, and 21 or more days.

Group everything by customer rather than by invoice. A homeowner with three open invoices must receive exactly one email listing all three, never three separate emails. Duplicate chase emails to the same customer are the fastest way to get this workflow turned off, so send at most one email per customer per run. Decide each customer's escalation tier from their most overdue invoice so the tone matches the worst case across their balances.

For every customer whose oldest unpaid invoice is 7 or more days past due, draft and send one reminder using Gmail Send a Message, addressed to the email on their JobNimbus contact record. Vary the tone by tier. At 7 to 13 days write a friendly nudge that assumes the invoice simply slipped through. At 14 to 20 days write a firmer notice that states the amount plainly and asks for a specific payment date. At 21 or more days write a final notice that makes the consequences clear while staying professional. Every email should itemize each open invoice with its number, issue date, due date and outstanding amount, and state the combined total owed. Customers whose invoices are all fewer than 7 days past due receive no email, but they still count toward the Slack totals.

For each customer in the 21 or more days tier, also use JobNimbus Create a Task to create a task for the account owner to phone the customer, referencing the customer name and their total outstanding balance. Create one task per customer, not one per invoice. Tasks require a record_type_name that matches an existing task type in the account, which you can read from the account settings.

Finally, post one message to Slack using the Slack Bot Send a Message operation. Summarize the total dollars outstanding across all unpaid invoices, the number of invoices in each aging bucket, and the five largest overdue balances by customer with the customer name and amount. Also report how many reminder emails were sent, broken down by tier, and how many call tasks were created.

Handle the edge cases explicitly. If a customer has no email address on file, skip their email and list them as an exception at the end of the Slack message so someone can chase them manually. If nothing is outstanding, post a short all clear to Slack instead of an empty report. Never send a second email to a customer you have already emailed in the same run.

## How to customize

- Change the 7, 14 and 21 day thresholds to match your own payment terms
- Rewrite the wording and tone of each reminder tier to sound like your business
- Change the run time, switch it to every day including weekends, or pick a different Slack channel
- Set a minimum balance so small invoices never trigger a chase email

## Example output

Receivables summary for Tuesday

Total outstanding: $84,320 across 37 unpaid invoices

Aging buckets
1 to 6 days past due: 11 invoices ($18,940)
7 to 13 days past due: 12 invoices ($24,180)
14 to 20 days past due: 9 invoices ($21,750)
21 or more days past due: 5 invoices ($19,450)

Largest overdue balances
1. Meridian Property Group: $9,850
2. R. Castellano: $6,400
3. Northline Estates HOA: $5,220
4. D. Whitfield: $4,110
5. Hartman Roofing Partners: $3,880

Actions taken: 21 reminder emails sent (12 friendly, 6 firm, 3 final notice), 3 call tasks created for account owners.

Exception: T. Braddock ($1,240, 16 days past due) has no email address on file.

## FAQ

### Will a customer with several unpaid invoices get several emails?

No. Everything is grouped by customer before anything is sent, so someone with three open invoices receives one email that lists all three and shows the combined total. This is the main thing that stops customers feeling spammed.

### What happens if a customer already paid?

Payments are matched against invoices before any email goes out. If the payments recorded against an invoice cover its balance, that invoice is treated as settled and never chased.

### Can I change the 7, 14 and 21 day schedule?

Yes. Those thresholds are just the starting point, based on a common contractor collections ladder. If your terms are net 30 or you prefer a gentler cadence, you can move each step and reword the message that goes with it.

### Does it email anyone who is only a day or two late?

No. Nothing is sent until an invoice is at least 7 days past due. Invoices that are only slightly late still show up in the Slack summary so you can see them coming.

### What happens at the final notice stage?

On top of the final notice email, a task is created in JobNimbus for the account owner to phone the customer. Once a balance is three weeks old, a call usually recovers it faster than another email.

### What if a customer has no email address on file?

They are skipped for email and listed as an exception in the Slack summary, so someone can follow up manually instead of the balance quietly going unchased.

Use this prompt in General Input: https://www.generalinput.com/prompts/chase-past-due-jobnimbus-invoices-with-escalating-emails