Skip to content

Hourly

Flag Zoho Books expenses above a limit

Any expense over your threshold shows up in Slack within the hour it was recorded.

Runs
Hourly
Apps
Zoho Books
AI
Not needed
Access
ZohoBooks.expenses.READ

Send this to your assistant

Create a ClickRuntime automation: every hour, check for new Zoho Books expenses over $1,000 and post the vendor, account, amount and date to #finance in Slack.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A company card gets used for a $3,200 software annual plan, a flight, and a laptop on the same afternoon, and the person who approves spending sees none of it until the monthly close. In Zoho Books, expenses are logged by staff or imported from feeds, and unusual ones blend into long lists. A mistyped amount, a duplicate charge or an unauthorized purchase can sit for weeks before anyone asks a question.

Every hour, expenses recorded since the previous check are retrieved and compared with a threshold you set, such as $1,000. Any expense above it is posted to Slack with the vendor, amount, account and who recorded it. Smaller expenses are skipped, so the channel only shows spending that deserves a second look.

Finance owners and founders who want spending oversight without approving every receipt find it most useful.

What you get out of it

  • Spending questions asked on the same day

    A charge flagged within the hour can be questioned while the buyer still remembers the reason. A month later, the context is gone and the question becomes an awkward audit.

  • Duplicate or mistyped amounts get caught

    An amount typed as 9,500 instead of 950 is noticed right away. Fixing it before reports go out avoids a correcting journal entry and a confusing month-end variance. The correction is made while records are open.

  • Oversight without approval bottlenecks

    Informed owners do not have to approve every receipt. Staff keep moving on routine purchases, and the owner reviews only the exceptions that cross the line, which is a better use of attention.

  • A running record of large spending

    The channel history becomes a record of significant spending. When a quarter ends over budget, you can see exactly which purchases pushed it there and who recorded them. Staff also see that spending is reviewed.

  • Fraud and misuse become harder to hide

    People who know large purchases are visible think twice about questionable ones. That quiet deterrent costs nothing and works better than a policy document nobody reads. Rules and thresholds are easy to explain.

  • Vendors worth reviewing

    Repeated large charges to one vendor may signal a contract worth renegotiating. Seeing them as they happen makes that pattern easier to spot than in a long month-end list. A vendor name in each message makes comparisons simple.

How it works

What happens, step by step

  1. Every hour ClickRuntime checks Zoho Books for expenses recorded since its last check.

  2. It keeps only the ones above the threshold you set.

  3. Each large expense goes to your Slack channel with the amount, vendor, category and date.

Before it runs live

  • Connect Zoho Books

What you get

RunsHourly
Flag Zoho Books expenses above a limittoday, 9:00Succeeded
Slack · #financeExpense 2,480.00: Acme Hardware, Office Equipment, 2026-10-18

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • Your own rules

    Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.

  • Any number of apps

    One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.

  • AI where it helps

    Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.

  • On a schedule or on each event

    Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.

Changes you can ask for

  • Act only on the items that match your own rules, and skip the rest
  • Add an AI step, for example to summarize, sort or draft a reply
  • Add another app, for example also send it to Slack
  • Combine it with other Zoho Books steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
large_expense_alert_zoho_books.pyexample
from clickruntime import on_trigger, credentials, http, notify, state, report_fetched

MIN_AMOUNT = 1000

ORG_ID = "your-zoho-organization-id"
ZB = "https://www.zohoapis.com/books/v3"

def zoho(path, **params):
    token = credentials.connection("zoho-books", "work")
    resp = http.get(f"{ZB}/{path}", headers={"Authorization": f"Zoho-oauthtoken {token}"},
                    params={"organization_id": ORG_ID, **params})
    resp.raise_for_status()
    return resp.json()

@on_trigger
def run(event):
    expenses = zoho("expenses", sort_column="created_time", sort_order="D", per_page=100)["expenses"]
    last = state.get("last_created")
    new = [e for e in expenses if last and e["created_time"] > last]
    report_fetched(len(new))
    if last and not new:
        return {"new": 0}
    for e in new:
        if e["total"] > MIN_AMOUNT:
            notify.slack(f"Expense {e['total']:,.2f}: {e.get('vendor_name') or 'no vendor'}, {e['account_name']}, {e['date']}", channel="#finance")
    if expenses:
        state.set("last_created", max(e["created_time"] for e in expenses))
    return {"new": len(new)}

FAQ

Common questions

What is the threshold based on?
It is an amount you set for the single expense total. Expenses at or above it are posted. You can choose different thresholds for different accounts, like travel versus software, as a refinement. The threshold applies to a single expense amount.
Does it include expenses in other currencies?
Zoho Books stores the foreign currency amount and the base currency equivalent. The alert uses whichever amount you tell it to compare, so you can base the threshold on the base-currency value. Foreign currency expenses are compared using the base amount when you ask for that.
Will the same expense alert twice?
No. Each run looks at expenses created since the last run, so an expense is evaluated once. Editing it later does not cause another alert unless it is recorded as a new entry. Each expense is evaluated once, when it first appears.
What permissions does it need?
ZohoBooks.expenses.READ. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it checks. Checks that find nothing new and stop right away aren't counted.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Flag Zoho Books expenses above a limit” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.