Skip to content

Month-end close

The bookkeeper's monthly checklist. Work through it in order after the last business day of the month. Every report named here opens from Reports.

The books of record are QuickBooks. This system is the business system and the data source. What feeds QuickBooks is the Sales Report, Inventory Receipts, the sales-tax liability and Stock Balance. This system's own general ledger is not maintained as the book of record, so its expense accounts and its Stock Received But Not Billed balance are reference only.

1. Sales completeness

  • [ ] Run Sales Report for the month and compare its total against Sales Register. They should agree. A gap is unconsolidated POS Invoices, which the reconsolidation sweep will retry.
  • [ ] Reconcile the web store. Total the Web-channel invoices and compare against completed WooCommerce orders for the month. Two normal sources of difference: accessory-only orders, which never touch the counter and are booked from the WooCommerce report, and orders not yet disposed on the last day of the month.
  • [ ] Match every return invoice for the month against a WooCommerce refund.
  • [ ] Reconcile GunBroker. Filter the Sales Report to the GunBroker channel and compare against the marketplace's own month. Most of the difference is timing, because GunBroker records the sale date and we record the disposition date. Work it order by order in GunBroker Statement Reconciliation, which sorts each line into an amount difference, a timing difference or a missing record.
  • [ ] Read the Accrual column on that report. It shows none, posted, cancelled or reversed. An amount that matches while the accrual is not posted is the real problem: both sides derive from the same order, so the numbers agree even when the accrual journal entry was never created or was reversed and never re-hung.
  • [ ] Run GunBroker Cash Basis Adjustments with the period end set to the last day of the month and read item 3, paid but not disposed. Those orders correctly post nothing to the ledger this month.

2. Clearing accounts

Every clearing account must reach zero or be explainable.

Account What the balance is How to clear it
Payroc Card Clearing Card takings not yet in the bank Compare with bank deposits. The gap is processor fees. Journal entry: debit Merchant Processing Fees, credit Payroc Card Clearing.
Woo Clearing Web takings not yet settled Same treatment against the WooCommerce settlement report.
GunBroker Clearing Card channel only Zero while the store takes checks and money orders.

GunBroker checks in transit are a bank-side item, not a clearing account. Checks and money orders go into the operating bank account named in GunBroker Settings. Your bank reconciliation will always carry a batch of deposits that have landed in the bank with nothing yet on the ledger, and that is by design: the receipt posts on its invoice date, never back on the deposit date, and the money arrives before the gun is disposed. Tie the batch out against the sum of the Banked Amount column on item 3 of the Cash Basis Adjustments report. Do not use the sum of order totals, which differs on a short or over payment, and do not net refunds out of it.

3. Operating expenses

Book the month's expenses from the bank statements and bills. Without this step the profit and loss statement is gross margin, not profit. The accounts are already set up under Indirect Expenses:

Account What goes in it
Office Rent Rent
Salary, Payroll Taxes Wages and employer taxes
Merchant Processing Fees Card and web payment fees from step 2
Insurance Expense Insurance
Licenses and Permits FFL, SOT and state licenses
Software and Subscriptions FastBound, ShipStation, hosting
Professional Fees Accounting and legal
Utility Expenses, Telephone Expenses Utilities and phone

4. Inventory and purchasing

  • [ ] Spot-check Stock In Hand on the balance sheet against the FastBound bound book count.
  • [ ] Look for zero-cost guns. Run the Sales Report and check the cost flags. A gun that sold with no recorded purchase price needs its cost basis filled in. See Corrections.
  • [ ] Hand last month's receipts to the accountant. Run Inventory Receipts with Period set to Last Month. The Summary view gives category by receipt type for the purchase and inventory entries. The Units view exports the per-unit detail as CSV. Revaluation rows are cost corrections with a unit count of zero, so book them as an inventory adjustment rather than a new purchase. Transfer and Custody rows are hidden unless you tick their Include boxes.
  • [ ] Note for the tax preparer: a firearm disposition leaves stock through a material issue that posts to Stock Adjustment, so debits on that account arising from firearm dispositions are cost of goods sold, not shrinkage. Non-firearm lines such as ammunition and optics post explicitly to Cost of Goods Sold and are outside this manual reclassification.

Purchases are prepaid, so there is no payable to track. Receiving stops at Receive Goods, and this system's Stock Received But Not Billed balance is left alone.

5. Web accessory stock legs

A web order's Sales Invoice does not move stock itself. Its firearms leave through the disposition, and its accessory lines leave through a delivery note raised against the invoice. When that leg is missing the Sales Report still shows a cost, because its cost column comes from the bin valuation and not from the ledger, so the report can never reveal the gap. Before closing:

  1. Confirm no web invoice in the month still owes a delivery note.
  2. Confirm no open task is outstanding on a Sales Invoice or a web order. These are raised once each for a stock leg that could not be issued, a revenue booking that keeps failing, an order whose only invoice is cancelled, a refund held because someone is holding the stock leg, and an invoice left in draft on a total mismatch. Each one is an unbooked sale or an overstated shelf, and none may be carried into a closed month.
  3. A submitted return against a web delivery note puts the goods back at their original valuation on the return's own date. The Sales Report does not net that out, so in a month with such a return expect report cost to exceed ledger cost of goods sold by the returned amount, and reconcile from the ledger.

Backfill a missing delivery note on the Sales Invoice's own date while the period is still open. Once the period is closed, post it on the correction date and say so in the delivery note comment. Never both.

6. Tax

  • [ ] Texas sales tax. Total the Sales Tax Payable column on Sales Register for the month. That is the tax collected and due. Post the payment journal entry against Sales Tax Payable after you file.
  • [ ] Spot-check zero-tax invoices. They should all be shipments to out-of-state FFLs. An in-state zero-tax invoice with no exemption certificate needs chasing. GunBroker orders are exempt from this rule. Sales Tax Payable is always zero on a GunBroker order, because GunBroker collects and remits as the marketplace provider into its own liability account. Check that account's credits for the month instead.
  • [ ] Reconcile freight tax. The Sales Tax card on the Sales Report's product views counts per-line tax only and excludes counter shipping tax. Add the month's shipping-tax charge rows to the card total and that should equal the ledger sales-tax credits from sales invoices. File from the ledger.
  • [ ] Texas marketplace worksheet. Open the Sales Report, choose the tax-lines view, filter Channel to GunBroker and read the Marketplace sales (TX) card. Add it to Item 1, Total Texas Sales. Do not add it to Item 2, Taxable Sales, because GunBroker has already reported it under its own license. The figure is the merchandise net plus freight income on Texas-delivered orders, and excludes the marketplace's collected tax and buyer service fee. Keep records for four years and attach a copy of the GunBroker tax statement as the provider's proof of collection.
  • [ ] For order-by-order review, the tax-lines view carries a Ship-to State column and a Marketplace Exempt column. The second one separates "zero tax because the buyer holds an exemption" from "zero tax because that state has none".

7. Lock the period

When everything above is done, advance the closing date to the end of the month so a filed period cannot be edited. The field is accounts_frozen_till_date on the Company record, not in Accounts Settings.

Locking changes what refunds can do

Once a period is frozen, a WooCommerce refund on an order inside it cannot reconcile: the amendment re-posts the original invoice's reversal on its own date and the freeze refuses it, so the job fails and leaves an error log. Unfreeze, run the refund reconciliation, then freeze again. A backfilled delivery note dated into a frozen period fails the same way, which is why the rule in step 5 sends it to the correction date instead.

8. The GunBroker channel

Five accounts carry the marketplace's money through our books:

Account What it holds How it clears
GunBroker MPF Sales Tax Payable Tax GunBroker collected for us as marketplace provider Against the tax statement. Remit about 10 to 14 days later by journal entry.
GunBroker Marketplace Fee Payable The buyer service fee GunBroker charges the buyer through us Against whichever statement carries it. The report lists it separately from the collected tax for that reason.
Accrued GunBroker Fees Final value fees and FFL document fees we owe, accrued per item Against the fee bill, issued about the 2nd and auto-debited about the 20th. Clear by journal entry.
Marketplace Fees - GunBroker The expense side of that accrual A profit and loss expense, never cost of goods. The same gun must cost the same in either channel.
GunBroker Clearing The card channel's clearing account Zero while the store takes checks only.

Settle these with journal entries, not purchase invoices. There is no payable to age.

Renaming any of these accounts in the chart of accounts silently breaks the Sales Report: it matches on the bare account name, and a renamed account sends those tax lines back to unclassified. The report still runs and the data flags turn red, and the number that has gone wrong is the one the Texas return needs. Rename only with a developer, who has to change the matching list at the same time.

The books accrue and the return is filed on the cash basis. Seven items bridge the two, and the GunBroker Cash Basis Adjustments report is the schedule. Give the accountant the report with the three statements printed at the top of it, especially the first one: a GunBroker order is always paid before it is invoiced, and the receipt posts on the invoice date, never on the deposit date. Without that sentence, reconciling the bank and reading the invoices counts the same check twice.

The daily GunBroker audit raises eight kinds of alert. All of them should be clear before you close. See Background jobs and GunBroker.

GunBroker refunds and chargebacks

POS deliberately offers no refund button for a GunBroker sale. There is no control on any page and no interface behind one. Refund on the GunBroker side first, using their refund or return flow, and mirror it here afterwards.

The reason is sales tax. GunBroker files it under its own license as the marketplace provider. Only a refund run through their flow makes their statement and their state filing go down. A refund we issue ourselves leaves us having refunded the buyer's tax while GunBroker still reports the original amount, and the store absorbs the difference.

Three rules govern the entries afterwards:

  1. Refund on GunBroker first, mirror here second.
  2. A payment entry posts on the invoice date, never back on the deposit date. A GunBroker order is always paid before it is invoiced, so "the buyer paid" does not mean "there is a payment entry to reverse". The payment entry only exists once the Sales Invoice exists.
  3. Every hand-built refund payment entry needs the order number in its remarks. Tick Custom Remarks first, then type GunBroker Order #<number>, one order number per payment entry. The Cash Basis Adjustments report recognizes a refund by that mark. Miss it and the order stays on the paid-but-not-disposed list forever, and the year's gross receipts are overstated. Put two order numbers in one remark and both orders are counted at full value, and both are understated.

Tick Custom Remarks before you type

Remarks is read-only until Custom Remarks is ticked, and saving without it makes the system rewrite the whole remark from the amount and the party. Your order number disappears with no error and no warning, and the cash basis schedule never sees that refund again.

The full journal-entry handbook covers six situations: cancelled before shipping and unpaid, partial refund or price allowance, whole gun returned, chargeback, a bad or forged check, and cancelled after payment but before disposition. It also carries a worked example running one order from disposition to refund. It lives with the system documentation as docs/accounting/gunbroker-refunds.md. Read the case that matches before posting anything, because the order of operations differs between them. In particular, cancelling a Sales Invoice unlinks its payment entry rather than voiding it, so the default is to cancel the invoice only and leave the payment alone. The one case that starts by cancelling the payment entry is a bounced or forged check, where the money never arrived at all.

A whole-gun return also needs a bound book acquisition from the receiving FFL at the original purchase cost. Without it the book says the gun is still with someone else while it is sitting in your safe. Consigned guns cannot be returned, and the system refuses.

A chargeback debits Chargeback Losses and credits the clearing account. Once you have dealt with it, fill in Chargeback Handled At on the GunBroker Order or the daily audit reports it again every day.