Recued
Menu
← Back to recipes

What each client owes

by recued-core v2 8 views

Use “What each client owes” in Recued. One line per client: what is outstanding, across how many invoices, and how long the oldest has been due.

Complete workflow

Invoice Book 10 pinned recipes

Use Invoice Book in Recued for invoicing, receivables, getting paid, and freelance. It includes 17 built-in actions and 9 ready-to-run workflows. Actions that change data use Recued's approval controls.

You are viewing one recipe in this workflow. Installing it opens the complete pack so its other recipes and background automations arrive together.

What each client owes
This recipe

Use “What each client owes” in Recued. One line per client: what is outstanding, across how many invoices, and how long the oldest has been due.

pack:invoice-bookinvoicingrecordsaggregate
by recued-core pinned v2

Use “Issue an invoice” in Recued. Turn the entries you picked into an invoice: lines frozen at issue time, total computed once from minutes, and a balance that payments come off.

pack:invoice-bookinvoicingreceivablesrecords
by recued-core pinned v2

Use “Record a payment” in Recued. Take a payment off an invoice's balance. Part payments are supported; overpayment is refused rather than absorbed, and the invoice settles when the balance reaches zero.

pack:invoice-bookinvoicingreceivablespayments
by recued-core pinned v2

Use “Who owes you” in Recued. Every open invoice with what is outstanding, which are overdue, and the oldest one still unpaid.

pack:invoice-bookinvoicingreceivablesoverdue
by recued-core pinned v2

Use “Add something billable” in Recued. Anything you can charge for that is not logged time — a fixed fee, materials, a call-out. A negative amount is a credit.

pack:invoice-bookinvoicingbillablerecords
by recued-core pinned v2
Show all 10 recipes

Use “Delete a pending item” in Recued. Remove something from the pending list. If it came from logged hours, you choose whether those hours go back on the unbilled list or get deleted with it.

pack:invoice-bookinvoicingbillablerecords
by recued-core pinned v2

Use “Pull hours into pending items” in Recued. Turn unbilled time entries into pending billable items, priced at a rate you give.

pack:invoice-bookinvoicingbillablebridge
by recued-core pinned v2

Use “What could go on an invoice” in Recued. Everything billable and not yet invoiced — hours you pulled across and fees you typed in — each with its id, so you can choose.

pack:invoice-bookinvoicingbillablerecords
by recued-core pinned v2

Use “Carry a balance forward” in Recued. Close a part-paid invoice and issue a new one for exactly what is left, with the VAT carried in proportion. The new invoice takes no items.

pack:invoice-bookinvoicingreceivablesrecords
by recued-core pinned v2
View pack details, dependencies, and permissions →

One question, one query

list-open-invoices shows you invoices. This shows you clients — the view you actually want before a chase call, because a client with four invoices at £300 is a different conversation from one with a single £1,200.

The totals are exact. The pack declares this as a grouped aggregate op, so the money is summed inside Records as scaled integers. Adding up decimal strings in a recipe would go through Number() and drift — £1,234.10 + £5,678.20 is £6,912.299999999999 in floating point, and it rounds away to something that looks right until it doesn't.

It is one query, not one per client. The grouping happens in the same scan that reads the rows, which is why this stays usable when you have hundreds of clients rather than five.

What it will not do

Owed is invoices only. Time you have logged and not yet invoiced is not a debt — nobody has been asked for it. list-unbilled-hours is that question.

Currencies do not add up, so pick one. Each invoice carries its own currency and this sums whatever it is given. Leave the filter blank across a mixed book and you get a number with no unit, which looks like money and is not. The recipe refuses to render a total when it was not given a currency to hold to.

A client with no email lands in one row marked (no client email). They are not dropped and not silently merged into a blank name — an invoice with nobody attached is a real invoice with real money on it, and the row is there so you go and fix it.

Long lists are capped. Past 200 clients the list says so rather than quietly showing you the first 200 as though that were all of them. Every figure shown is still whole; what is missing is rows.

How it works 18 steps

Inspect the data fetches, transforms, gates, and output this recipe runs.

Process (18 steps)
currency_raw trim
Trim whitespace from setting currency
currency uppercase
Convert currency raw to uppercase
has_currency compare
Check if currency has data
currency_guard guard
Stop if has currency equals
status trim
Trim whitespace from setting status
owed ?
groups default
Apply default
client_count count
Count items in groups
rows map
Extract from each item
labelled map
Extract from each item
ranked map
Extract from each item
sorted sort
Sort by owed_rank
table to_table
Format results as a data table
total_raw sum
Sum values in
total math
Calculate: {{step.total_raw}} / 100
complete default
Apply default
capped_note ternary
Apply ternary
card to_summary
Format results as a summary card
Settings 2 configurable

Configurable at install. Defaults shown — change them anytime in Recued.

status setting = open
currency setting = GBP

About

Tags

pack:invoice-bookinvoicingrecordsaggregatev2

Details

18 steps 2 configurable settings recipe_id: list-what-clients-owe