Daily
Get an evening list of payments received
Each evening you see the payments recorded that day, with customer, invoice and a total.
- Runs
- Daily
- Apps
- QuickBooks
- AI
- Not needed
- Access
- accounting (read)
Send this to your assistant
Create a ClickRuntime automation: every weekday at 6pm, email me the QuickBooks payments recorded today with customer, invoice number and the day's total.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Payments land in QuickBooks throughout the day from card processors, bank deposits, checks that someone records and online invoice links. Nobody sees the full picture until they run a report, so the owner asks whether the big client has paid, and the bookkeeper answers from memory or checks the Payments tab again and again.
Each day, ClickRuntime queries QuickBooks for payments whose transaction date is today and emails you a single list. It shows who paid, the amount and the invoice the payment applied to, with a total for the day at the bottom. One email replaces the repeated checks and gives you a consistent place to look each evening.
It is useful for owners who track cash closely and for bookkeepers who reconcile payments against the bank each evening.
What you get out of it
End-of-day cash is known
The total at the bottom answers how much came in today without opening a report. That helps when deciding whether to place a supplier order or pay a bill tomorrow morning.
Bank reconciliation is faster
Bookkeepers can compare the listed payments to deposits as they hit the bank. A mismatch is noticed the same evening instead of during a month-end reconciliation, when the trail has gone cold.
Unapplied payments stand out
If a payment is received but not linked to the invoice you expected, the line makes that visible. Matching it to the right invoice right away prevents a customer from receiving a reminder for something they already paid.
A daily record builds itself
Each email is a dated snapshot of money received. When a customer disputes whether and when they paid, you can look up the day and see the entry without searching QuickBooks.
Quiet days are noticed too
A day with no payments at all is a signal as well. Seeing several light days in a row prompts a look at collections or at whether invoices were sent on time.
How it works
What happens, step by step
Every evening ClickRuntime asks QuickBooks for the payments recorded that day.
It lists each one with the customer, the amount and the invoice it paid.
It adds up the day's total.
The list and total arrive in your inbox as a short email.
Before it runs live
- Connect QuickBooks
What you get
Build your own
Need it to work differently?
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
- Run it at a different time, more or less often, or only on weekdays
- 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 QuickBooks steps into one automation
Under the hood
The code that runs this automation
from datetime import date
from clickruntime import on_trigger, credentials, http, notify
REALM_ID = "1234567890"
API = f"https://quickbooks.api.intuit.com/v3/company/{REALM_ID}"
def qb(method, path, **kw):
headers = {"Authorization": f"Bearer {credentials.connection('quickbooks', 'company')}", "Accept": "application/json"}
resp = http.request(method, f"{API}{path}", headers=headers, params={"minorversion": 73, **kw.pop("params", {})}, **kw)
resp.raise_for_status()
return resp.json()
def query(sql):
return qb("GET", "/query", params={"query": sql})["QueryResponse"]
@on_trigger
def run(event):
today = date.today().isoformat()
payments = query(f"select * from Payment where TxnDate = '{today}'").get("Payment", [])
if not payments:
return {"payments": 0}
lines = []
for p in payments:
invoice_ids = [t["TxnId"] for line in p.get("Line", []) for t in line.get("LinkedTxn", []) if t["TxnType"] == "Invoice"]
numbers = [qb("GET", f"/invoice/{i}")["Invoice"]["DocNumber"] for i in invoice_ids]
lines.append(f"- {p['CustomerRef']['name']}: ${p['TotalAmt']:,.2f} (invoice {', '.join(numbers) or 'none'})")
total = sum(p["TotalAmt"] for p in payments)
notify.email_me(f"Payments today: ${total:,.2f}", "\n".join(lines + ["", f"Total: ${total:,.2f}"]))
return {"payments": len(payments), "total": total}FAQ
Common questions
Does the digest include payments made through QuickBooks Payments and by check?
What time does it run, and what if payments are entered later?
Can the email show only payments above a certain amount?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Hear when daily sales look unusual
You get an email on mornings when yesterday's sales were far above or below normal.
See how it worksGet last month's ledger as CSV
On the 1st, the general ledger and invoice list for the previous month arrive in your inbox ready for your accountant.
See how it worksCatch overdue invoices nobody emailed
A daily list of overdue invoices that were never sent to the customer, so they don't sit forgotten.
See how it worksKeep exploring
Set up “Get an evening list of payments received” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.