Skip to main content
Run your business · Plugin examples
Plugin examples

Receivables Collections

Chase an overdue balance from verified invoice evidence, with every reminder reviewed first.

Updated October 6, 2026 4 min read

Collections shows what a plugin can become once it outgrows being a small report: a dedicated operator workspace combining verified invoice observations, customer context, and follow-up decisions in one place. A person can see exactly why a balance needs attention, record a promise or a hold against it, and review the actual reminder before it ever goes out.

When Collections is enabled, Today's App follow-up can show up to eight open cases with their recorded next actions. Open a case to continue the review in Collections. Reading Today never refreshes Stripe or sends a reminder; existing provider, permission and approval boundaries remain.

Collections in the fictional roofing workspace, with currency balances and linked customer cases.
A dedicated business workspace: review the account, invoice evidence and policy together. The figures and customers shown are fictional. Select the image to view it full size.

Follow a fictional case

Open Collections in the Command Center demo. Inspect a case's currency, last-observed balance and invoice references. Record a promise or pause, review the proposed reminder, and inspect its simulated result. Demo changes remain in the browser and never contact a customer.

In a connected installation, enable Collections Action Desk and Stripe invoicing in Plugins, configure the existing Stripe and email connections, and open /admin/collections. Refresh the explicitly tracked invoices before relying on their financial state. This version handles up to 25 tracked, platform-created invoices; it does not scan every invoice in a Stripe account.

Keep the decision attached to the evidence

Cases group a billing contact and currency. Promises, pauses, disputes and reminder history influence the next eligible action. The preview uses verified recipients, amounts and invoice links. Submit that exact version for approval, then inspect the send result.

A changed balance or a new hold can invalidate a preview you already reviewed, so a fresh one gets generated rather than sending a stale one. A recorded payment is real evidence of settlement, though it only tells you the money arrived, not that your reminder was what caused it. The complete operator guide covers the case controls, approval, and failure paths in full detail.

What this example teaches you to build

A plugin can be more than a small report. Collections adds its own case lifecycle and interface while reusing customer identity, Stripe access, task scheduling records, branding, approvals and email delivery. The business-specific decision logic stays separate from the shared services that execute an action.

Study the plugin source and architecture to see the bounded decision program, case records and host integration. AI tools can read cases, preview and propose reminders, and prepare exact case policy changes through the same services. A policy proposal covers holds, disputes, payment promises, ownership and next actions; approval checks current case, recipient and invoice facts. Policy changes send no email. The assistant cannot approve its own work. See the case policy workflow for a worked example and recovery.

The default reminder cooldown is 72 hours from the confirmed message receipt. New reminder reviews use that saved delivery time, including timestamps returned by the database, to keep the next action consistent with the case history.

Costs, disabling and recovery

The decision program and reminder wording are deterministic. Provider and hosting usage can incur costs; surrounding AI chat uses the workspace model. Keep credentials in connection storage and business policies on the case.

Disable Collections in Plugins to block new operations while retaining historical cases and receipts. Disabling does not reverse sent mail or Stripe activity. If delivery is uncertain, reconcile the original action before another reminder. If a provider refresh fails, the absence of new evidence must not be treated as payment.

The source guide documents controlled tests and remaining limits. Do not assume that enabling the plugin starts a fully unattended reminder schedule; scheduled handlers and model-written wording are separate work.