Zanii Due follows up on unpaid invoices over email and WhatsApp: a deterministic cadence, a human gate on anything final, and a provider receipt for every send, written to a ledger nobody can quietly rewrite. Not even us.
Governed by the Zanii Constitution v1.0 · Dubai




every send · sealed with a receipt
152
ledger entries, hash-chained
3
sends with provider receipts
6
invoices settled with proof
The cadence

A polite reminder the day after the due date. Payment on its way? Nothing more happens.

A short follow-up asking for an expected date, on the channels your client already uses.

A firmer note requesting settlement or a payment plan this week. Professional, always.

Nothing sends until you approve it. Silence is not consent: an unanswered gate expires loudly.
A reply from your client pauses everything and comes to you. The language model only reads; the engine alone sends.
The journey

Upload a CSV. We validate and de-dupe.
POST /api/invoices
You sign a scoped, expiring authority to chase.
signed · expires 60d
One tap arms the polite steps. Late invoices join mid-cadence.
plan · approved
Fixed templates, your name, every 10 minutes. No improvisation.
tick */10
Provider receipt bound in, or the record says attempted.
receipt: <c9d038b1…>
Any reply pauses the chase and lands on your desk.
classified: paid_claim
A payment reference closes it and seals the chain.
proof: FT-2026-0704The email agent, dissected
From: Your Studio <billing@yourdomain.com>
To: Acme Trading LLC
Subject: Invoice INV-2041: a gentle reminder
Hi Acme Trading,
A quick reminder that invoice INV-2041 for AED 12,500 was due on 28 June. If it is already on its way, thank you, please ignore this.
Pay here: yourdomain.com/pay/2041
Best,
Your Studio
Your identity, not ours. Mail goes out over your own mailbox (SMTP), WhatsApp from your own dedicated business number. Your clients see you. Deliverability and reputation stay in your hands, and your data stays in your systems.
Templates, not improvisation. The wording of every step is fixed and readable in advance: gentle, nudge, firm, final notice. The engine fills in the invoice facts. A language model never writes to your clients, so the tone you approved is the tone that ships.
The receipt is the claim. The chip on the letter is not decoration: “sent” can only be written into the record together with the provider's receipt. The message itself is stored as a fingerprint (a hash), so the ledger can prove what went out without hoarding your correspondence.
It knows when to shut up. Payment recorded, reply received, opt-out, expired authority, an unanswered gate: each of these stops the sending within one engine tick, and the stop itself is written to the ledger.
One entry, dissected
{ "seq": 47, "action": "sent", "body": { "invoice": "INV-2041", "channel": "email", "receipt": "<c9d038b1…@yourdomain.com>", "body_hash": "9cf5edb2fb6fa349…", "tone": "gentle" }, "prev_hash": "8a41c07d31be52aa…", "entry_hash": "d17f45c2091e883b…"}
What was done — the action, the invoice, the channel, and the provider's own receipt for it.
What it contained — a fingerprint of the message, not the message. Proof without hoarding.
Why it cannot be rewritten — every entry's hash includes the hash of the one before it, all the way back to genesis. Delete or edit any entry and the whole chain fails verification: yours to export in one call and check offline, with no help from us.
When it does not go to plan

Cadence pauses. The invoice moves to claimed-paid, unverified, and stays open until a real payment reference is attached. No proof, no paid claim.

That channel is permanently suppressed for that contact and the suppression itself is a ledger entry. The other channel resumes only if you confirm it.

No receipt means the record says attempted, never sent. One retry after 15 minutes, then the channel is marked degraded and you are alerted with the real error.

The engine halts before the next send and says so loudly: halted, delegation expired. It never chases on stale authority, and it never fails silently.

Anything above your money-gate threshold needs confirmation for every message. A gate ignored for 48 hours expires loudly and parks the invoice.

When the honest move is unclear, the engine stops and asks you. That is not a limitation. It is the product.
The guarantees

“Sent” is only written when the provider hands back a receipt: an SMTP message ID or a WhatsApp wamid. No receipt, and the record says “attempted”. The engine cannot lie to you, structurally.

Final notices and large invoices wait for your explicit confirmation. Expired confirmations halt the cadence loudly, never silently.

Every send, pause, gate decision, and payment lands in a hash-chained ledger. Export it in one call, verify it offline. A deleted action fails the run.

Chasing runs under a scoped, expiring delegation you sign: which invoices, which channels, how far it may escalate. When it lapses, the engine stops.
Numerals refer to articles of the Zanii Constitution, enforced in code before they are promised in prose.
Point Zanii Due at your overdue invoices and let a deterministic engine do the uncomfortable part, with a receipt for every move.
Open the dashboard →