On a weekday schedule, pulls open AR from QuickBooks or Xero over Connect, ages it into buckets, and drafts reminder emails into Drafts while Slack gets the finance digest.
Full install guide: Install an Eve agent.
Invoice Chase Drafter is an Eve agent that pulls open invoices on a weekday cron, leaves reminder drafts in Drafts only, and posts an idempotent AR digest to Slack for finance. It is for Eve developers running team operations. Preview every file on this page, then install with npx shadcn@latest add @evex/invoice-chase-drafter.
Weekday AR chase via Connect that drafts mailbox reminders from QuickBooks or Xero and posts an idempotent Slack digest after a paid re-check.
Invoice Chase Drafter is an eve agent that reads unpaid invoices from the QuickBooks or Xero company you already connected. On each weekday cron tick it ages those rows into buckets, writes reminder emails into the mailbox Drafts folder, and posts a finance digest to Slack. You review and send the drafts yourself. The agent never calls a send API.
You interact with it through environment variables and the chase-open-invoices schedule. Set a Custom OAuth Connect UID for QuickBooks or Xero, a Google or Microsoft Connect UID for Drafts, and Slack Connect for the digest. The agent re-checks each invoice before deliver_ar_digest and only posts when confirmSend is true with a date-derived idempotency key.
It is useful when finance wants weekday chasing without auto-send. Current invoices stay in the digest as current. Overdue rows get a Drafts reminder when a customer email is present. A paid re-check drops invoices that cleared after the first read so Slack does not list them, and the same date key keeps a retried cron from posting twice.
A QuickBooks invoice is twelve days past due. create_reminder_draft writes a Gmail draft to the BillEmail address. sent is false. A human opens Drafts and hits send.
list_open_invoices still shows a Xero row. recheck_paid_invoices sees AmountDue zero. The paid invoice is dropped. Slack only lists still-open aging buckets.
A weekday cron retries after a timeout. deliver_ar_digest sees invoice-chase-drafter-2026-09-09 already stored and returns replayed true. chat.postMessage is not called again.
An overdue invoice has no BillEmail. create_reminder_draft skips the mailbox write. The row still appears in the Slack finance digest after the paid re-check.
Install with npx shadcn@latest add @evex/invoice-chase-drafter, copy .env.example, set QuickBooks or Xero Custom OAuth Connect, a mailbox Connect UID, and Slack, then POST to /eve/v1/dev/schedules/chase-open-invoices while iterating.
No. create_reminder_draft always returns sent false. Gmail stops at drafts.create and Graph writes Drafts only. SMTP and send URLs are refused in code. A human sends from the mailbox.
recheck_paid_invoices re-reads each invoice before Slack. A row that is now paid or voided is dropped. The digest lists still-open aging buckets only, so a payment that landed after the first list does not get chased.
deliver_ar_digest refuses unless confirmSend is true, and it requires the date key from preview_ar_digest. A successful post is stored on invoice-chase-drafter-YYYY-MM-DD, so a retry returns replayed and skips chat.postMessage.
Yes for the finance digest. INVOICE_CHASE_SLACK_CONNECT_UID and INVOICE_CHASE_SLACK_CHANNEL_ID must both be set. The Eve Slack channel uses Connect credentials, not an incoming webhook. Delivery still pauses for Eve approval.
npx shadcn@latest add @evex/invoice-chase-drafter