prc-fin-002-ar-collections
Accounts receivable and collections SOP — 30/60/90-day dunning cadence, Small Claims Tribunal threshold HK$75K, HKICPA independence flag for assurance-client AR > 12 months. Use to manage AR aging and run collection actions.
Works with
Agent Skills format with YAML frontmatter. Claude Code reads it as-is.
--- name: "prc-fin-002-ar-collections" description: "Accounts receivable and collections SOP — 30/60/90-day dunning cadence, Small Claims Tribunal threshold HK$75K, HKICPA independence flag for assurance-client AR > 12 months. Use to manage AR aging and run collection actions." license: "MIT" --- # FIN-002 — Accounts Receivable & Collections **Version:** 1.0 | **Effective date:** 2026-04-29 | **Owner:** FM | **Last reviewed:** 2026-04-29 | **Next review:** 2027-04-29 --- ## 1. Purpose This SOP governs the systematic monitoring, follow-up, and collection of outstanding client invoices at Profit Rise Consulting (PRC). It defines a structured aging cadence (30/45/60/75/90+ days), escalating contact steps, and legal referral thresholds that protect firm cash flow, minimise bad-debt write-offs, and safeguard auditor independence for assurance clients. It operates directly downstream of FIN-001 (Invoicing) and feeds FIN-011 (Month-End Close). --- ## 2. Scope **In scope:** - All client invoices issued under FIN-001 that remain unpaid after their due date - 30/60/90-day AR aging buckets and associated reminder actions - Legal referral for debts > HK$75,000 (beyond Small Claims Tribunal limit) - Independence monitoring: assurance client fees unpaid > 12 months **Out of scope:** - New invoice generation (FIN-001) - Write-off approvals (require SP + COO; documented separately in FM write-off register) - Inter-company receivables --- ## 3. Roles & RACI | Task | MP | COO | SP | CO | FM | EM | LLM-OP | |------|----|----|----|----|----|----|--------| | Daily AR aging review | I | I | I | — | A/R | — | R | | Send Day 30/45 reminder | I | I | I | — | A | C | R | | Day 60 escalation call | I | I | C | — | A/R | R | I | | Day 75 formal demand draft | I | I | C | — | A/R | I | R (draft only) | | Day 90 legal referral decision | A | C | C | I | R | — | — | | Independence flag (assurance clients) | I | I | C | A/R | R | — | R | | Write-off approval | A | A | C | — | R | — | — | --- ## 4. Definitions | Term | Definition | |------|-----------| | **Aging bucket** | Classification of outstanding invoices by time overdue: Current (not yet due), 1–30 days, 31–60 days, 61–90 days, >90 days | | **DSO** | Days Sales Outstanding — average number of days to collect payment after invoice issuance | | **Small Claims Tribunal (SCT)** | HK tribunal with jurisdiction over monetary claims up to [HK$75,000](https://www.judiciary.hk/en/civil_jurisdiction/scc.html); no legal representation required | | **Independence impairment** | Situation where unpaid assurance-client fees >12 months before report date breach [HKICPA Code of Ethics](https://www.hkicpa.org.hk/en/Standards-setting/Ethics/Code-of-Ethics) independence rules | | **Demand letter** | Formal written notice of overdue debt, issued before legal proceedings | | **Write-off** | Accounting removal of a receivable deemed uncollectable; requires SP + COO approval | --- ## 5. Inputs / Preconditions - AR sub-ledger current and reconciled in `accounting_sys` (FIN-004 bank rec is current) - All invoices issued per FIN-001 with correct client billing contact in `crm` - Engagement letter on file confirming payment terms - List of assurance clients maintained in `doc_store:/compliance/assurance_client_register.md` (CO-maintained) - Legal counsel contact confirmed in `doc_store:/08_reference/key_contacts.md` - Authority token for LLM-OP scoped to `FIN-002` --- ## 6. Procedure 1. **Run daily AR aging report.** - Actor: LLM-OP (on behalf of FM) - System: `accounting_sys`, `dashboard` - Input: All open AR invoices - Output: AR aging report segmented into: Current, 1–30, 31–60, 61–90, >90 days; posted to `dashboard`; flagged invoices by bucket - Decision: IF any invoice enters a new aging bucket THEN trigger the action for that bucket (steps 2–6). IF all invoices current THEN log and exit. - On failure: If `accounting_sys` unavailable >2 hours, escalate Tier 2 to COO; FM reviews manually from last export. - Log: Append aging report run timestamp and bucket totals to `audit_log`. 2. **Day 30 — Send first payment reminder (invoice due date reached).** - Actor: LLM-OP (drafts); FM (approves send) — ESCALATE TO HUMAN for approval before external send - System: `email`, `accounting_sys` - Input: Client billing contact from `crm`; invoice details - Output: Polite reminder email sent referencing invoice number, amount, due date, and payment instructions; `accounting_sys` status updated to "Reminder 1 Sent" - Decision: IF client responds confirming payment in transit THEN log and set 5-BD follow-up check. ELSE proceed to Day 45 action. - On failure: If email bounces, FM calls client phone within 4 hours; updates contact details in `crm`. - Log: Email sent timestamp and response (if any) logged in `audit_log`. 3. **Day 45 — Send second reminder; EM engagement manager contact.** - Actor: FM (sends reminder); EM (calls client relationship contact) - System: `email`, `accounting_sys` - Input: Day 30 reminder record; client relationship contact from `crm` - Output: Second reminder email (firmer tone, references first reminder); EM calls or emails client project contact to flag overdue status; `accounting_sys` status → "Reminder 2 Sent" - Decision: IF client raises legitimate dispute (invoice error, delivery concern) THEN FM reviews with SP; if invoice error confirmed, issue credit note per FIN-001. IF payment committed for specific date THEN log and track. - On failure: EM cannot reach client — FM escalates to SP within same business day. - Log: EM contact attempt and outcome in `audit_log`. 4. **Day 60 — Escalation call; suspend new work if balance > retainer held.** - Actor: SP (calls client senior management); FM (prepares written follow-up) - System: `email`, `accounting_sys`, `kanban` - Input: Day 45 records; engagement retainer balance - Output: SP calls client management; written follow-up email sent; decision on work suspension documented; `accounting_sys` → "60-Day Escalation"; `kanban` card status updated - Decision: IF outstanding balance > retainer held on account THEN SP recommends work suspension pending payment; requires MP approval to suspend. IF balance ≤ retainer THEN continue delivery but monitor. - On failure: If SP unavailable, COO covers; if both unavailable, MP contacts client directly. Tier 3 escalation. - Log: SP call notes and work-suspension decision in `audit_log`. 5. **Day 75 — Issue formal demand letter.** - Actor: FM (prepares); SP (reviews); FM sends — ESCALATE TO HUMAN (SP) for approval - System: `doc_store` (demand letter template at `07_templates/collections/demand_letter.md`), `email` - Input: Full debt history; engagement letter reference; demand letter template - Output: Formal written demand letter emailed and posted to client; 15-day cure period stated; `accounting_sys` → "Demand Letter Issued" - Decision: IF debt ≤ HK$75,000 AND no payment by cure period end THEN prepare SCT filing (step 6a). IF debt > HK$75,000 THEN prepare external counsel referral (step 6b). - On failure: If client address unknown, FM obtains from `crm` or CR records; if still unavailable escalate Tier 2. - Log: Demand letter reference number and delivery confirmation in `audit_log`. 6. **Day 90+ — Legal action referral.** - Actor: MP (decision); FM (executes referral) - System: `email`, `doc_store` - Input: Full AR dossier: invoices, reminders, demand letter, client correspondence, engagement letter - Output: For debts ≤ HK$75,000: SCT claim lodged at [Small Claims Tribunal](https://www.judiciary.hk/en/civil_jurisdiction/scc.html). For debts > HK$75,000: dossier forwarded to external counsel (named in `key_contacts.md`) — ESCALATE TO HUMAN (MP). Engagement placed on hold in `kanban`. - Decision: IF client engages and partial payment plan agreed THEN document plan, get MP sign-off, log in `audit_log`; remove legal referral only if MP approves. ELSE proceed with legal action. - On failure: If SCT filing fails (technical), FM contacts Registry directly; if counsel unavailable, COO activates backup counsel. Tier 3 escalation. - Log: Legal referral date, case number (if SCT), counsel name, and outstanding amount in `audit_log`. 7. **Independence monitoring — assurance clients.** - Actor: LLM-OP (monitor); CO (flags and decides) - System: `accounting_sys`, `doc_store` (assurance client register) - Input: AR aging report; assurance client register - Output: Flag any assurance client with fees unpaid >12 months before anticipated report date; CO notified immediately; independence impairment risk documented per [HKICPA Code of Ethics](https://www.hkicpa.org.hk/en/Standards-setting/Ethics/Code-of-Ethics) - Decision: IF impairment confirmed THEN CO advises SP: resolve payment or disengage from assurance work before issuing report. No assurance report may be issued while independence is impaired. - On failure: If CO is unavailable, escalate directly to MP (GOV-003 §6 backup rule). - Log: Independence flag event and CO response in `audit_log`. --- ## 7. Outputs / Deliverables | Deliverable | Storage location | Retention | |-------------|-----------------|-----------| | Daily AR aging report | `dashboard`, `accounting_sys` | 7 years | | Reminder emails (Day 30, 45) | `doc_store:/clients/<id>/ar/` | 7 years | | Day 60 escalation notes | `doc_store:/clients/<id>/ar/` | 7 years | | Formal demand letter | `doc_store:/clients/<id>/ar/` | 7 years | | Legal referral dossier | `doc_store:/clients/<id>/ar/legal/` | 7 years (or until resolution) | | Independence flag records | `doc_store:/compliance/` | 7 years | --- ## 8. Edge cases & error handling | Condition | Detection | Action | Escalate to | |-----------|-----------|--------|-------------| | Client pays after legal referral but before judgment | FM spots payment in `accounting_sys` | Immediately notify counsel; recall SCT claim or halt proceedings; reconcile AR; document resolution | Tier 1 → FM → counsel | | Client enters liquidation / winding-up | FM receives notice or searches CR | File proof of debt with liquidator; write-off provisioned; SP + COO approve write-off | Tier 3 → MP + COO | | Invoice disputed as never received | Client claims no receipt | FM resends; confirms receipt; if >7 days since original send, sets new Day 30 clock from resend | Tier 1 → FM | | Assurance client proposes payment plan | Client contact at Day 75+ | CO reviews independence impact; if plan < 12 months to clear, CO may approve with monitoring; MP informed | Tier 2 → CO + MP | | Partial payment received | Partial credit in `accounting_sys` | Apply to oldest invoice first; update aging; reset collection cadence for balance | Tier 1 → FM | | Client disputes amount citing scope change | Day 45+ | FM freezes collection; SP reviews EL and delivery; if dispute legitimate, issue credit note; if not, proceed with demand | Tier 2 → SP | | Debt > HK$75,000 and client is overseas | Day 90 | Refer to external counsel experienced in cross-border recovery; review governing law clause in EL | Tier 3 → MP + external counsel | --- ## 9. Escalation triggers - **Tier 1 → FM:** Email bounce at any reminder stage; partial payment applied to wrong invoice; SCT filing technical issue. - **Tier 1 → EM:** Client raises delivery dispute causing invoice hold. - **Tier 2 → SP:** Client uncontactable at Day 45; outstanding > retainer at Day 60; dispute of legitimate scope. - **Tier 3 → MP + COO + CO:** AR > 90 days; client enters insolvency; independence impairment identified for assurance client; any debt requiring write-off > HK$5,000. - **Tier 3 → MP:** Decision to refer to external counsel for debts > [HK$75,000](https://www.judiciary.hk/en/civil_jurisdiction/scc.html) — ESCALATE TO HUMAN mandatory. - **Tier 4 → MP + external counsel:** Any threat of litigation from client; demand letter received from client's lawyers. --- ## 10. KPIs & quality checks | KPI | Formula | Target | Frequency | |-----|---------|--------|-----------| | DSO | (Total AR ÷ Monthly revenue) × 30 | < 30 days | Monthly | | AR 31–60 days bucket (% of total AR) | AR 31–60 days ÷ Total AR | < 15% | Monthly | | AR 61–90 days bucket (% of total AR) | AR 61–90 days ÷ Total AR | < 5% | Monthly | | AR > 90 days bucket (% of total AR) | AR >90 days ÷ Total AR | < 2% | Monthly | | Bad debt write-off rate | Write-offs ÷ Total revenue | < 1% | Quarterly | --- ## 11. References & revision history - [HKICPA Code of Ethics — Independence (unpaid fees >12 months)](https://www.hkicpa.org.hk/en/Standards-setting/Ethics/Code-of-Ethics) - [Hong Kong Small Claims Tribunal — HK$75,000 limit](https://www.judiciary.hk/en/civil_jurisdiction/scc.html) - [IRD — Record Retention 7 years (s.51C)](https://www.ird.gov.hk/eng/tax/bus_rke.htm) - [PCAOB ET Section 191 — Independence & unpaid fees](https://pcaobus.org/oversight/standards/ethics-independence-rules/details/ET191) - GOV-003 §5 — Authority limits - GOV-005 — Escalation Matrix - GOV-007 — LLM Operator's Manual - FIN-001 — Invoicing & Billing Cycle - FIN-011 — Month-End & Year-End Close | Version | Date | Author | Approver | Change | |---------|------|--------|----------|--------| | 1.0 | 2026-04-29 | COO | MP | Initial release |
More General & Other skills
find-skills
vercel-labs/skills
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
grill-with-docs
mattpocock/skills
A relentless interview to sharpen a plan or design, which also creates docs (ADR's and glossary) as we go.

