ZenMaid logo

ZenMaid automation · runs weekly

Mark ZenMaid appointments paid and chase unpaid balances

Customers pay the cleaner in cash, send Venmo on Sunday night or Zelle on Monday, and ZenMaid still shows every one of those jobs as unpaid. Once a week someone sits with the bank app on one screen and the List View on the other, ticking boxes and guessing who really owes money.

Cotlet does it in your own ZenMaid account with list_appointments, get_contact, mark_appointment_paid and send_message, called by your AI agent, an n8n workflow or a script.

Hosted · nothing to install or maintain

Official options

Can ZenMaid do this on its own?

ZenMaid has no API for payments (checked 12 Oct 2026), and Zapier has no ZenMaid actions. ZenMaid itself can mark many appointments paid at once from List View Bulk Actions, but it cannot see Venmo, Zelle or cash, and its help describes no automatic payment reminders: invoices are created and sent by hand.

By hand

How you do it in ZenMaid today

  1. Open Appointments > List View, click Edit filters, set Show to unpaid appointments, choose last week as the time frame and click Apply Filter.
  2. Compare each row with the payments received in Venmo, Zelle, PayPal or the cash envelope, matching by customer name and amount.
  3. Tick the matched appointments, then choose Bulk Actions > Mark as: Paid. Card payments are skipped, because ZenMaid marks them paid on its own when a card is charged or an invoice is paid online.
  4. For what is left, open Reports > Customers Sorted by Unpaid Balance, open each contact and send a reminder from Send message or create an invoice with a payment link.
  5. Repeat every week. A Venmo sent under a spouse's name, a tip paid with the job, or one payment covering two cleans is where the match goes wrong, and a customer gets a reminder for a bill they already paid.

With an agent

How to mark ZenMaid appointments paid and chase unpaid balances

Prompt

Here are this week's Venmo and Zelle payments. Mark the matching ZenMaid appointments as paid, then list who still owes us and send them a friendly payment reminder after I check the list.
  1. 01

    Start from your payment list, not from ZenMaid

    You paste or forward the week's Venmo, Zelle and cash records. The agent then pulls the unpaid appointments for the same period with list_appointments, so it only matches against jobs that still show money owed.

  2. 02

    Match carefully, and say how

    A payment matches when name and amount agree. A payment equal to two appointments of the same customer covers both. Partial amounts, different names or amounts that include a tip are not matched automatically; get_contact shows the customer's other appointments and balance so you can decide.

  3. 03

    Mark only the confirmed matches

    The agent marks the matched appointments paid after your OK and leaves card-paid jobs alone. If one turns out to be paid already, for example because the customer paid an invoice online in the meantime, it is skipped without an error.

  4. 04

    Remind only real balances

    Unmatched appointments older than the grace period you set become the reminder list, with the amount and date of each job. Customers with an open dispute in their notes are left out. Each reminder goes out from your chosen template after you approve the list.

What you get back

Example data

Payments received: 14 (Venmo 8, Zelle 4, cash 2)
Marked paid: 12 appointments, $1,560.00
One Zelle covers two cleans: Martinez 7 Oct and 14 Oct, $240.00
Needs your call: "J. Carter" Venmo $135.00, no customer with that amount
Still unpaid after 7 days: Nguyen $150.00 (3 Oct), Brooks $95.00 (6 Oct)
Reminders sent: 2

Other ways to ask

  • Every Monday, list ZenMaid appointments from last week that are still unpaid, grouped by cleaner who collected cash.
  • Mark all of Rosa's cash jobs from Saturday as paid; she handed in $480.
  • Show me customers whose unpaid balance is over $200, oldest first, without sending anything.

Before you automate it

What ZenMaid allows, and what to know first

  • Marking a ZenMaid appointment as paid never charges the card on file, and an appointment paid by card cannot be marked unpaid or edited afterwards.
  • ZenMaid marks an appointment paid automatically when the customer pays its invoice online or when you charge the card, so those jobs drop out of the unpaid filter on their own.
  • ZenMaid invoices are created by hand and cannot be automated, and a generated invoice cannot be edited: you void it and create a new one.
  • ZenMaid Bulk Actions > Charge Credit Cards in List View is grayed out if any selected appointment has no saved card or no Stripe or Square processor is connected.
  • Cleaners cannot mark ZenMaid appointments as paid; it takes an owner or office manager login.

mark_appointment_paid and send_message ask for your OK by default. To run it weekly without you, switch confirmation off for those tools in your dashboard.

Sources: ZenMaid help: How to Mark Appointments as Paid · ZenMaid help: How to Reflect an Unpaid Balance · ZenMaid help: How to Create, Send, and Track an Invoice · ZenMaid help: Ways Customers Can Be Charged by Card

REST

Call mark_appointment_paid from a script

curl

curl https://cotlet.dev/api/v1/zenmaid/mark_appointment_paid \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"appointment_id":"a_991870"}'

Example response

{
  "appointment_id": "a_991870",
  "paid": true,
  "total": "120.00"
}

MCP: add https://cotlet.dev/mcp/v1 with the same key; the tool is zenmaid_mark_appointment_paid. Example data.

Schedule it in n8n, Make, Zapier or cron

Tools

ZenMaid tools this automation uses

Cotlet ZenMaid tools used to mark ZenMaid appointments paid and chase unpaid balances
Tool Parameters
list_appointments from, to, query, paid, include_cancelled, limit, cursor
get_contact contact_id
mark_appointment_paid appointment_id
send_message appointment_id, contact_id, template, channels, body
All 13 ZenMaid tools with descriptions

Give your agent access to ZenMaid.

Free 7-day trial with 5,000 credits, no card needed. Cotlet is independent and not affiliated with ZenMaid.