From 31st-ai
Create invoices, receive customer payments, record sales receipts, deposit Undeposited Funds, apply customer credits, and review AR aging. Activate when the user mentions invoices, customer payments, AR aging, collections, outstanding receivables, customer credits, refunds, or depositing Undeposited Funds.
How this skill is triggered — by the user, by Claude, or both
Slash command
/31st-ai:accounts-receivableThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
| Situation | Tool path |
| Situation | Tool path |
|---|---|
| Customer pays immediately, no invoice | qbSalesReceipt → qbDeposit |
| Send invoice, collect later | qbInvoice → qbReceivePayment → qbDeposit |
| Payment against existing invoice | qbReceivePayment → qbDeposit |
| Non-customer deposit (interest, reimbursement) | qbDeposit directly |
| Customer return or credit | qbCredit(creditType="customer") → apply in qbReceivePayment |
| Cash refund to customer | qbRefundReceipt |
ReceivePayment does NOT put money in the bank — it moves funds to Undeposited Funds. qbDeposit is the required second step to move to the bank account.
qbMasterData(entityType="Customer", name=customerName) + qbMasterData(entityType="Item", name=itemName) + qbMasterData(entityType="Term", name=termName); >1 customer matches → MULTI-VENDOR AMBIGUITY GUARD blocks; ask or flagqbFetchTransactions(transactionType="Invoice", outstandingOnly=true, entityId=customerId). Outstanding status not date-bounded; scoped call misses old invoices. 1+ match that fits → ask if this is a new invoice or a duplicateqbFetchTransactions(entityId=customerId, lookbackDays=365) — 5-criteria rule: (a) ≥3 prior invoices in 365 days, (b) dominant item/terms ≥70%, (c) no second ≥20%, (d) amount within 5× median, (e) most recent <180 days old (CONSISTENCY RULE GUARD)qbFetchTransactions(transactionType="Invoice", entityId=customerId, ±3 days)qbInvoice when payment received)qbInvoice(customerId, txnDate, dueDate, lines, termId, emailStatus="NeedToSend")qbAttachFile(entityType="Invoice", entityId=invoiceId, ...)qbMasterData(entityType="Customer", name) + qbMasterData(entityType="Account", name="Undeposited Funds")qbFetchTransactions(transactionType="Invoice", outstandingOnly=true, entityId=customerId) — INCOME TYPE GUARD blocks qbReceivePayment if no outstanding invoice; route to SalesReceipt or DepositqbFetchTransactions(transactionType="Payment", entityId=customerId, ±3 days)unappliedAmount)qbReceivePayment(customerId, totalAmount, paymentDate, invoices=[{invoiceId, amount}], creditMemos=[])qbAttachFile(entityType="Payment", entityId=paymentId, ...)qbMasterData for customer + item + "Undeposited Funds" accountqbFetchTransactions(transactionType="Invoice", outstandingOnly=true, entityId=customerId) — INCOME TYPE GUARD blocks qbSalesReceipt if outstanding invoice exists (would double-count income, leave AR unpaid); route to qbReceivePayment insteadqbSalesReceipt(customerId, txnDate, depositToAccountId=undepositedFundsId, lines)qbMasterData for "Undeposited Funds" + target bank accountqbFetchTransactions(accountId=undepositedFundsId, startDate, endDate) — find pending itemsqbDeposit if used to close an invoice or record a single customer sale (must go through qbReceivePayment or qbSalesReceipt first)qbDeposit(depositAccountId=bankAccountId, txnDate, lines=linkedUndepositedFundsLines)Credit memo → apply in next qbReceivePayment using creditMemos=[{creditMemoId, amount}]
Cash refund → qbRefundReceipt(customerId, depositAccountId=bankAccountId, txnDate, lines)
qbReports(reportType="AgedReceivables", asOfDate) + qbReports(reportType="AgedReceivablesDetail", asOfDate)
DSO = AR / (Annual Revenue / 365)
Flag: invoices >90 days → discuss bad debt write-off with CPA; DSO increase month-over-month → collections risk; single customer >30% of AR → concentration risk. Delegate bad debt JE to journal-entries skill.
qbReceivePayment → Undeposited Funds, not bank — always follow with qbDeposit to move funds to bankqbDeposit cannot close an invoice or record a direct customer sale — go through qbReceivePayment or qbSalesReceipt firstqbDepositnpx claudepluginhub naga-deepledger/31st-ai-plugin --plugin 31st-aiProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.