The month-end export routine

This is the page for six o'clock on the last day of the month. It sets out a routine you can run in order, with the awkward parts named, so that nothing is discovered at nine the following morning by somebody else.

The shape of it is the same whether you post to QuickBooks Online or export a CSV.

StepWhat you are asking
1Is anything still waiting on a human to read it?
2Is anything waiting on a decision it should already have had?
3Has everything approved been sent?
4Did everything sent actually land?
5Can I answer the questions I will be asked about it?

1. Clear the review queue

Start with the invoices that need a person. Anything read below the review threshold routes to review, and so does an unmapped vendor, a quarantined file and a set of line items that refuses to add up to the stated total.

Two other piles are easy to forget, because neither is in the review queue.

  • Filtered messages. Anything judged not to be an invoice — newsletters, auto-replies, bounces, calendar invitations — is set aside before extraction, so it never costs quota. It is not deleted. Skim the list once a month and restore anything that was a real invoice with an unusual covering note.
  • Held invoices. On a paid plan, invoices beyond your allowance are processed and charged at the overage rate. On the free plan the cap is hard: extra documents are held, parsed but not extracted, and released when you upgrade or the period rolls over. Month end is when a busy month becomes visible, so check the count before you assume the queue is empty.

2. Chase the approvals that are late

The approvals queue groups by urgency: breached, due within four hours, on track. Work down from the top.

An invoice waiting on a two-approver tier shows how many signatures it has, and the person who gave the first one cannot give the second. If your controller is unreachable, an admin can decide an unaddressed approval — which is the intended safety valve, and is recorded as exactly that in the audit trail.

Two things this step will not do for you. Nothing approves itself when a deadline passes, and nothing escalates to another tier. A breached SLA is a measurement, not a mechanism. If you find yourself clearing the same breached tier every month, the tier is wrong rather than your team, and approval tiers explains how to change it.

3. Export the batch

An export takes every approved invoice not already claimed by a batch for that destination, so you do not select rows and cannot miss one that arrived while you were reading the list.

The destination matters:

  • With a ledger connected and able to accept bills, the batch posts to QuickBooks Online.
  • Without one, the batch produces a CSV, which stays downloadable from the batch.

The same document can go to a CSV batch and to a ledger batch, because those are different destinations; it cannot go twice to the same one. Pressing the button twice creates one batch — the second request waits, re-reads and finds nothing left to claim. This is more interesting than it sounds, since the alternative is a vendor being paid twice.

A batch moves through pending, processing, and then succeeded or failed.

4. Check what posted, and what did not

Open the batch. Items needing attention are sorted to the top, each with the reason and the next move.

What you seeWhat it means
A held item naming a vendor or GL codeIt is not matched to your ledger yet. The bill has nowhere to post. Match it, then retry the batch.
A held item naming the arithmeticThe line items do not add up to the invoice total, or stated tax has no tax code. Open the invoice and fix the figures.
A refusal from your ledgerQuickBooks declined the bill. The commonest is a bill it already holds with that invoice number.
failed_export on a documentThe attempt failed and the document is waiting to be sent again.

Retry once the underlying cause is fixed. A retry replays the same logical post rather than creating a second bill, so it is safe to use on an item you are unsure about.

On a paid plan, reconciliation reads back what you posted and compares it against what the ledger is actually holding — for the last thirty days, which covers a monthly close comfortably. It is the only step that verifies an export rather than trusting a success response, and it is where you find the bill an accountant deleted or edited a fortnight ago. Run it after your final export rather than before. It is read-only: nothing is written back to your ledger.

Exports that finish in a state a human should look at also send one email to the members who have that notification switched on, which is useful if your close runs past the point where anyone is still watching a screen.

5. Answer the questions from the audit trail

The questions arrive later, and they are always the same three: who approved this, what did it say before somebody changed it, and why did this one go through automatically.

The audit trail answers all three. Every state change is recorded with the actor — a person, the system or a rule — a timestamp, and before and after values. Field edits, rule matches, routing decisions, approvals with their comments, rejections with their reasons, export attempts and retries are all there. It is append-only: no role has an edit or a delete path, including yours.

You can filter it by actor, by action and by whether the change was made by a person or by automation, and export what you are looking at as a CSV to attach to a close file. The field source is recorded too, so "this GL code came from a rule" and "this GL code came from the page" are different answers rather than the same one.

What month end does not include

InletAP does not move money. There are no ACH or check rails; approved bills land in your ledger and payment happens wherever it happens today.

Nor is there a period close. Nothing locks, nothing rolls over and no journal is posted on your behalf. Your ledger owns the close; InletAP owns getting the bills into it, coded and approved, before you start.

Where to go next