DunningAR Help Guide • v1.75.0 • Last updated: 2026-10-17 • SNAP Map link
DunningAR Help Guide
Review-before-send accounts-receivable reminders. DunningAR prepares overdue-invoice reminders from live QuickBooks and ConnectWise data — but nothing goes to a client until an approved user reviews, explicitly approves it for the configured batch, or chooses the separate Send now override.
The short version: DunningAR drafts. A human approves. Nothing auto-sends, nothing changes QuickBooks, and no card is ever created just by looking at a report. See Safety guarantees for the full list — it applies everywhere in this guide, so it is not repeated after every feature below.
Budget link: the Budget item in the menu opens snap-budget (budget.superiornetworks.biz), Superior Networks' own budget app. It is a separate app with SNAP sign-in; only people on its own access list can open it.
Key terms
| Term | Meaning |
|---|---|
| Dunning | Following up on overdue invoices. |
| Approval queue | Reminder drafts waiting for your review. |
| Tier | The overdue-age rule that decides the reminder tone. |
| Snooze | Postpone a draft for later, using a one-day or five-day promise-to-pay interval. |
| Dispute | Flag an invoice so no new reminders draft for it until resolved. |
| Temporary recipient | A one-time delivery address for a single draft that does not touch the QuickBooks contact. |
| Admin | Can manage user access and connections. |
| Bookkeeper | Can work the queue, but cannot manage users. |
| Allow external client email | A separate per-user switch that lets someone actually send to clients. |
How it works day to day
- Review the queue. Each client with overdue invoices gets one grouped draft with every open balance, live QuickBooks amounts, and one total due.
- Pick an action. Approve, edit, snooze, reject, or dispute.
- Approve & queue. DunningAR re-checks QuickBooks first. An approved reminder or payment confirmation waits for its separate daily Eastern-time batch. Choose Send now only when it genuinely must leave immediately; that action repeats the live validation.
- After sending, that client’s reminder and any linked call prompt auto-snooze for five days. A quiet confirmation toast appears briefly at the bottom of the screen.
Manual Update feedback: selecting Update temporarily disables that button and shows an accessible animated activity wheel with the real elapsed time; it deliberately shows no completion percentage because QuickBooks, ConnectWise, and per-client read durations vary. The indicator ends with the successful completion notice or restores the prior timestamp if the update fails.
The four tiers
| Tier | Overdue by | What happens |
|---|---|---|
| Cream | 3 days | Friendly reminder drafted. |
| Yellow | 10 days | Firmer reminder drafted. |
| Orange | 20 days | Serious reminder drafted. |
| Red | 30 days | Phone-call card added to the queue. |
The color is a visual cue only. It does not send anything or make a decision on its own.
Phone-call cards (Tier 4)
Each card includes the client’s live invoice detail, a tap-to-call number, and invoice numbers that open their matching original ConnectWise PDFs in a separate tab, plus a call script, payment information, and a running notes thread. Call notes open with the newest entry first. Select the compact Newest first or Oldest first order control in that thread to change only the loaded card’s view; it resets to newest first after a page reload. After DunningAR sends a linked reminder, the thread shows a Reminder sent entry; the next Update also adds this history for earlier sent reminders on active or snoozed cards. You can snooze a call prompt for one day, or five days when the client made a promise to pay. Either way, the invoice’s actual aging clock keeps running underneath.
Client notification recipients
Invoice reminders, payment confirmations, and payment-information messages use the current ConnectWise Company Finance → Invoice Delivery Options To field plus every configured CC address. DunningAR reads the delivery list again immediately before client delivery, including for a message already approved or queued. If ConnectWise Finance has no valid To address, DunningAR uses the existing QuickBooks primary email only for that message and records an attention event so the Company Finance setup can be corrected. A ConnectWise access or service error blocks the message instead of silently using QuickBooks.
Changing who a reminder goes to
Use Set temporary recipient on a draft or call card to send a one-off email elsewhere. You need a reason, and it is logged. Use Clear temporary recipient to return to the current ConnectWise Finance default. Neither option changes ConnectWise or QuickBooks contact data.
Email reminder cards
Purpose. Clients to Email is the human-review queue for grouped overdue-client statements. A card shows the current invoice group, recipient, and draft preview so an authorized person can decide whether a message should be changed, deferred, sent, or stopped. Opening this section or this Help Guide never sends a customer email.
When an email card appears, changes, and returns
During an Update or scheduled refresh, a current QuickBooks invoice must be open, have a positive balance, be past due, not be locally blocked as disputed, and have a resolvable delivery address. One client/recipient group receives one active statement; the same card is not duplicated on every refresh.
| Overdue age | Current default treatment |
|---|---|
| 1–2 days | An open positive-balance invoice is eligible for the first enabled email tier. With the current ladder, it uses the Friendly reminder tone. |
| 3–9 days | Friendly reminder remains the active email tier. |
| 10–19 days | Payment reminder becomes the active email tier. |
| 20–29 days | Serious reminder becomes the active email tier. |
| 30+ days | The Serious reminder email tier remains available and a separate Phone call required card is added. No email is sent automatically. |
Why the first row starts at day 1: Administration lists the standard Friendly, Payment, Serious, and Phone-call thresholds at 3, 10, 20, and 30 days. The current email selector applies the first enabled email tier as soon as a balance is overdue, then changes the tone at the later thresholds. Changing the enabled ladder changes future eligibility and presentation; it never sends a message by itself.
What the buttons do
| Button | Result |
|---|---|
| Approve & send | Re-checks the reminder and queues it for the configured reminder-delivery batch. Despite the compact label, it does not send immediately. |
| Edit | Lets you revise the subject and message content before approval. The edited draft remains in review. |
| Email records to me | Sends the related records only to the signed-in internal user; it does not contact the client. |
| Set temporary recipient | Sets a logged one-time delivery address for this statement only. It does not change ConnectWise or QuickBooks. Clear temporary recipient returns the card to the current ConnectWise Finance default. |
| Edit before sending | Snoozes the draft for one day so it returns for review later; it does not edit or send the customer message. |
| Dismiss | Removes the reminder from the active queue and cancels its waiting batch entry, while retaining the reason and audit record. The same still-overdue group may receive only one higher reissue generation on a later update. |
| Reject | Records a rejection/skip decision and removes the unchanged draft from the active review queue. |
| Flag dispute | Locally blocks the selected invoice from new reminder generation until the dispute is resolved and rebuilds the remaining group for review. |
| Send now | Appears on an approved reminder as the separate immediate-delivery override. It repeats the live QuickBooks and ConnectWise checks before sending. |
When a card reappears
A one-day snooze returns after its due time. A dismissal can create the one higher reissue generation described above only while the same group is still overdue. If the open invoice group, balance, membership, or applicable tier changes, the active draft is removed and a refreshed group can be prepared for new review. A successful send suppresses reminder prompts for five days and does not create a duplicate of the same unchanged group. Paid, closed, or locally disputed invoices do not remain eligible for an active email reminder.
Scheduling
Administration → Scheduling has three fixed Eastern Time (Dayton, Ohio) controls. The page shows last and next scheduled runs plus queue counts that refresh when the dashboard loads or refreshes; it does not run browser polling.
| Setting | What it does |
|---|---|
| Data Refresh Time | Runs the existing read-only ConnectWise/QBO refresh, aging recalculation, queue detection, and payment scan. It prepares review items only; it never approves or sends client mail. The existing Update button is the manual Run Now control. |
| Reminder Batch Send Time | Delivers only reminders a human explicitly approved and queued. Each due item repeats live QBO balance/membership checks, ConnectWise Finance To/CC recipient resolution, and original-PDF retrieval. A changed item is held or rebuilt without blocking the rest. |
| Payment Confirmation Send Time | Separately delivers only one human-approved confirmation for an exact QBO payment event. A sent or Closed — do not send event never returns to Pending Drafts. A later partial payment has its own QBO event and receives its own review card with the then-current remaining balance. Delivery repeats exact-Payment validation and attaches every current unpaid-invoice PDF; a correction to the underlying sent payment is held for review and never re-sends automatically. |
Saving a time changes future timer registrations and retargets waiting approved items; it does not start a refresh, send a message, create a duplicate, or change anything already sent. Phone-call cards, internal or role-based messages, and the separate Send now override always happen immediately and are not affected by either client-message batch setting.
Queued email preview
Select the Queued emails Metric and then Preview email to view the stored human-approved subject, message, recipient, delivery time, and expected invoice-PDF manifest. Each manifest invoice number opens its current original ConnectWise PDF in a separate signed-in tab. Opening the preview itself does not send an email, retrieve a PDF, run a scan, revalidate a record, or change QuickBooks; opening an invoice link retrieves only that original PDF and records the signed-in view in activity history. Before actual delivery, DunningAR rechecks the current recipient and applicable QBO facts and then retrieves the current original PDFs; a material change or failed check is held or rebuilt for review instead of sending automatically.
Daily digest scheduling
Administrators configure their personal daily digest in Administration → Scheduling, alongside the Data Refresh and client-delivery batch times. The digest setting is separate from the external client-email permission and does not change a user's role.
Each administrator can choose whether their digest is on, a preferred Eastern Time, and a delivery email address. The digest is sent only after that Eastern business date's completed scheduled ConnectWise/QuickBooks refresh; if the selected time arrives before the refresh, DunningAR sends it once the refresh completes. A five-minute recovery check safely handles app restarts or settings later in the morning.
The email opens with a one-line verdict of what needs you today, then lists each queue that has work: clients to call and email, payments to confirm, agreements awaiting approval, and Microsoft 365 notices. Below that are the money figures (overdue with the change since the last digest, open A/R, aging buckets, oldest invoice), agreements, sales tax set aside, and activity since yesterday. A row or section with nothing in it is left out, and each row opens the matching live section. When nothing needs you, the email shows the same calm All caught up state. It is laid out for a phone and follows light and dark appearance.
Roles & permissions
| Capability | Admin | Bookkeeper |
|---|---|---|
| Work the approval queue | Yes | Yes |
| Manage user access (Administration → User access) | Yes | No |
| Manage connections | Yes | No |
| Send to clients | Only when Allow external client email is also enabled. | Only when Allow external client email is also enabled. |
| Tax Reserve bucket percentages | Yes | Yes — every bucket percentage can be changed; bucket creation, activation, renaming, and margin controls remain Administrator-only. |
Staying signed in: after you sign in with Google, DunningAR keeps you signed in for 7 days on that browser. Your access and role are still checked on every page, so removing someone under Administration → User access locks them out right away.
Adding a new user automatically sends one role-specific welcome email when you save the record. Future-facing versions are editable under Administration → Message templates → Welcome email. Editing a template later never resends a message to an existing user. Administrators can also set one **Outgoing email monitoring** BCC address here. When its global switch is on, the live setting is read immediately before every DunningAR-generated email, including already-queued messages; a change applies to the next email without restarting DunningAR and is logged with its prior and new state.
Sign-in: Google sign-in sessions last up to eight hours before you are asked to sign in again.
Reports
All reports are read-only drill-downs into the current QuickBooks aging snapshot. None create a draft or send anything.
Every report table has Export CSV next to Clear filter. It downloads the rows currently shown, after any filter and in the current sort order, without the Action column. Amounts are written as plain numbers so they total in a spreadsheet.
| Report | What it shows |
|---|---|
| Snoozed cards | Currently snoozed call prompts and when they resurface. |
| AR aging | Open balances in Current, 1–30, 31–60, 61–90, and 91+ day buckets. Current includes invoices due today or later. |
| Notes & call history | Search all client notes, including resolved calls. |
| Send & decision log | Filter past decisions by client, tier, or date. |
| Per-client history | One client’s full decisions, calls, notes, and payment applications. |
| Payment confirmations | Authorized-user review and read-only reporting for QBO payments detected after the initial audit-only baseline. The Payments received (7d) metric excludes superseded reconciliation archives so a combined payment is counted once. |
| Tax Reserve | A combined local ledger of Sales Tax and configured reserve buckets. It records detected payment allocations, rate source, and reported transfers; it never writes QuickBooks or moves funds. |
The dashboard Metrics tiles are tappable shortcuts: Clients to Email and Clients to Call open their approval-queue sections, while Payment Confirmations uses the same live pending-confirmation count and opens its existing authorized review section. Total Overdue opens the current overdue-invoice list, AR Report opens the Current-first aging summary, Oldest Invoice opens its matching existing email reminder or phone-call follow-up, and Tax reserve owed opens the local Tax Reserve ledger. This includes an existing snoozed phone-call follow-up; opening it does not create a card, send email, or change its snooze.
Every report table includes a Filter all columns control and sortable column headings. The current-overdue-invoices list also identifies its Client, Invoice, Due, Days overdue, and Current balance columns explicitly. These controls change only the local report view after the authenticated data is loaded; they do not refresh QuickBooks, create a draft, send email, or change a snooze.
Tax Reserve
Tax reserve owed is one combined local bookkeeping tile. When DunningAR detects a new QuickBooks payment through its existing read-only payment workflow, it creates one immutable local allocation for every active bucket using the amount actually paid, including partial payments. Sales Tax uses invoice-tax evidence when available and shows its configured percentage only as a clearly labeled fallback. Other buckets use their configured percentage.
Select the tile to open the combined ledger. It identifies the bucket, client, invoice reference, amount paid, rate applied, rate source, reserve amount, and transfer date. Each invoice reference opens its current original ConnectWise PDF in a separate signed-in tab; opening it is read-only and recorded in activity history. Every column has the normal local Filter all columns and sortable-header controls. The Email current report view to me action sends visible rows only to the signed-in Admin or Bookkeeper; it does not send client email.
Bucket percentage access: both Admin and Bookkeeper can change the percentage for Sales Tax, Federal, Ohio, Miamisburg, and later-added buckets. A percentage change applies only to future detected payments; it does not rewrite historical ledger rows. Only an Admin can add, rename, activate/deactivate a bucket, manage margin inputs or thresholds, or apply/dismiss a margin-based suggestion.
Margin-based suggestions: DunningAR reads the QuickBooks cash-basis Profit and Loss report read-only to check whether actual profit margin has moved. When Federal or Miamisburg's margin-derived suggested percentage differs from its saved percentage by more than the configured drift threshold, DunningAR shows a suggestion for review. It never changes a percentage automatically: an Administrator must explicitly Apply or Dismiss it. The automatic check runs at most once every 90 days, and an Administrator can select Recalculate now for an off-cycle read-only check. The Ohio early-warning alert defaults to $100,000, providing runway before the $125,000 Business Income Deduction cutoff.
Historical flat-bucket backfill: an Administrator can preview an adjustable payment-date range before confirming any local historical ledger rows. The one-time scope fills only missing Federal, Ohio, and Miamisburg rows using each bucket's saved percentage at the time of confirmation. It never alters Sales Tax, an existing bucket row, QuickBooks, ConnectWise, a bank, WisePay, a transfer, a tax filing, or client email. Backfilled ledger rows are labeled Backfilled.
The transfer banner shows the full local balance awaiting a manual transfer. Select Yes — report full balance transferred only after completing the transfer outside DunningAR and entering its transaction number. The report records your account, Eastern business date, amount, and transaction number; it marks every currently untransferred local Tax Reserve row as transferred. It does not touch a bank, WisePay, QuickBooks, ConnectWise, or a tax filing. No / not now simply dismisses the banner. Partial transfers are not supported.
Phone-call cards
Purpose. Clients to Call is the human collection-follow-up queue for an overdue client. It is not a customer-email queue. One active card gathers the client’s current qualifying overdue invoices, balance, ConnectWise Finance contact detail, call script, payment information, and durable call history in one place.
When a phone card appears, updates, and returns
A card appears when a client has an open, positive-balance, non-disputed invoice at or beyond the enabled Phone alert tier. That threshold is 30 days overdue by default, but the editable Phone alert tier in Administration controls the live threshold. The card includes all of that client’s current overdue invoices, including balances below the phone threshold. One client has one card; a refresh updates the existing card rather than duplicating it.
| Condition | Card result |
|---|---|
| At or above the active Phone alert threshold | A client-level phone-call follow-up is open for review. With the default ladder, this begins at 30 days overdue. |
| Edit before sending | Snoozes the call prompt for one day. The card returns after its due time; invoice aging continues. |
| Promise to pay — snooze 5 days | Records the promise and snoozes the call prompt for five days. The card returns after its due time if it remains eligible; invoice aging continues. |
| Approved linked reminder sent | Snoozes the related call prompt for five days. This pauses the prompt only, not invoice aging. |
| No longer has a qualifying phone-alert invoice | The card resolves and leaves the active queue. It can become a new active follow-up only if the client later again meets the configured Phone alert threshold. |
What the controls do
| Control | Result |
|---|---|
| Call script, billing phone, and invoice links | Show the current collection context. An invoice number opens its original ConnectWise PDF in a separate tab; it does not send email or change the card. |
| Save note, Didn’t reach, and Promised to pay | Add durable call-history entries. A note or tag does not close the card. |
| Mark call made | Records a call marker and timestamp in the history. It does not close the card. |
| Send invoices / statement | Uses the linked email statement’s approval path. It queues a human-approved statement for the reminder batch; it does not send it immediately. |
| Open email reminder | Opens the existing reviewable client statement or prepares a fresh current statement for separate review. It does not send an email. |
| Set temporary recipient | Creates or reuses the separate statement, records a required reason, and sets a one-time recipient. It does not change ConnectWise or QuickBooks and does not send email. |
| Email records to me | Sends active invoice records only to the signed-in allowlisted user; it does not contact the client. |
| Send payment info | Sends current payment instructions to the confirmed current ConnectWise Finance recipient only after the required checkbox and external-email permission. This is a separate client-facing message. |
| Accept payment (WisePay setup pending) | Is a nonfunctional placeholder. DunningAR does not accept, transmit, or store card details. |
Call notes display newest first by default. The compact order control can switch only the loaded card to oldest first and resets after a page reload. Deleted notes are hidden from active views but retain audited deletion evidence.
Payment-confirmation cards
Purpose. Payment Confirmations are positive, approval-first acknowledgements for one exact QuickBooks payment event. They are not based on overdue-day thresholds, and they do not replace the ordinary overdue-reminder or phone-call process.
When a payment-confirmation card appears and returns
The first payment scan establishes an audit-only baseline, so historical payments do not create cards. After that baseline, an eligible payment can create one card when it applies to an invoice that was Current at its prior local observation and was paid or partially paid on or before its due date. A late-only payment remains in the normal dunning workflow. A same-customer, non-Check settlement with the same non-empty QuickBooks payment reference can be one complete confirmation when it contains qualifying Current-origin evidence. A later partial payment has a different QBO payment identity and can receive its own card.
| Condition | Card result |
|---|---|
| Initial audit-only baseline | Historical payment facts are recorded without creating a customer-confirmation card. |
| Eligible later full or partial payment | One reviewable card is prepared for that exact QBO event. A repeat scan does not duplicate it. |
| Snooze until tomorrow | The unsent card returns after its selected time. No email is sent. |
| Payment facts change before approval or delivery | The card is held or rebuilt for review. A change never authorizes an automatic email. |
| Sent, Close — do not send, or Close as already sent | The exact event is terminal, remains in audit history, and never returns to Pending Drafts. A later separate payment remains a distinct possible event. |
| Material correction to a prior sent event | The original event can enter Requires review when QBO membership, date, total, customer, or invoice allocation changes. It never sends a correction automatically. |
What the controls do
| Control | Result |
|---|---|
| Approve & Queue | Revalidates the exact QBO payment and queues the confirmation for the separate Payment Confirmation batch. Approval does not send email. |
| Edit before sending | Saves reviewed subject and message wording for later approval. QuickBooks facts and ConnectWise Finance recipients are still revalidated before delivery. |
| Snooze until tomorrow | Defers the unsent event for one day and retains the reason in audit history. The card returns after that time. |
| Close — do not send | Permanently closes the exact QBO event without customer email, cancels a waiting batch entry, and retains the actor, reason, and event evidence. |
| Close as already sent | Appears when durable local evidence shows that same exact payment event was already delivered. It preserves the audit trail without creating a duplicate email. |
| Disabled Approve & Queue on Held or Requires review | Protects a changed or unresolved QBO fact from delivery. Resolve the review or close the event; it cannot be sent from that state. |
| Invoice links and View and pay open invoices | Open the relevant ConnectWise PDF or configured customer portal. They do not approve, queue, or send a confirmation. |
Only an authorized user with external-email permission can approve a confirmation. The scheduled payment-confirmation delivery, not the card, performs the second exact-Payment validation, current ConnectWise recipient lookup, and required current unpaid-invoice PDF retrieval immediately before email delivery.
Escalation & aging reference
Effective January 1, 2027
This is what is actually live today. It is useful for internal reference or if a client asks how their account is handled.
| Aging | Threshold | Current consequence |
|---|---|---|
| Cream | 3 days | Friendly reminder drafted. |
| Yellow | 10 days | Firmer reminder drafted. |
| Orange | 20 days | Serious reminder drafted. |
| Red | 30 days | Phone-call card created; no automatic email. |
Mailed letters and service shutoffs are not listed because they are not live features. WisePay’s payment-link handoff is not active either, and DunningAR never touches card data.
Safety guarantees
These guarantees apply across every feature in this guide.
- No client message is selected, approved, or sent automatically. A human must explicitly approve and queue it, or use the separate Send now action. Scheduled delivery consumes only those prior human approvals.
- QuickBooks writes are prohibited except for one explicit Bill.com approval. A 100% exact, full Bill.com notice (one customer; one or more invoices, each paid in full) is automatically marked Ready to record in QuickBooks, but it does not change QuickBooks. An Administrator must review the evidence and select Review exact match & record; the confirmation lists every invoice and amount. DunningAR then rechecks each live invoice/customer/balance (if any one fails, nothing is written), searches the protected Ingress ID for a prior QBO Payment, and creates one Receive Payment, with one line per invoice, only if every check still passes. Polling, parsing, matching, page views, Held items, and all other payment-notice actions never write QuickBooks. A verified payment enters the existing approval-first payment-confirmation intake; no client email is approved or sent automatically. A post-attempt timeout is recovered by the exact memo or locked for review, never retried automatically. Auto-record (off unless an Administrator turns it on, under Payment notices → Auto-record exact Bill.com matches) does the Review exact match & record step for you, but only for a 100% exact, full match, with the same live recheck and duplicate checks. Each one is marked Auto-recorded on its card, in the activity log and in the Daily Digest. Anything less than exact still waits for you, and thank-you emails to clients still need your approval. If auto-record fails, or cannot confirm what QuickBooks did, DunningAR emails the payment-notice alert address right away, and the Daily Digest counts it until it is resolved.
- Viewing, filtering, sorting, or opening a report never creates a draft, sends an email, or changes a snooze. The Tax Reserve self-email action is an explicit separate button and sends only to the signed-in allowlisted user.
- Tax Reserve never writes QuickBooks, ConnectWise, or moves money. A detected payment produces local bucket snapshots. Only an explicit full-balance transfer report with a transaction number marks local ledger rows transferred; it does not touch a bank, WisePay, QuickBooks, ConnectWise, or a tax filing.
- Payment confirmations begin with an audit-only baseline. A new confirmation remains a draft until an authorized user rechecks the exact QBO Payment and explicitly approves and queues it; its separate batch (or explicit Send now) repeats the final QBO recheck before any client email.
- A snooze only pauses a reminder prompt. The underlying invoice-aging clock never stops.
- Deleted notes are hidden, not destroyed. An audit record of the deletion remains.
- PDF views and payment lookups are not stored by DunningAR. They are fetched live and shown only.
- A failed integration never silently fails. QuickBooks, ConnectWise, Google, and Discord failures show an alert in Logs & Activity with the next action.
Agreement Center
Purpose. Agreement Center sends a client one email containing their agreement, lets them accept it on a branded page, and hands them to WisePay to pay the invoice. It exists because a signed record of what a client agreed to, and when, is worth more than a reminder email saying an invoice is overdue.
The short version: you create the agreement, it waits for the approved delivery batch, the client accepts it, then they pay. An accepted agreement is never altered afterwards — a correction means a new agreement, not an edit.
What it is not
- Not automatic. An invoice with an agreement attached does not create a record by itself. You choose the invoice and create the record.
- Not a replacement for the reminder queue. Agreement Center is for agreements; overdue chasing still runs through Clients to Email and Clients to Call.
- Not a payment processor. DunningAR never touches card or bank details. Payment happens at WisePay.
Creating an agreement
Select Create a new agreement on the Agreement Center page and work through four steps:
- Select the client and invoice. Only invoices with a ConnectWise agreement attached and a balance still owing are offered. An invoice already paid, or one with no agreement behind it, cannot be selected — this is deliberate, because the agreement dates and the renewal date come from ConnectWise and there is nothing to show without them.
- Check the dates. Start, end, and renewal dates are pulled from the ConnectWise agreement. An agreement with no end date shows Ongoing rather than a made-up date.
- Describe the work and attach anything the client should see. Up to 15 files. The description is what the client reads to know what they are agreeing to, so it is worth writing properly rather than copying the invoice line.
- Review and create. The client email is queued for the next Agreement Center delivery batch. Nothing has been emailed and no client link exists yet.
While an agreement email is queued, its Queued email preview shows the complete subject, branded wording, description, and invoice summary. The Review & Pay position is a visibly marked [client link — generated at send time] placeholder; it has no token and cannot be opened. When delivery actually succeeds, the working link can be shown once to an administrator who already has that record open. It is never saved on the record: a reload cannot recover it.
The renewal date, and why it is sometimes in the future
ConnectWise has no renewal-date field, so DunningAR calculates one: the later of the agreement's end date or the one-year anniversary of its start date. If that still lands in the past, it keeps advancing a year at a time until it is in the future.
That last part matters more than it sounds. Every fixed-term agreement in ConnectWise currently has an end date in the past — a stale end date is the normal case here, not an edge case. Without the roll-forward, a client signing a three-year-old agreement would be shown a renewal date that had already been and gone.
An agreement with no end date is Ongoing: it continues month-to-month until either side gives 30 days' written notice, so no renewal date is calculated or shown.
What the client sees
- The email. One email, one link, in Superior Networks branding.
- The agreement page. The description, the invoice summary, the agreement dates, the full Terms & Conditions, and any attachments. The client can decline from here.
- Accepting. The client types their full legal name and ticks two boxes: that they agree to the Terms, and that they consent to receive and sign electronically. Both are required. Neither is pre-ticked.
- Payment. After accepting, the client is handed to WisePay to pay that invoice's current balance in full.
The client is shown the whole agreement before accepting, and the accepted PDF is downloadable afterwards from the same link.
The WisePay handoff uses the stored invoice number, current amount due, and ConnectWise company ID. If any of those facts are unavailable, the client sees a contact-us message instead of a partial payment link.
Rules that are enforced, not just intended
| Rule | How it actually holds |
|---|---|
| Both consent boxes are required | Checked when the form is submitted, again when the signature is written, and again by the database table itself. A signature missing either consent cannot be stored at all — not by a bug in the form, and not by a manual query either. |
| Partial payments are not accepted | The full invoice amount is the only figure shown and there is no amount field anywhere. The database accepts only unpaid or paid, so no partial state can be recorded. |
| Signing comes before paying | The payment page refuses to pay an invoice that has not been accepted, so a payment can never stand in for a signature. |
| Attachments and PDFs are kept 10 years | Nothing in DunningAR deletes them. There is deliberately no purge tool, because the retention period has not elapsed. |
| An accepted agreement cannot be changed | Creating a replacement is the only route. The original, its Terms version, and its audit trail stay as they were. |
| The client's IP is recorded as corroboration | Recorded from the real client address, not the proxy, and a forged forwarding header is ignored. The signed PDF labels it as corroborating rather than as proof of identity. |
| The Terms version is stamped on every acceptance | Each acceptance records which published version was live when the client signed, so a later wording change cannot be applied backwards. |
Following an agreement
The Agreement Center list shows each record's progress — pending → viewed → signed → paid — along with how long ago the link was emailed. Anything needing attention is called out at the top of the list, in two situations only: no link has been emailed yet, or the link expired without a signature.
Opening a record shows its full activity history: when the email went out, whether the client opened it, when they signed or declined, and when they were handed to the payment page. These are the same recorded facts the audit block on the signed PDF is built from.
Links last 7 days. If one expires before the client signs, use Send again — it queues a fresh link for the next reminder batch; nothing is emailed the moment you click. The previous link keeps working until the new email goes out, then stops, so only the newest email opens the agreement. A waiting email can be cancelled from the record page until the batch sends it. If the record page is open when the batch sends, the new link is shown there once so it can be copied for a test, then disappears on reload. A declined agreement cannot be re-sent.
Editing the Terms & Conditions
Terms & Conditions editor on the Agreement Center page holds the live text, an editable draft, and the version history.
| Control | What it does |
|---|---|
| Save Draft | Stores your edits without changing what clients are shown. Safe to use freely. |
| Publish New Version | Makes the draft the live text and increments the version number. New agreements use the new text; agreements already signed keep the version they signed. |
Publishing is a legal act, not a formatting change: it changes what every future client agrees to. Correcting a typo that does not change meaning still increments the version, and that is the honest record of what happened.
The current live version is shown on the editor page. If the editor shows no published version at all, creating an agreement is blocked until one exists — a client cannot be asked to agree to text that is not there.
Automatic Payments — still a manual step
When a client saves a card or bank account at WisePay, that saved method is reusable for their next payment. It does not by itself set up automatic billing.
To put a client on automatic payments, request the WisePay Automatic Payments onboarding link for them separately. Each agreement record shows a reminder of this until it is done, and the link expires after 30 days, so request it when the client is ready rather than in advance.
What each control does
| Control | Result |
|---|---|
| Create a new agreement | Starts the four-step builder. Creating the record queues the client email; it does not create a client link. |
| Queued email preview | Shows the complete outgoing email body with an inert, visibly labelled client-link placeholder. It cannot create or open a client link, send email, or change the record. |
| Send again | Queues a fresh link for the next reminder batch. The current link keeps working until the new email is sent, then stops. Nothing is emailed immediately. |
| Cancel queued email | Takes a waiting agreement email back out of the batch before it is sent. Nothing is emailed. |
| Invoices under this agreement | Every ConnectWise invoice in the Agreement Year from any of the client's ConnectWise agreements is linked automatically each night. Link or unlink one by hand; every change is recorded against your name. |
| Terms & Conditions editor | Opens the draft, publish controls, and version history. |
| Download the accepted agreement (PDF) | Available to the client once they have accepted. Contains the full Terms text as it was when they signed, plus the audit block. |
| Decline | Lets the client refuse with an optional reason. Recorded, and it notifies the team. |
| Continue to payment | Hands the client to WisePay, after acceptance only. |
Where the numbers come from
The client's To and CC addresses come from the same ConnectWise Company Finance delivery settings every other DunningAR client message uses, so correcting an address in ConnectWise corrects it here too. The invoice summary on the agreement and in the PDF is a snapshot taken when the record was created, so the document the client accepts cannot change underneath them.
Collections
Purpose. Collections shows which clients are the biggest collection risk and why, so you can decide who to work on first and what to fix before escalating. It reads the same QuickBooks history DunningAR already keeps. It is read-only.
The queue
- How a case opens: automatically. A client becomes an open case when the latest QuickBooks aging snapshot shows any of their invoices past due, and drops off when nothing is past due any more (paid, or a refresh shows it). Nothing is stored yet; the list is worked out each time the page opens. Recording a case on purpose, with a status, escalation dates and an outcome, is planned (Next).
- Open cases are listed highest risk score first. Clients who owe money but have nothing past due appear in a separate Not yet due list and are not counted in the top row.
- The top row counts the open cases, the total past due, the clients past their own normal (longer since their last payment than they usually go), and fix-first flags.
- Select any column heading to sort by it; select it again to reverse (for example highest to lowest risk, or largest to smallest past due). The queue opens highest risk first. Past their normal sorts by the expected next payment date. The filter box searches every column, and Export CSV saves the rows shown.
- Select a client to open their case page. The case page's Open invoices and What made them pay tables sort the same way.
The case page
- Pre-escalation checks. DunningAR checks three things itself: signed terms in Agreement Center, open invoice disputes, and whether the QuickBooks customer is linked to a ConnectWise company. A Fail is a fix-first flag: fix it before escalating. When terms are unsigned, Send terms in Agreement Center opens the terms wizard for that client. The rest of the checklist (sales tax, billing errors, delivery address, payment method, SN costs, contact) needs Gmail and ConnectWise; run
/collections-casein Claude for those. - Risk score (0–100) with each part and the reason: how late they pay, how long since their last payment compared with their usual gap, balance compared with a typical month, the oldest invoice, and reminders or unanswered calls since the last payment. Low under 30, Watch 30–59, High 60–79, Critical 80+.
- Forecast: when the next payment would normally land, based on the client's own history. A forecast is not a promise.
- What made them pay: the DunningAR reminders, calls and notes in the 10 days before each payment.
- Value, open invoices and payment habits by half-year.
- Notes and case history: this is the client's phone-card notes thread, not a copy. A note added here shows on the phone card and the other way round. Newest first, with the same order control. A client without a phone card has no thread yet.
- If the client has an older QuickBooks record with a similar name, the page offers to include it so the history is complete.
Where the numbers come from
Every number on a case page is worked out when you open it, from records DunningAR already keeps: its copy of the client's QuickBooks invoice and payment history, the latest QuickBooks aging snapshot, and DunningAR's own reminders, phone-card notes, invoice blocks and Agreement Center records. Dates are counted in whole days up to today (US Eastern). Two rules apply throughout:
- Payment events. Payments posted on days no more than 3 days apart count as one payment event, so a split card charge or a check plus a fee is one payment, not two.
- Service invoices only for lateness and typical billing. Card-surcharge lines (an invoice number with a dot, such as
13764.WP_Visa.1) and bill-pay fee lines (BP_…) are left out of those two measures.
Pre-escalation checks: how it is calculated
DunningAR checks three things from its own records. Any Fail is a fix-first flag: fix our side before escalating.
- Signed terms. Pass when the client has at least one Agreement Center record that is signed and not deleted, matched by the QuickBooks client name or the ConnectWise company id. The evidence shows the latest signed date. Fail when there is no record, or none is signed. Without signed terms, late fees, collection fees and immediate suspension probably cannot be enforced, so the button opens the terms wizard for that client.
- Open disputes. Fail when any of the client's invoices is blocked (an invoice block with no resolved date). Pass otherwise.
- QuickBooks customer linked to ConnectWise. Looks at the ConnectWise company id on the client's phone card. One company: Pass. More than one: Fail, because invoices, tax and agreements may be read from the wrong record. No phone card or no id yet: Unknown.
Six more checks need Gmail and ConnectWise and are not made here: sales tax vs. an exemption, billing errors, delivery address, payment method / AutoPay, SN out-of-pocket items, and whether the contact is still there and paying. Run /collections-case in Claude for those.
Risk score: how it is calculated
The score is the sum of five parts, rounded to a whole number (0–100). Each part earns a share of its maximum points, from none up to its "full at" level, in a straight line between the two:
| Part | Max | What is measured | Full points at |
|---|---|---|---|
| Lateness | 25 | The median days past due of service invoices dated in the last 12 months and paid in full. Days past due = the date of the last payment applied to the invoice minus its due date. | 60 days late |
| Gap stretch | 20 | Days since the last payment event compared with the client's usual gap (the median of their last 6 gaps between payment events). Nothing until they pass their usual gap. | Twice the usual gap |
| Balance vs. normal | 20 | The open balance compared with a typical month (the median monthly total of service invoices over the last 12 months). Nothing until the balance passes one typical month. | 4 typical months |
| Oldest past due | 20 | Days past due of the oldest open invoice. | 90 days |
| Unanswered | 15 | 3 points for each reminder email sent, and each call note mentioning no answer, voicemail or a left message, since the last payment. | 5 of them |
Bands and colors: Low under 30 (plain), Watch 30–59 (yellow), High 60–79 (red), Critical 80 and up (dark red). The yellow and red are the same as the Dashboard's aging bar. The "Why" column on the case page shows the actual figures behind each part.
Provisional. The weights and "full at" levels are judgment calls still being tuned. Known weak spots: a 200-day invoice scores the same as a 90-day one; invoices that are never paid do not count toward lateness; and a client who pays new invoices while skipping old ones shows no gap stretch. Use the score to sort, not as a verdict.
Forecast: how it is calculated
Needs at least 3 payment events. It uses the last 6 gaps between payment events:
- Usual gap: the median of those gaps.
- Next payment would normally land around: the last payment date plus the usual gap.
- Window: the last payment date plus the shortest and the longest of those gaps.
- Typically: the median amount of the last 6 payment events.
- Past their own normal: yes when the days since the last payment are more than the 75th percentile of those gaps, meaning longer than they go roughly three times out of four.
- Longest gap on record: the longest gap between any two payment events in the history.
It describes the client's own habit, not a promise to pay.
What made them pay: how it is calculated
For each of the last 12 payment events, the case page lists what DunningAR did in the 10 days before it, up to and including the payment day:
- reminder emails actually sent (with their tier), and
- phone-card entries of type note, call made and payment info sent.
Snoozes and the automatic "Reminder sent" entries are not listed separately; the reminder email itself is. A payment dated before DunningAR's first recorded action for this client shows Before DunningAR history: look in Gmail and ConnectWise for what happened then. "No DunningAR action in the 10 days before" means they paid without a DunningAR push in that window. Card surcharge invoices (numbers containing WP_) mean a card on file was charged. Read the list for a pattern, such as "pays only after a call".
Value: how it is calculated
- Billed last 12 months: the total of every invoice dated in the 365 days up to today, including surcharge and fee lines.
- Paid: the total of payments applied in the same 365 days.
- In the history since: the date of the client's earliest invoice in DunningAR's QuickBooks history, which may be later than when they became a client.
- SN cost (licenses, domains, backup SN pays for the client) is not tracked yet, so the page cannot show a margin. A cost register is planned (Next).
Cash-flow forecast: how it is calculated
The chart under the Collections top row estimates the cash coming in over the next 8 weeks from every client who owes money (open cases and not-yet-due clients), using each client's own forecast:
- Their typical payment (the median of their last 6 payments) lands on their expected next date, then again every usual gap, until their current open balance is covered. The last payment is capped at what is left, so nobody is projected to pay more than they owe today.
- If a client's expected date has already passed and they have a past-due balance, that payment goes in the hatched Already expected column, and their later payments count on from today.
- If their expected date has passed but nothing is past due yet (an early payer whose invoice isn't due), the payment is placed on their earliest open due date (today at the latest), not as late.
- Each column is a 7-day week starting today. The figure above it is the week's total; each block inside is one client's payment. Hover or tab to a block for the client, amount and date; select it to open that client's case page at their Forecast.
- Not included: invoices not issued yet, and clients with fewer than 3 payments on record (they are named under the chart). Show the forecast as a table lists every projected payment.
It shows what each client's habit says, not a promise. It refreshes with the QuickBooks data (see below).
How fresh the QuickBooks data is
Collections reads DunningAR's copy of QuickBooks invoices and payments. The page shows QuickBooks data as of the last time that copy was synced (US Eastern). It is synced:
- Every hour in business hours: on the hour, 6:00 AM to 8:00 PM, Monday to Friday. This light sync only reads QuickBooks and updates the copy: it creates no reminder drafts, posts nothing to Discord and sends no email.
- Sync now on the Collections page, for anyone signed in. The same light sync; the page reloads when it finishes (usually a few seconds). If a Dashboard Update is already running, Sync now waits for it instead.
- The nightly data refresh and Update on the Dashboard, which also sync it (and do the rest of the daily work).
A payment, a new invoice or a voided invoice shows up after the next sync. An invoice deleted in QuickBooks is not picked up yet and stays listed; void it instead of deleting it.
Payment habits: how it is calculated
Service invoices paid in full, grouped by the half-year they were dated in (H1 = January–June, H2 = July–December):
- Paid invoices: how many in that half-year.
- Median days late: the median of the date of the last payment applied minus the due date. A negative number means they paid early.
- On time: the share paid on or before the due date, rounded to a whole percent.
- Slowest: the most days late of any invoice in that half-year.
Open invoices are not in this table; they show under Open invoices and in the risk score.
Case reports
Generate case report on a client's case page builds a full report for your records: bottom line, open invoices, risk score with its parts, payment habits with two charts (days between payments with the current gap, and days past due by half-year), what made them pay, forecast, pre-escalation checklist, cost vs. value, contact attempts, and a recommended plan with dated steps and decisions.
- Who: any approved user, Administrator or Bookkeeper.
- In the background: the button shows Generating…, usually for a few seconds; you can leave the page. When it is done you get an email, "Case report ready: client", with a link. The email goes only to you, has nothing attached, and never goes to the client. If it fails you get "Case report failed" instead, and the history shows why.
- One at a time per client: selecting the button again while a report is being built just waits for that one.
- A frozen copy: a report shows the data as it was when it was built (the time and "QuickBooks data as of" are on it). Run Sync now first if you want the latest payments in it.
- View or PDF: each report opens as a page in DunningAR, with Download PDF and Print. The PDF carries the Superior Networks logo and page numbers.
- History: the newest 10 reports per client are kept, newest first (with the same order control as notes); when an 11th is built the oldest is deleted. A failed report is removed after 7 days. DunningAR keeps a short line for each deleted report (who ran it, when and the risk score), with no client details.
- Data only: the report uses DunningAR's own records. Gmail and ConnectWise are not checked, so six checklist items say "Not checked", and anything the report concludes from a pattern is marked "Assumption:". Run
/collections-casein Claude for the full evidence; adding that evidence to reports is planned (Later).
Who can use Collections
Every approved user, Administrator or Bookkeeper, can open the Collections tab and case pages and add notes to a client's thread. Sending terms from Agreement Center stays Administrator-only, so a Bookkeeper sees "An Administrator can send terms from Agreement Center" in place of the button.
Provisional score
The risk score weights are judgment calls and are still being tuned against real cases, so the score is marked provisional. Use it to sort, not as a verdict.
What Collections never does
- It never sends email to a client, never writes to QuickBooks or ConnectWise, and never creates, snoozes or resolves a phone card. Its only email is the case report notice to the person who asked for the report.
- The only things you can save on it are a note in the client's existing notes thread and case reports.
More technical detail
Source code, release history, and deployment documentation live in the DunningAR repository. See the README for deployment and rollback specifics.
When you are signed in, the page footer and Administration also show a SNAP Map link. It opens the live map of every Superior Networks automation module, connector and scheduled job on DunningAR's box, and it asks for SNAP sign-in. Clients never see it: agreement pages, payment confirmations and client emails do not carry it.