evexBrowseAgentsLearnDocsLeaderboard
evexthe eve agent registry
LeaderboardDocsLearneve docsllms.txt
Back to Registry

Invoice Chase Drafter

productivity

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.

TOby TommyBez36 files

Install

npx shadcn@latest add @evex/invoice-chase-drafter

Full install guide: Install an Eve agent.

What is Invoice Chase Drafter?

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.

Other package managers

Prefer pnpm, yarn, or bun? Copy the matching install command.

Package manager
$npx shadcn@latest add @evex/invoice-chase-drafter
Category
productivity

productivity agents and workflows

Files
36 files

1 skill file · 6 tools

Requires
3 dependencies

@vercel/connect@^0.2.6, eve@^0.47.5, zod@4.3.6

Updated
Sep 9, 2026

Source-owned registry metadata

What's included

36 files1 skill file6 tools
Dependencies:@vercel/connect@^0.2.6eve@^0.47.5zod@4.3.6

About Invoice Chase Drafter

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.

How it works

  1. On the chase-open-invoices schedule (cron from INVOICE_CHASE_CRON, default weekday 08:00 UTC), the agent loads the invoice-chase skill.
  2. It calls load_chase_config and stops when QuickBooks or Xero Custom OAuth Connect, a mailbox Connect UID, or Slack Connect is missing.
  3. list_open_invoices mints a Connect token and lists unpaid invoices aged into current, 1-30, 31-60, 61-90, and 90+ buckets. That tool is GET-only.
  4. recheck_paid_invoices re-reads each invoice and drops rows that are now paid so a later Slack digest cannot list a settled invoice.
  5. create_reminder_draft writes Gmail drafts.create or Graph Drafts after Eve approval and always returns sent false. preview_ar_digest then deliver_ar_digest with confirmSend true and a date idempotency key post Slack once.
  6. Four evals cover never-send, the weekday cron path, paid re-check before digest, and drafts that require approval.

Use cases

Overdue invoice stays in Drafts

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.

Paid between list and digest

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.

Retry does not double-post Slack

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.

No customer email, still digest

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.

Requirements

AI_GATEWAY_API_KEY
A model credential for the deployment, either a Vercel AI Gateway API key or AI Gateway OIDC, so the agent can call zai/glm-5.2.
INVOICE_CHASE_AR_PROVIDER
Optional force of quickbooks or xero. When empty, the first complete Custom OAuth Connect UID wins.
INVOICE_CHASE_CRON
5-field cron for chase-open-invoices. Defaults to 0 8 * * 1-5 (weekday 08:00 UTC on Vercel).
INVOICE_CHASE_MAX_INVOICES
Maximum unpaid invoices to read per run. Defaults to 100.
INVOICE_CHASE_STORE_PATH
JSON file for digest delivery claims. Defaults to .data/invoice-chase-store.json. Use a durable volume if the app filesystem is ephemeral.
INVOICE_CHASE_SLACK_CONNECT_UID
Vercel Connect Slack connector UID for the Eve Slack channel. Required with the channel id before deliver_ar_digest will post.
INVOICE_CHASE_SLACK_CHANNEL_ID
Slack channel id for the finance digest. Required with the Slack Connect UID.
INVOICE_CHASE_QUICKBOOKS_CONNECT_UID
Custom OAuth Connect UID for QuickBooks Online from vercel connect create. Mints com.intuit.quickbooks.accounting. Reads only.
INVOICE_CHASE_QUICKBOOKS_REALM_ID
QuickBooks company realm id required when the AR provider is quickbooks.
INVOICE_CHASE_QUICKBOOKS_ENVIRONMENT
production or sandbox. Defaults to production. Sandbox talks to sandbox-quickbooks.api.intuit.com.
INVOICE_CHASE_XERO_CONNECT_UID
Custom OAuth Connect UID for Xero from vercel connect create. Mints accounting.transactions.read, accounting.contacts.read, and offline_access.
INVOICE_CHASE_XERO_TENANT_ID
Xero tenant id required when the AR provider is xero.
INVOICE_CHASE_MAILBOX_PROVIDER
Optional force of gmail or outlook. When empty, the first complete mailbox Connect UID wins.
INVOICE_CHASE_GOOGLE_CONNECT_UID
Vercel Connect Google connector UID from vercel connect create google. Mints gmail.compose. The agent never calls messages.send or drafts.send.
INVOICE_CHASE_GMAIL_USER
Optional From address written onto Gmail drafts.
INVOICE_CHASE_MICROSOFT_CONNECT_UID
Vercel Connect Microsoft connector UID from vercel connect create microsoft. Mints Mail.ReadWrite. The agent never calls sendMail.
@vercel/connect
Runtime dependency that mints Custom OAuth and Slack tokens through getTokenResponse and connectSlackCredentials. Slack posts with Eve callSlackApi after approval.

FAQ

How do I install and run a weekday chase?

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.

Does it ever send the reminder email?

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.

What is the paid re-check?

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.

Can a replayed cron post Slack twice?

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.

Is Slack required?

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.

Files this command writes

36

Core

29

Skills

1

Tools

6

npx shadcn@latest add @evex/invoice-chase-drafter
evexBrowseAgentsLearnDocsLeaderboard
Sign In
Stars24

Related Agents

View all 22 by TommyBez →
productivity
208

Linear Operations Agent

An Eve agent for Linear operations across Linear, Slack, and scheduled runs.

TOTommyBezView →
productivity
8

Meeting Action Extractor

Extracts owners and deadlines from a meeting transcript and drafts Linear follow-ups for approval.

TOTommyBezView →
productivity
6

CRM Hygiene Agent

Scheduled CRM hygiene via Connect that proposes dedupe, normalize, and enrich batches for human approval before any write.

TOTommyBezView →
4 installs