End-of-Day Reconciliation
This page walks a cashier (or manager) through the end-of-day close. For the Reports screen reference itself — filters, columns, what's in the summary panel — see Reports.
The Reports screen requires WCPOS Pro. Without Pro, end-of-day reconciliation has to be done from WP Admin → WooCommerce → Analytics.
WCPOS doesn't have a built-in opening-float or "open till / close till" feature — there's no shift session to clock in/out, no in-app drawer counting, and no automated variance calculation. The Reports screen tells you what the till should have taken; the cashier counts the drawer and compares manually. This page describes the procedure around that.
Before your first close
Decide once, then stick to it across shifts:
- Opening float amount. A typical retail till starts the day with $100–$200 in small denominations for change. Pick a number and keep it consistent — it makes the daily reconciliation arithmetic simple.
- Where you'll record the float. WCPOS doesn't track this; you'll need a sticky note, a clipboard sheet, or a spreadsheet that stays at the till. Whichever you choose, the opening float and expected drawer total both belong on the same record so the reconciliation is auditable later.
- Who counts and who signs. Two people is best practice (cashier counts, manager verifies). Single-staff stores skip this and the cashier does both — note this as your policy.
Opening the till
At the start of the shift:
- Take the float out of the safe and put it in the drawer.
- Write the float amount and the opening time on your reconciliation sheet.
- Sign in to WCPOS at the right store (multi-store sites) — see Multi-Store Setup if you're not sure which one to pick.
That's it. WCPOS is now logging the shift's sales against your user account and the selected store.
During the shift
A few things to watch that make the close easier:
- Use coupons or line-item discounts consistently. Both work for ad-hoc adjustments — coupons appear as a tracked discount in reports, line-item price changes don't. See Discounts for the trade-off.
- Park orders rather than abandoning them. A "POS - Open" order (saved with Save to Server) shows up clearly in Orders and Reports; an abandoned cart leaves no trail. Resume parked orders later when the customer returns.
- Drop excess cash mid-shift if the drawer gets heavy. Record each drop with amount + time so the math works out at close. WCPOS doesn't log drops; they live on your reconciliation sheet.
The close procedure
Stop taking sales
Lock the front door (or pause the queue) so no new transactions land mid-count. If a customer arrives while you're closing, finish the count and the report before ringing them up — adding sales after the report period messes up the totals.
Count the drawer
Take the drawer to a back office or a quiet counter and count every denomination. Note the total — this is your counted cash.
If you've made any cash drops or paid out cash during the shift (refunds, supplier payments out of the till), have those amounts ready too.
Open the Reports screen
In the POS, go to Reports. Set the filters so the report covers your shift exactly:
- Date Range: Today (or the specific date if you're reconciling after the fact)
- Cashier: your own user, if multiple cashiers worked the till and you only want your own sales
- Store: auto-set to your current store
- Status: leave on default (typically Completed + Processing)
The Sales Summary panel on the right updates as you change filters. Note the Cash figure under Payment Methods — this is your expected cash sales.
Reconcile cash
Run the arithmetic:
Expected drawer total = Opening float + Cash sales − Cash refunds − Cash drops/payouts
Compare to counted cash. They should match.
- Match exactly: great — sign and date the sheet, drop the cash, you're done with cash.
- Mismatch: see Variance handling below before signing.
Reconcile card
Now check card payments. Note the Card figure (and any integrated-gateway figures — Stripe Terminal, SumUp, Vipps/MobilePay) from the Sales Summary.
On your card terminal, run a batch total (the exact menu varies by terminal — usually under Reports or End of Day on the device). Compare:
- Terminal batch total vs WCPOS card total for the same period — they should match.
- If you use a manual batch-settling terminal, settle the batch now, before you go home. Integrated gateways like Stripe Terminal auto-settle. For Square configuration through Web Checkout, see Web Checkout.
Print the report
In the Reports screen Summary panel, click Print. This typically uses your configured print routing (see Print Routing) to send the report to a receipt or document printer and produces a paper record.
The printed report includes the store info, period, totals by line, payment method breakdown, and (if you have orders selected in the Orders Table) per-order details.
Drop cash and sign off
- Put the opening float for tomorrow back in the drawer.
- The rest of the cash goes in the safe drop bag with the signed reconciliation sheet and the printed report stapled together.
- Update any external system you use (spreadsheet, accounting software).
- Close the WCPOS app and lock up.
Variance handling
If counted cash doesn't match expected, work through these in order before signing off:
- Recount the drawer. Mistakes happen. Recount, especially the coins.
- Check for missed cash transactions. Did anyone process a sale on a different device / browser tab and not get into this period? Recheck the date range and cashier filter on the report.
- Check for parked/open orders. Filter Orders to POS - Open status — a sale that was rung up but not paid will show here. Either complete it now or expect the variance.
- Refunds and payouts. Confirm every cash refund and cash payout from today is recorded on the sheet, with amounts.
- Coupons and discounts. Confirm the totals account for any discounts applied — the report's Total Discounts line shows tracked coupon discounts; line-item price overrides reduce the Net Sales directly (see Discounts).
- Wrong change given. The most common variance source. Small differences (under $5) are usually here; large differences need investigation.
Record the variance on the sheet whether you find the cause or not. A trail of small documented variances is better than untracked discrepancies.
Multi-cashier or multi-store scenarios
Several cashiers worked the same till today
Two options:
- One close per cashier (most accurate): each cashier filters Reports by their own user before closing. They each count what they took in and reconcile their own slice. The drawer can be physically handed off between shifts; each handoff is a mini-close.
- One close for the whole day: leave the Cashier filter on All and reconcile the drawer once at end of day. Faster, but variances are harder to attribute.
The Cashier filter on the Reports screen is the same filter that powers the breakdown — there's no separate per-cashier panel.
One cashier worked at multiple stores today
Sign out of one store, sign in at the other; each session is logged against the right store via the _pos_store order meta. At close, do one reconciliation per store by switching the Store filter on the Reports screen.
If you're closing the whole site at the end of the day, also do an overall close with the Store filter set to All — useful for cross-checking the per-store closes.
Each store has a different person closing
That's the normal pattern. Each store closer signs in at their store, runs the report filtered to that store + the day's date range, and reconciles the drawer at that location. The site owner can review all of them the next morning from WP Admin → WooCommerce → Analytics, which aggregates across stores.
A sale went through after I started the close
Don't include it in this close. Either:
- Push the report period forward to include it (and adjust your counted cash to include the new sale), or
- Leave it for tomorrow's report, mark the cash from the late sale on tomorrow's opening sheet as carry-over.
Pick a policy and stick to it — switching between approaches makes the books harder to audit.
Best practices
- Close every day. Skipping a day means tracking variance across two days, which is much harder.
- Print and file the report even on quiet days — the paper trail is what protects you in an audit or a dispute.
- Don't share user accounts. Each cashier on their own WordPress user means the cashier filter actually works for per-person reports.
- Cross-check weekly against WooCommerce Analytics (
WP Admin → WooCommerce → Analytics) — same data, different presentation. If the totals diverge it usually means a parked order was completed late or a refund was processed in WP Admin rather than the POS. - Keep the float consistent. Constantly changing the opening float invites arithmetic errors.
Related Documentation
- Reports — the screen reference (filters, columns, summary panel)
- Orders — order lookup, refunds, parked orders
- Discounts — how discounts and coupons affect the report totals
- Refunds — issuing refunds during the shift
- Multi-Store Setup — per-store reconciliation