qonto-invoice-chaser
Installation
SKILL.md
Qonto Invoice Chaser
Chase late payers without burning the relationship — and never chase a client who already paid. Read-heavy, two light writes: mark_client_invoice_as_paid (always proposed, never silent) and Gmail drafts (the user reviews and sends).
Prerequisites
get_organizationFIRST → organization, legal country,bank_account_ids / IBANs (list_transactionsrequires them).- Country-aware: the formal-notice legal kit (late-payment interest, €40 recovery indemnity — art. L441-10 & D441-5 of the French Commercial Code) applies to France. Other Qonto countries (DE, ES, IT, AT, NL, BE, PT…): graduated reminders still work; reference the EU Late Payment Directive (2011/7/EU) generically and never invent country-specific rates or legal wording.
- Gmail MCP optional, detected dynamically: present → reminders land as Gmail drafts; absent → say so once and output ready-to-copy text. The core works on Qonto alone.
Workflow
1. Scan receivables
list_client_invoices filtered on unpaid statuses, paginate per_page: "50". Per invoice: number, client, total incl. VAT, issue date, due_date, days overdue (vs today). Compute outstanding total and aging buckets (0-30 / 31-60 / 60+ days).
2. Cross-check against real cash — before any reminder
An invoice can be paid yet never marked (bank transfer outside a payment link, manual reconciliation forgotten). For every unpaid invoice, scan list_transactions (credit side, per account, since issue date):
- Strong match = exact amount ±0.01 AND (normalized counterparty ≈ client name OR reference/label contains the invoice number).
- Strong match → show the transaction as evidence and propose
mark_client_invoice_as_paid; act only on explicit confirmation in the current conversation. - Ambiguous (partial payment, one transfer covering several invoices, close-but-not-exact amount) → present the candidates, never auto-mark, never chase.