Skip to main content
← All posts

Close From Open Approvals: Month-End Accruals for Slack-First Teams

September 29, 2026 · BuyFlow Team

Your team approved the spend in Slack three weeks ago. The vendor delivered. Finance still has no bill in QuickBooks or Xero. Month-end arrives, profit looks light on expenses, and someone starts scrolling old channels for "what did we already say yes to?"

That scramble is optional. Structured Slack purchase approvals are not only a control before money moves — they are the cleanest source list for accruals when invoices lag delivery.

The gap Slack approvals create (and can close)

Growing teams that book in QuickBooks Online or Xero often approve purchases in chat, then wait on the supplier invoice. That lag is normal. What breaks close is treating Slack as a decision log and the ledger as the only place spend "counts."

Two facts matter:

  1. An approval is a commitment, not a journal. In QuickBooks Online, a purchase order is a non-posting transaction — it does not move accounts until you bill or receive against it (QuickBooks Community). Xero purchase orders behave the same way: they stay off the general ledger until a bill is created and approved, which is why customers still ask for better committed-cost visibility and accrual-ready PO extracts (Xero Product Ideas).

  2. Accrual accounting cares about when you incurred the cost, not when the PDF arrives. Xero's own guide puts it plainly: accrued expenses are costs you have incurred but have not yet paid or been invoiced for; you debit the expense, credit an accrued liability, then reverse at the start of the next period so the real bill does not double-count (Xero — Accrued expenses). The same journal pattern is how teams record month-end accruals in QuickBooks Online (Dancing Numbers guide).

If your "yes" lives only in emoji threads, finance has nothing structured to accrue from. If every Slack approval carries vendor, amount, category, and a simple status (approved / delivered / billed), close has a checklist instead of archaeology.

Accrue what was received — not every open yes

Do not dump every open Slack approval into a journal. Procurement commitments and accounting liabilities are different.

Purchase-order accrual practice is clear: an open order with nothing delivered is a commitment for budget control, not a balance-sheet liability. You accrue for the portion that has been received (or, for services, performed) and not yet invoiced — often called goods received not invoiced (GRNI) — valued at the approved price (PurchaseOrders.io — PO accrual). Undelivered lines stay on a commitment list until they show up.

Translate that for a Slack-first team without an ERP dock:

Slack request state What finance does at close
Approved, not yet delivered / not started Keep on the open-commitment list. Do not accrue.
Delivered, used, or service performed; no bill yet Accrue (materiality threshold applies).
Bill already entered in QBO/Xero Skip — already in accounts payable.
Rejected, cancelled, or superseded Close the request; exclude from both lists.

That table alone stops the common mistake of accruing the entire open-approval pile and overstating liabilities.

Build a close pack from Slack, not from memory

Run this as a short, repeatable close step — same day every month.

1. Export open approved requests as of cutoff

Pull every Slack purchase request that is still approved and not fully billed as of the last day of the period. Minimum fields:

  • Request ID / link
  • Vendor
  • Amount and currency
  • GL category / expense account (set at request or approval time)
  • Approver and approval timestamp
  • Delivery / usage note (date goods arrived, or "service completed through MM/DD")
  • Bill status (none / partial / full)

If your tool already syncs into QuickBooks or Xero, use that status. If not, a shared sheet updated from Slack is still better than channel search.

2. Split commitment vs accrual

Mark each line: commitment only or accrue. Ask operations one question for ambiguous lines: "Was this in use or received by period end?" Yes → accrue. No → commitment report only.

Apply a materiality cutoff so close time goes to dollars that move the P&L — for example accrue lines above a fixed threshold and sample the rest with your bookkeeper.

3. Post one (or a few) reversing journals

For accrual lines, post in QuickBooks Online or Xero on the period-end date:

  • Debit the expense (or inventory) account from the request
  • Credit Accrued Liabilities (or a GRNI-style account)
  • Description: vendor, Slack request ID, "received not invoiced"
  • Attach or link the approval thread / export row

On day one of the next period, reverse the entry. When the vendor bill arrives, enter it normally in accounts payable. The reversal clears the estimate so you do not expense twice — the pattern Xero documents for accrued expenses and that QBO teams use with journal entries (Xero; Dancing Numbers).

For predictable recurring items (same contractor every month), schedule the accrual and reversal as recurring journals in QBO so the manual work is only the exception list.

4. Tie the bill back to the Slack request

When the invoice lands, match it to the same request ID you accrued against. That is the lightweight version of clearing GRNI: the accrual was an estimate at the approved price; the bill is the named payable. Price differences go to a variance or adjustment — they are not a reason to invent a second accrual (PO accrual lifecycle).

What to require on the Slack request so close is boring

Month-end quality is decided at intake, not on close day. For each purchase request, require:

  • Vendor and amount before Approve (no "roughly a few hundred")
  • Expense category / GL hint so the accrual journal is not a coding project
  • Expected delivery or service window so finance knows when the line becomes accrue-able
  • Proof attachment (quote, SOW, or receipt when available) — same discipline that keeps close from becoming a receipt chase
  • Status updates in the request thread: ordered → delivered/done → billed

Approvals that already live in Slack with routing and an audit trail beat DM archaeology (ExpenseTron on Slack expense approvals). The missing piece for many QBO/Xero teams is treating that trail as close input, not only as a yes/no button.

A one-week setup for a Slack-first QBO/Xero team

Day 1–2: Add "Delivered / used by period end?" and "Bill in QBO/Xero?" to your purchase request template. Decide the materiality threshold with your bookkeeper.

Day 3: Create Accrued Liabilities (Other Current Liability) in the chart of accounts if you do not already have it. Document the debit/credit pattern and the day-1 reversal rule.

Day 4: Dry-run last month: list open Slack approvals, split commitment vs accrued, draft the journal (do not post if books are closed — use it as a rehearsal).

Day 5: Put the export + split + journal steps on the month-end checklist with an owner (usually finance ops or the bookkeeper), not "whoever remembers."

You do not need an enterprise P2P suite for this. You need approved requests that stay open until billed, a honest delivery flag, and one reversing journal routine.

Bottom line

Emoji approvals vanish when you need them for close. Structured Slack purchase approvals — with vendor, amount, category, and delivered-not-billed status — give QuickBooks and Xero teams a real accrual pack: commitments stay off the balance sheet, received-not-invoiced spend hits the right period, and the vendor bill clears the estimate instead of creating a surprise.

Approve in Slack so the company commits with a trail. Close from those same open approvals so the books catch up before the invoice does.