Token导航 LogoToken导航

Agent Skill · 开发

invoice-payment-chaser(发票付款追逐者)

用于辅助音频、音乐、语音转写、语音合成或声音素材处理。它适合让 Agent 生成配乐说明、整理音频流程、调用语音工具或处理播客和视频配音素材。使用时需要确认输入音频来源、输出格式、时长和模型限制;涉及人声克隆、版权音乐或公开发布时,应先核对授权和合规边界。

invoice-payment-chaser 是开发类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为接触敏感数据;许可证为 MIT-0,第三方扫描有提醒项,按安装量在开发类的 21,746 个 Skill 里排第 8,566。

总安装 3,105周安装 132GitHub Stars 公开资料未说明下载 1,088核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
1.0.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:invoice-payment-chaser(发票付款追逐者)
来源仓库:https://github.com/hussainpatan9/invoice-payment-chaser
安装命令:
openclaw skills install invoice-payment-chaser
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install invoice-payment-chaser

这个 Skill 是做什么的

开发类 Skill 面向写代码、改代码和排查问题,一般会读写仓库文件,部分还会执行构建或测试命令。

通过 Xero 和 QuickBooks 自动追查英国 B2B 客户的逾期发票,通过电子邮件和 WhatsApp 发送提醒并计算法定利息。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install invoice-payment-chaser;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要接触敏感数据,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

invoice-payment-chaser 怎么安装?

在终端执行 openclaw skills install invoice-payment-chaser。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

invoice-payment-chaser 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

invoice-payment-chaser 需要什么权限?

权限级别是接触敏感数据。该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

invoice-payment-chaser 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

invoice-payment-chaser 用的人多吗?

公开数据是累计安装 3,105 次,近一周安装 132 次,下载 1,088 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

invoice-payment-chaser 安全吗?

第三方扫描有提醒项,说明存在需要人工确认的行为。安装前请打开源码看清它读了什么、联网到哪里。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。

先想清楚的地方

  • 需要接触敏感数据,装到常用环境前要先评估影响面。
  • 第三方扫描存在提醒项或未通过项,需要人工逐条确认。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理开发类任务、又不想每次都手写提示词的人。

不太适合

  • 环境里有大量密钥、凭证,不方便给第三方 Skill 读取的人。
  • 需要厂商级技术支持和 SLA 的生产系统。

开发类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
skill-vetter

技能审查员 · OpenClaw

8,779,018986操作浏览器MIT-0通过
ontology

本体论 · OpenClaw

6,636,960576只读MIT-0通过
entra-app-registration

内部应用程序注册 · Codex、Claude

6,631,872764接触敏感数据未明确通过
entra-app-registration

内部应用程序注册 · Codex、Claude

3,757,680201接触敏感数据未明确通过
nano-banana-pro

纳米香蕉专业版 · OpenClaw

3,526,898364接触敏感数据MIT-0有提醒
invoice-payment-chaser

发票付款追逐者 · 本页

3,105—接触敏感数据MIT-0有提醒

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Invoice & Payment Chaser

Overview

Monitor overdue invoices across Xero and QuickBooks, send automated chase sequences via email and WhatsApp, escalate major accounts, generate aged debtor reports, and stop chasing the moment payment is received.

UK-focused: Late Payment of Commercial Debts Act 1998 awareness built in. Statutory interest calculation included. All correspondence in UK English.

Not limited to product sellers — works for any UK business that invoices clients: freelancers, agencies, consultants, tradespeople, and service businesses.


Trigger Phrases

Chasing:

  • "check overdue invoices" / "what invoices are overdue"
  • "chase invoices" / "send payment reminders"
  • "chase [client name]"
  • "who owes me money"
  • "run the payment chaser"

Reports:

  • "aged debtor report" / "show aged debtors"
  • "how much is outstanding" / "total overdue"
  • "payment report" / "cash flow summary"
  • "who hasn't paid"

Individual invoice:

  • "chase invoice [number]"
  • "mark invoice [number] as paid"
  • "stop chasing [client name]"
  • "add dispute note to [invoice]"

Configuration:

  • "show my chase sequence"
  • "update my payment terms"
  • "set chase schedule"

Configuration (ask on first use if not set)

Check memory for the following before running any workflow. If missing, ask the user once and store under invoice_config.

ACCOUNTING_PLATFORM      # xero | quickbooks | both
XERO_CLIENT_ID           # From your Xero app — developer.xero.com/app/manage
XERO_CLIENT_SECRET       # From your Xero app — keep secret, never expose
XERO_ACCESS_TOKEN        # OAuth access token — fetched automatically, auto-refreshed
XERO_REFRESH_TOKEN       # OAuth refresh token — stored securely, never shown
XERO_TENANT_ID           # Xero organisation ID — fetched automatically after auth
QB_CLIENT_ID             # From your QuickBooks app — developer.intuit.com
QB_CLIENT_SECRET         # From your QuickBooks app — keep secret, never expose
QB_ACCESS_TOKEN          # QuickBooks OAuth access token — auto-refreshed
QB_REFRESH_TOKEN         # QuickBooks OAuth refresh token — stored securely
QB_REALM_ID              # QuickBooks company ID — fetched automatically after auth

EMAIL_PROVIDER           # imap | gmail_oauth
IMAP_HOST                # e.g. imap.gmail.com or mail.company.co.uk
IMAP_PORT                # Default: 993
IMAP_USERNAME            # Your email address
IMAP_PASSWORD            # App password
SMTP_HOST                # e.g. smtp.gmail.com or mail.company.co.uk
SMTP_PORT                # Default: 587

BUSINESS_NAME            # Used in email sign-offs
OWNER_NAME               # Signatory name on chase emails
FROM_EMAIL               # e.g. accounts@mycompany.co.uk
PAYMENT_TERMS_DAYS       # Default: 30 (days after invoice date payment is due)
CURRENCY                 # Default: GBP

CHASE_ENABLED            # Default: true — automatically send chase emails on schedule
APPROVAL_REQUIRED        # Default: true — owner approves each chase before sending
WHATSAPP_CHASE_THRESHOLD # Default: £500 — chase via WhatsApp for invoices above this
STOP_CHASE_ON_DISPUTE    # Default: true — pause chasing if dispute flag is set
LATE_PAYMENT_INTEREST    # Default: true — calculate and mention statutory interest
                         # on invoices overdue 30+ days (Late Payment of Commercial
                         # Debts Act 1998 — 8% over Bank of England base rate)
PAYMENT_LINK_ENABLED     # Default: false — include Stripe payment link in chase emails
STRIPE_PAYMENT_LINK      # Your Stripe payment link URL (if PAYMENT_LINK_ENABLED = true)

Never log or repeat access tokens or refresh tokens back to the user.

Token refresh

Both Xero and QuickBooks OAuth tokens expire after 30 minutes (access token) and 60 days (refresh token). The skill automatically refreshes access tokens using the stored refresh token before each API call. If the refresh token has expired (after 60 days of inactivity), prompt the user to re-authenticate via CONFIG.md.


Invoice Status Definitions

Use these consistently across all workflows:

StatusDefinition
currentInvoice due date has not yet passed
overdue_1_71–7 days overdue — grace period, first chase
overdue_8_308–30 days overdue — second chase
overdue_31_6031–60 days overdue — third chase, statutory interest applies
overdue_60_plus60+ days overdue — final notice, escalate
disputedOwner has flagged as disputed — chasing paused
paidPayment received — remove from chase queue
written_offOwner has written off the debt

Calculate days_overdue as: today - invoice.DueDate

Always use the DueDate field returned by the API — both Xero and QuickBooks store this directly on each invoice and it reflects any custom payment terms (e.g. 14 days, 60 days, end of month) set per invoice or client. Only fall back to invoice_date + PAYMENT_TERMS_DAYS if DueDate is null or not returned by the API (rare edge case).

Do NOT override or recalculate DueDate using PAYMENT_TERMS_DAYS — this would give wrong results for invoices with non-standard terms.


Chase Sequence

Default sequence — apply unless the owner has customised it:

StageTriggerChannelTone
Stage 1 — Friendly reminder1 day overdueEmailPolite, assumes oversight
Stage 2 — Follow-up8 days overdueEmailFirmer, requests confirmation
Stage 3 — Formal notice31 days overdueEmail + WhatsApp*Formal, mentions statutory interest
Stage 4 — Final demand61 days overdueEmail + WhatsApp*Final, mentions debt collection

*WhatsApp only if invoice value ≥ WHATSAPP_CHASE_THRESHOLD

Owner can customise: "change my chase sequence to 3, 10, 21, 45 days"


Workflow A — Fetch and Triage Overdue Invoices

Triggered by: "check overdue invoices", "who owes me money", "run the payment chaser", or via heartbeat if configured.

Step 1 — Fetch invoices from Xero

Refresh access token if needed:

POST https://identity.xero.com/connect/token
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token
&client_id={XERO_CLIENT_ID}
&client_secret={XERO_CLIENT_SECRET}
&refresh_token={XERO_REFRESH_TOKEN}

Store the new access_token and refresh_token in memory.

Fetch all outstanding invoices:

GET https://api.xero.com/api.xro/2.0/Invoices?where=Status%3D%22AUTHORISED%22%20AND%20Type%3D%22ACCREC%22&order=DueDate%20ASC
Xero-Tenant-Id: {XERO_TENANT_ID}
Authorization: Bearer {XERO_ACCESS_TOKEN}
Accept: application/json

Filter to invoices where AmountDue > 0. Calculate days_overdue for each. Assign status from the Invoice Status Definitions table.

Key fields to extract per invoice:

  • InvoiceID, InvoiceNumber, Reference
  • Contact.Name, Contact.EmailAddress, Contact.Phones
  • Date, DueDate, AmountDue, AmountPaid, Total
  • LineItems (for context in chase emails)
  • CurrencyCode

Step 2 — Fetch invoices from QuickBooks (if configured)

Refresh QBO access token:

POST https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer
Authorization: Basic {base64(QB_CLIENT_ID:QB_CLIENT_SECRET)}
Content-Type: application/x-www-form-urlencoded

grant_type=refresh_token&refresh_token={QB_REFRESH_TOKEN}

Fetch overdue invoices via QuickBooks Query API:

GET https://quickbooks.api.intuit.com/v3/company/{QB_REALM_ID}/query
  ?query=SELECT%20*%20FROM%20Invoice%20WHERE%20Balance%20%3E%200%20ORDER%20BY%20DueDate%20ASC
Authorization: Bearer {QB_ACCESS_TOKEN}
Accept: application/json

Map QuickBooks fields to consistent internal format:

  • Id → InvoiceID
  • DocNumber → InvoiceNumber
  • CustomerRef.name → Contact.Name
  • BillEmail.Address → Contact.EmailAddress
  • DueDate → DueDate
  • Balance → AmountDue
  • TotalAmt → Total

Step 3 — Check for recent payments (real-time sync)

Before displaying, verify each flagged invoice hasn't been paid since the last check. For Xero, re-fetch each invoice individually if days_overdue seems inconsistent:

GET https://api.xero.com/api.xro/2.0/Invoices/{InvoiceID}

Remove any invoices where AmountDue = 0 or Status = "PAID" from the chase list. Update payment_log memory to record the payment with date and amount.

Step 4 — Display aged debtor summary

💰 Overdue invoices — 18 Apr 2026

Total outstanding:   £8,340.00 across 6 invoices

🔴 Overdue 60+ days (1):
  · Apex Design Ltd     INV-0089   £2,400.00   74 days   ⚠️ Final demand stage

🟠 Overdue 31–60 days (2):
  · Blue Wave Agency    INV-0094   £1,850.00   38 days   📨 Stage 3 due
  · Thornton & Co       INV-0091   £750.00     33 days   📨 Stage 3 due

🟡 Overdue 8–30 days (2):
  · Metro Retail Group  INV-0097   £2,100.00   12 days   📨 Stage 2 due
  · Harlow Consulting   INV-0098   £640.00     9 days    📨 Stage 2 due

🟢 Overdue 1–7 days (1):
  · Patel & Partners    INV-0101   £600.00     2 days    📨 Stage 1 due

Reply:
  "send all due"     — send all chase emails that are due today
  "chase [name]"     — chase a specific client
  "aged report"      — full aged debtor breakdown
  "stop [name]"      — pause chasing a specific client

Step 5 — Store in memory

Store current invoice list under invoice_chase_queue:

{
  "last_checked": "{ISO datetime}",
  "invoices": [
    {
      "id": "{InvoiceID}",
      "number": "{InvoiceNumber}",
      "client": "{Contact.Name}",
      "email": "{Contact.EmailAddress}",
      "phone": "{Contact.Phone}",
      "amount_due": {AmountDue},
      "due_date": "{YYYY-MM-DD}",
      "days_overdue": {n},
      "status": "{status}",
      "last_chased": "{ISO date or null}",
      "chase_stage": {1|2|3|4},
      "disputed": false,
      "platform": "xero|quickbooks"
    }
  ]
}

Workflow B — Send Chase Emails

Triggered by: "send all due", "chase invoices", "chase [client name]", or automatically via heartbeat.

Step 1 — Determine which invoices need chasing today

For each invoice in invoice_chase_queue:

  • Is it disputed = true? → Skip (if STOP_CHASE_ON_DISPUTE = true)
  • Is it paid or written_off? → Skip
  • Determine the invoice's current stage from days_overdue using the stage thresholds
  • Has chase_stage in memory already reached the current stage AND last_chased

is within the last 7 days? → Skip (avoid re-chasing within same stage too quickly)

  • Has chase_stage not yet reached the current stage? → Chase due (stage has escalated)
  • Has chase_stage reached current stage AND last_chased is more than 7 days ago?

→ Re-chase at same stage (follow-up within stage is acceptable after 7 days)

Stage 4 (final demand) exception: never auto-send Stage 4 — always present to owner for approval regardless of APPROVAL_REQUIRED setting or how many days have passed.

Step 2 — Generate chase email for each invoice

Use the template matching the invoice's current stage. Personalise with actual invoice data — amount, number, due date, days overdue.

Stage 1 — Friendly reminder (1–7 days overdue):

Subject: Payment reminder — {InvoiceNumber} — {BUSINESS_NAME}

Hi {first_name},

I hope you're well. I'm just dropping you a quick note as a friendly
reminder that invoice {InvoiceNumber} for £{AmountDue} was due on
{DueDate}.

If you've already processed this payment, please ignore this message —
it may simply be crossing in the post. If you have any questions about
the invoice, do let me know.

{IF PAYMENT_LINK_ENABLED}
For convenience, you can pay securely online here: {STRIPE_PAYMENT_LINK}
{ENDIF}

Many thanks,
{OWNER_NAME}
{BUSINESS_NAME}
{FROM_EMAIL}

Stage 2 — Follow-up (8–30 days overdue):

Subject: Outstanding payment — {InvoiceNumber} — {BUSINESS_NAME}

Hi {first_name},

I'm following up on my previous message regarding invoice {InvoiceNumber}
for £{AmountDue}, which was due on {DueDate} and is now {days_overdue}
days outstanding.

Could you let me know the expected payment date, or confirm if there
are any issues with the invoice I can help resolve?

{IF PAYMENT_LINK_ENABLED}
You can pay securely online here: {STRIPE_PAYMENT_LINK}
{ENDIF}

I look forward to hearing from you.

Best regards,
{OWNER_NAME}
{BUSINESS_NAME}
{FROM_EMAIL}

Stage 3 — Formal notice (31–60 days overdue):

Subject: Formal payment notice — {InvoiceNumber} — {BUSINESS_NAME}

Dear {first_name},

I am writing to formally notify you that invoice {InvoiceNumber} for
£{AmountDue} remains unpaid. This invoice was due on {DueDate} and is
now {days_overdue} days overdue.

{IF LATE_PAYMENT_INTEREST = true}
Under the Late Payment of Commercial Debts (Interest) Act 1998, we
reserve the right to charge statutory interest of 8% above the Bank of
England base rate on overdue commercial debts. We also reserve the right
to claim a fixed debt recovery charge of £{recovery_cost} (applicable to
debts of this size under the Late Payment of Commercial Debts Regulations
2013). Should this invoice remain unpaid, we may add these amounts to the
outstanding balance.
{ENDIF}

Please arrange payment within 7 days of this notice. If there is a
dispute regarding this invoice, please contact me immediately so we
can resolve the matter.

{IF PAYMENT_LINK_ENABLED}
Pay online: {STRIPE_PAYMENT_LINK}
{ENDIF}

Yours sincerely,
{OWNER_NAME}
{BUSINESS_NAME}
{FROM_EMAIL}

Stage 4 — Final demand (61+ days overdue):

Subject: FINAL DEMAND — Invoice {InvoiceNumber} — {BUSINESS_NAME}

Dear {first_name},

This is a final demand for payment of invoice {InvoiceNumber} for
£{AmountDue}, now {days_overdue} days overdue.

Despite previous correspondence, this invoice remains unpaid. If
payment is not received within 7 days of this notice, we will have
no alternative but to pursue this debt through formal channels,
which may include:

  · Referral to a debt collection agency
  · County Court Judgment (CCJ) proceedings
  · Statutory demand under the Insolvency Act 1986

{IF LATE_PAYMENT_INTEREST = true}
Please note that the following additional amounts are now claimable
under the Late Payment of Commercial Debts (Interest) Act 1998 and
the Late Payment of Commercial Debts Regulations 2013:

  Statutory interest ({calculated_rate}% per annum):  £{interest_amount}
  Fixed debt recovery charge:                          £{recovery_cost}
  Total amount now claimable:                          £{total_claimable}
{ENDIF}

We would strongly prefer to resolve this amicably. Please contact
me immediately on {FROM_EMAIL} if you wish to discuss payment.

{IF PAYMENT_LINK_ENABLED}
Pay now: {STRIPE_PAYMENT_LINK}
{ENDIF}

Yours sincerely,
{OWNER_NAME}
{BUSINESS_NAME}
{FROM_EMAIL}

Statutory interest and recovery cost calculation:

rate = 0.08 + bank_of_england_base_rate  (fetch current rate via web search if possible)
daily_rate = rate / 365
interest_amount = AmountDue × daily_rate × days_overdue

recovery_cost = 40   if AmountDue < 1000
recovery_cost = 70   if AmountDue >= 1000 and AmountDue < 10000
recovery_cost = 100  if AmountDue >= 10000

total_claimable = AmountDue + interest_amount + recovery_cost
calculated_rate = (rate × 100) formatted to 2 decimal places (e.g. "13.25")

If Bank of England base rate cannot be fetched, use 4.75% as the conservative default (search the web for the current rate before sending Stage 3/4 emails — it changes periodically).

Step 3 — Preview before sending (if APPROVAL_REQUIRED = true)

📧 Chase ready — {n} emails

Stage 1 (friendly reminder):
  · Patel & Partners   INV-0101   £600.00   2 days
    To: raj.patel@patelpartners.co.uk

Stage 2 (follow-up):
  · Metro Retail Group INV-0097   £2,100.00  12 days
    To: accounts@metroretail.co.uk
  · Harlow Consulting  INV-0098   £640.00    9 days
    To: claire.harlow@harlowconsulting.co.uk

Stage 3 (formal notice):
  · Blue Wave Agency   INV-0094   £1,850.00  38 days   ⚠️ Interest: £24.56
    To: finance@bluewave.co.uk
  · Thornton & Co      INV-0091   £750.00    33 days   ⚠️ Interest: £8.65
    To: accounts@thorntonco.co.uk

Total being chased: £5,940.00

Send all? YES / review each one / skip

If APPROVAL_REQUIRED = false, send immediately and report results.

Step 4 — Send emails

Use SMTP (same pattern as Customer Support Triage skill).

RFC 2822 format with proper headers:

From: {OWNER_NAME} <{FROM_EMAIL}>
To: {Contact.EmailAddress}
Subject: {stage_subject}
Content-Type: text/plain; charset=UTF-8

{email_body}

Step 5 — WhatsApp chase (for high-value invoices)

If invoice amount ≥ WHATSAPP_CHASE_THRESHOLD AND stage ≥ 3: Send a WhatsApp message via OpenClaw's configured channel:

💰 Payment chase — {client_name}

Invoice: {InvoiceNumber}
Amount:  £{AmountDue}
Overdue: {days_overdue} days

Stage {n} chase email just sent to {email}.

If no response within 48 hours, consider a direct call.
Client phone: {phone_if_available}

Step 6 — Update memory and log

After sending each chase:

  • Update chase_stage and last_chased in invoice_chase_queue
  • Add entry to chase_log:
{
  "invoice_id": "{id}",
  "invoice_number": "{number}",
  "client": "{name}",
  "amount": {AmountDue},
  "stage": {n},
  "sent_at": "{ISO datetime}",
  "channel": "email | email+whatsapp",
  "outcome": "sent | skipped | failed"
}

Confirm to owner:

✅ Chase emails sent — {n} invoices

  Patel & Partners     INV-0101   £600.00   Stage 1 ✅
  Metro Retail Group   INV-0097   £2,100.00  Stage 2 ✅
  Harlow Consulting    INV-0098   £640.00    Stage 2 ✅
  Blue Wave Agency     INV-0094   £1,850.00  Stage 3 ✅ + WhatsApp
  Thornton & Co        INV-0091   £750.00    Stage 3 ✅ + WhatsApp

Total chased: £5,940.00
Next run: tomorrow (Apex Design Ltd — Stage 4 final demand)

Workflow C — Aged Debtor Report

Triggered by: "aged report", "aged debtor report", "how much is outstanding", "cash flow summary".

Pull from invoice_chase_queue memory. If stale (>4 hours), re-fetch from API first.

📊 Aged Debtor Report — 18 Apr 2026

Total outstanding:    £8,340.00 (6 invoices)

Breakdown by age:
  Current (not yet due):   £0
  1–30 days overdue:       £3,340.00   40%   (3 invoices)
  31–60 days overdue:      £2,600.00   31%   (2 invoices)
  60+ days overdue:        £2,400.00   29%   (1 invoice)

By client:
  Apex Design Ltd          £2,400.00   74 days   🔴 Final demand
  Metro Retail Group       £2,100.00   12 days   🟡 Stage 2
  Blue Wave Agency         £1,850.00   38 days   🟠 Stage 3
  Thornton & Co              £750.00   33 days   🟠 Stage 3
  Harlow Consulting          £640.00    9 days   🟡 Stage 2
  Patel & Partners           £600.00    2 days   🟢 Stage 1

Chase history this month:
  Emails sent:     12
  Payments received after chase: 3 (£4,200.00)
  Avg days to pay after Stage 1: 8 days
  Avg days to pay after Stage 2: 14 days

⚠️ Apex Design Ltd has been at Stage 4 for 13 days with no response.
   Consider: debt collection referral or CCJ proceedings.

Workflow D — Mark Invoice as Paid

Triggered by: "mark invoice [number] as paid", "invoice [number] has been paid", or automatically when payment is detected during a sync.

Option 1 — Detected automatically during Workflow A sync

When AmountDue = 0 or Status = "PAID" is found during a fetch, mark as paid in memory and notify owner:

✅ Payment received — INV-0097

Metro Retail Group paid £2,100.00
Removed from chase queue.
Outstanding balance: £6,240.00

Option 2 — Manual mark (if payment received outside the system)

Update the invoice status in memory immediately. Optionally update the invoice in Xero/QuickBooks:

Xero — mark as paid (use the dedicated Payments endpoint):

PUT https://api.xero.com/api.xro/2.0/Invoices/{InvoiceID}/Payments
Xero-Tenant-Id: {XERO_TENANT_ID}
Authorization: Bearer {XERO_ACCESS_TOKEN}
Content-Type: application/json

{
  "Account": { "Code": "{bank_account_code}" },
  "Date": "{today_YYYY-MM-DD}",
  "Amount": {AmountDue},
  "Reference": "Marked paid via OpenClaw"
}

Note: Xero requires a bank account code (e.g. "090" for the default bank account) to record a payment against a specific account. If the owner hasn't configured one, update the status in invoice_chase_queue memory only and flag for manual reconciliation in Xero:

⚠️ Marked as paid in OpenClaw memory.
To reconcile in Xero, please record the payment manually:
Xero Admin → Invoices → {InvoiceNumber} → Add Payment

Workflow E — Dispute Management

Triggered by: "add dispute note to [invoice]", "pause chasing [client]", "[client] is disputing the invoice", "stop chasing [name]".

Mark as disputed

Update invoice_chase_queue to set disputed = true for the invoice. Add a note to memory:

{
  "invoice_id": "{id}",
  "dispute_note": "{owner's description}",
  "flagged_at": "{ISO date}"
}

Confirm:

⏸️ Chasing paused — Apex Design Ltd (INV-0089)

Reason: {dispute note}
All automated chases suspended until you resume.

Reply "resume chasing Apex Design" to restart,
or "write off INV-0089" to remove from queue entirely.

If STOP_CHASE_ON_DISPUTE = false, still note the dispute but continue chasing.

Resume chasing

Triggered by: "resume chasing [client]" Sets disputed = false, resets chase to appropriate stage based on current days_overdue.

Write off

Triggered by: "write off [invoice]" Confirm before action — this removes the invoice from all future chasing. Optionally update Xero/QuickBooks status to VOIDED or write-off account code.


Workflow F — Payment Chase Report

Triggered by: "payment report", "how much have I collected this month", "chase effectiveness report".

Pull from chase_log memory.

📊 Payment chase report — April 2026

Invoices chased:     18
Payments received:    7  (£12,400.00 collected)
Still outstanding:   11  (£8,340.00)
Collection rate:     60%

By stage effectiveness:
  Stage 1 responses:  4 of 6 paid within 5 days   (67%)
  Stage 2 responses:  2 of 5 paid within 7 days   (40%)
  Stage 3 responses:  1 of 4 paid within 14 days  (25%)
  Stage 4 responses:  0 of 3 paid                  (0%)

⚠️ Stage 4 (final demand) has 0% effectiveness this month.
   3 invoices totalling £5,100 may need debt collection referral.

Average days to payment after first chase: 11 days
Fastest paying client: Patel & Partners (3 days after Stage 1)
Slowest: Apex Design Ltd (still unpaid — 74 days)

Workflow G — Heartbeat (Proactive Monitoring)

Configure OpenClaw's heartbeat to check for newly overdue invoices automatically.

Recommended schedule:

  • Daily at 08:00 UK time — check for newly overdue invoices and any that have

crossed into a new chase stage overnight

In HEARTBEAT.md add:

- Check invoice chase queue. Fetch latest from Xero/QuickBooks.
- If any invoices have become newly overdue or crossed a stage threshold, notify me.
- If APPROVAL_REQUIRED = true, show me the draft chases for approval before sending.
- If APPROVAL_REQUIRED = false, send due chases automatically and summarise.
- Always notify me if a Stage 4 (final demand) invoice has had no response in 7 days.
- Notify me immediately if any previously overdue invoice shows payment received.

Payment received alert (highest priority heartbeat message):

✅ Payment received! — {client_name}

Invoice: {InvoiceNumber}
Amount:  £{amount} (was {days_overdue} days overdue)

Outstanding balance reduced to: £{new_total}

UK Late Payment Law Reference

Apply throughout. Never suggest ignoring these rights.

LawWhat it providesWhen it applies
Late Payment of Commercial Debts (Interest) Act 19988% + BoE base rate interest on overdue B2B invoicesBusiness-to-business transactions only
Late Payment of Commercial Debts Regulations 2013Fixed debt recovery costs (£40 for debts <£1,000; £70 for £1,000–£9,999; £100 for £10,000+)B2B only
Consumer Rights Act 2015Different rules for B2CBusiness-to-consumer only

Fixed debt recovery costs — can be claimed in addition to the invoice amount:

  • Debt under £1,000 → claim additional £40
  • Debt £1,000–£9,999 → claim additional £70
  • Debt £10,000+ → claim additional £100

These can be mentioned in Stage 3/4 emails to increase urgency. The skill will calculate and include them when LATE_PAYMENT_INTEREST = true.

Important caveats:

  • These rights apply to B2B transactions only. If the debtor is a consumer

(individual, not a business), different rules apply.

  • This skill provides information only — it is not legal advice.
  • For debts going to court or debt collectors, recommend the owner takes

proper legal advice.


Error Handling

ErrorCauseAction
Xero 401Access token expiredAuto-refresh using refresh token
Xero 403Wrong tenant ID or insufficient scopeAsk user to re-check Xero app permissions
Xero 429Rate limit (60 calls/minute)Wait 60s, retry
QB 401Access token expiredAuto-refresh using refresh token
QB 429Rate limitWait 60s, retry
SMTP send failedWrong credentials or portVerify app password, check SMTP settings
Invoice not foundID mismatch or deletedRe-fetch full list, update memory
Payment recorded but invoice still shows overdueSync delayRe-fetch individual invoice after 5 minutes

Required Xero API scopes (set in Xero app):

  • accounting.transactions — read and update invoices
  • accounting.contacts — read contact details
  • accounting.settings — read bank account codes (for marking paid)

Required QuickBooks API scopes:

  • com.intuit.quickbooks.accounting — full accounting access

Memory Instructions

Store and maintain:

  • invoice_chase_queue: current list of all overdue invoices with chase status
  • chase_log: log of every chase sent — used for effectiveness reports
  • invoice_config: all configuration values
  • dispute_notes: map of invoice ID → dispute description and date
  • payment_log: record of payments received during monitoring — used to show

"collected this month" figures even if Xero/QuickBooks data is cleared

Update invoice_chase_queue on every Workflow A run. Prune chase_log entries older than 12 months. Never prune payment_log — payment history is valuable long-term.


Tone & Communication (to owner)

  • 💰 invoice summary · 📧 chase email · ✅ paid · ⏸️ paused · 🔴 final demand · 📊 report · ⚠️ alert
  • Always show amount in £ — never raw numbers without currency
  • For Stage 4 (final demand), always flag as needing owner attention — never auto-send

without approval regardless of APPROVAL_REQUIRED setting

  • When a payment comes in: celebrate it briefly — "✅ £2,100 received from Metro Retail!"
  • When reporting aged debtors: be matter-of-fact, not alarming — state the facts and

suggest next action

  • Dates always in DD MMM YYYY format
  • Never send a chase email on a Saturday, Sunday, or UK bank holiday — queue it for

the next working day instead

平台分布

OpenClaw

87.34%
按下载量换算950

安全审计

VirusTotal

可疑

ClawScan

可疑

Static analysis

通过

权限和风险

接触敏感数据

该 Skill 可能接触密钥、Token、环境变量或敏感配置,应进入高风险复核队列,默认不自动发布。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。来源安全扫描存在提醒或未通过项,安装前请自行复核。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills