Every set of books carries a single number for what the business owes its suppliers. Accounts payable reconciliation is the work of proving that number is true. It is one of the least glamorous jobs in accounting and one of the few that reliably finds money, because a payables balance that has drifted is not a rounding problem. It is usually an invoice nobody entered, a credit note nobody applied, or a bill that got paid twice.
This guide is written for small businesses closing their own books and for bookkeeping and accounting firms doing it across many client files. The mechanics are the same in both cases and only the ownership changes. Where the work differs between QuickBooks Online and Xero, we say how, because the two systems disagree about something fundamental here and it catches people out. See the 90 second demo if you would rather look at the intake half first.
There is one distinction to settle before anything else, because most confusion about this topic comes from collapsing it. The phrase "accounts payable reconciliation" is used for two different checks. One is internal: does the detailed list of unpaid bills add up to the payables figure in the general ledger? The other is external: does your record of what you owe a supplier match what that supplier says you owe them? The first proves your books are internally consistent. The second proves they are complete. A business can pass the first every month for a year and still be missing invoices, which is why the second exists.
Worth saying plainly, too, that this is not the same job as reconciling a bank account, even though the word is identical and the instinct carried over from bank reconciliation causes trouble here. A bank reconciliation has a single authoritative outside record that arrives on a schedule, covers every transaction, and is almost never wrong. Payables has several partial outside records that arrive when they feel like it, cover one supplier each, and are wrong often enough that a difference is a question rather than a verdict. Anyone approaching payables expecting the bank reconciliation experience finds the process frustrating for reasons that have nothing to do with their competence.
The closer cousin is invoice reconciliation, and the two are easy to confuse because both can involve a supplier statement. The difference is the level the check works at. Invoice reconciliation works bill by bill: is this invoice real, recorded once at the right amount, and matched to the payment that settled it. Accounts payable reconciliation works on the balance: does the single payables figure on the balance sheet hold up against the detail behind it and against what each supplier says it is owed. A file can pass a bill by bill check and still carry a payables total that is wrong, because an invoice that was never entered is not among the bills you checked. If the check you need is the bill by bill one, our guide to invoice reconciliation walks through it.
Table of contents
- What it is: the check in one paragraph, and why it is not a bank reconciliation
- The two checks: one proves your books are consistent, the other proves they are complete
- Step by step: the subledger against the control account, in the order that makes differences findable
- Vendor statements: what a supplier's statement of account actually is, and what it is not
- Statement reconciliation: the invoice nobody entered, and why only this check finds it
- QuickBooks and Xero: the reports to run in each, and the draft bill difference that changes the answer
- The discrepancies: the six causes behind almost every difference, and how to clear each
- Where automation helps: what software can genuinely take off you, and what it cannot
- How often: picking a cadence that matches your volume
- The bottom line: the short version if you only do one of the two checks
Read it end to end, or jump to the check you need.
What is accounts payable reconciliation?
Accounts payable reconciliation is the check that confirms what your books say you owe matches an independent record of the same thing. It has two halves: agreeing the accounts payable subledger to the accounts payable control account in the general ledger, and agreeing your record of each supplier's balance to the statement that supplier sends you. Both halves answer one question. Is the payables figure on the balance sheet real?
It is normally done at month end, as part of closing the period.
The reason it matters is that accounts payable is the one balance most likely to be understated, and understatement is the direction that hurts. An overstated payables balance is embarrassing. An understated one means the business thinks it has more cash available than it does, budgets accordingly, and then meets the missing invoices later as a surprise. For a business running close to its cash limits, that surprise is the difference between a normal month and a scramble.
It also matters because payables is where the errors are hardest to see. Cash gets reconciled against a bank statement, and a bank statement arrives whether you ask for it or not. Payables has no equivalent that arrives automatically. Supplier statements come irregularly, in different formats, from some suppliers and not others, and the ones that do arrive tend to land in an inbox alongside everything else and get read as marketing. The absence of a forcing function is the whole problem. Nothing makes you notice that a supplier you use twice a year has been waiting three months for payment on an invoice that was never entered.
The two reconciliations hiding behind one phrase
Take the internal check first, because it is the one that runs every month regardless. Your accounting system keeps a subledger for accounts payable: a list of every bill you have entered and not yet paid, with a balance per supplier. It also keeps a control account in the general ledger, a single line on the balance sheet, that is supposed to carry the total of that list. In QuickBooks Online and Xero these are generated from the same underlying transactions, so they usually agree. The point of checking is the cases where they do not.
They come apart when something touches the control account without going through a bill. That is the textbook cause, and it is what most guides on this subject describe: someone posts a journal straight to payables to make a set of accounts look right, the adjustment lands in the general ledger, and the subledger knows nothing about it.
It is worth being precise here, because on QuickBooks Online and Xero most of those textbook causes cannot actually happen. QuickBooks Online will not let you save a journal line against accounts payable without naming a vendor, and once a vendor is named the entry shows up in the A/P Aging Detail as well as in the general ledger, so both sides move together. Xero goes further and blocks manual journals to accounts payable entirely, because it is a locked system account; Xero's own reasoning is that a locked account always balances, which removes the need to reconcile it by hand. Deleting a bill in QuickBooks Online removes it from the aging report and the ledger in the same movement, and in Xero an approved bill cannot be deleted at all, only voided. The rogue journal, the stray opening balance and the deleted bill are real causes in systems with a genuinely separate subledger. They are mostly not available to you in these two.
What does break the tie in QuickBooks Online and Xero is usually a reporting difference rather than a rogue entry, and it is worth checking those first. The commonest by a distance is comparing reports on two different bases: an aged payables report is always prepared on an accrual basis, so setting it against a balance sheet run on a cash basis produces a difference that is not a difference at all. Next come mismatched dates, an aged payables report run as at today against a balance sheet run as at the period end. Then foreign currency, where the two reports can translate the same balance at different rates. Work down that list before you go hunting for a misposted journal, because on these platforms the reporting setting is the likely answer and the misposted journal is frequently not even possible.
The external check is a different exercise with a different purpose. Here you take one supplier's statement of account and compare it, line by line, against what your ledger holds for that supplier. You are not testing arithmetic. You are testing coverage. The statement is a record of the same relationship kept by the other party, and every invoice on it that is missing from your books is a real debt you did not know about.
Both checks are worth running, and it is worth being clear about which one you are doing, because they fail for unrelated reasons and the fix for one is not the fix for the other. A subledger that will not agree to the control account is an internal accounting problem, solved by finding the entry that bypassed the subledger. A ledger that will not agree to a supplier statement is an intake problem, solved by finding the document that never arrived where it needed to go. The first is an afternoon with a general ledger detail report. The second is the reason this job has a reputation.
Most guides cover the internal check and stop, which is a shame, because for a small business the external check is where the money is. On QuickBooks Online and Xero the internal check mostly confirms something the system already enforces, and where it does not, it usually resolves into a reporting setting rather than a missing entry. The external check finds unrecorded liabilities, and it finds them in almost every file that has never had one done.
How to reconcile accounts payable, step by step
What follows is the sequence for a monthly close. Run it in order. The steps are cheap individually and the order is what keeps the work from sprawling.
1. Fix the period, and start from a balance you already agreed
Pick your cut off date and do not move it. Everything below is a statement about the payables balance at one specific moment, and a reconciliation performed against a moving target is not a reconciliation.
Then find last period's closing balance and confirm it is the balance you signed off on. This sounds like bureaucracy and it is the single biggest time saver in the process. If you begin from an opening figure that was never agreed, every difference you find afterwards is ambiguous: you cannot tell whether it arose this month or has been sitting there since March. A reconciliation that starts from an agreed opening balance only has to explain one month of movement, which is a job of minutes. One that starts from an unknown has to explain the entire history of the account.
If the opening balance was never agreed, say so, and treat the first reconciliation as a clean up rather than a monthly check. It will take considerably longer than every subsequent one. That is normal, it happens once, and doing it properly is what makes the following eleven months quick. Firms taking on a new client file should expect this and price for it rather than discovering it halfway through a first close.
2. Pull the three records
You need three things, and it is worth gathering all three before you start comparing any of them.
The first is the accounts payable aging report, which is the subledger in readable form: every unpaid bill, grouped by supplier, aged by how overdue it is. In QuickBooks Online this is the Accounts Payable Aging Detail report. In Xero it is the Aged Payables Detail report. Take it as at your cut off date, not as at today, or it will include bills entered after the period closed and nothing will tie.
The second is the general ledger detail for the accounts payable account over the period. This is the record of what actually hit the control account, and it is where you will find anything that reached payables without being a bill.
The third is the set of supplier statements for the accounts that matter. You will not have one for every supplier and you do not need one. Rank your suppliers by balance and by activity, and get statements for the ones at the top.
Two things about the dates on these, because getting them wrong wastes an hour before you notice. All three records have to describe the same moment. An aging report run today and a general ledger detail run to the end of last month will not tie, and the difference will look like a real finding for as long as it takes you to spot what happened. And when you request statements, ask for them as at your period end rather than as at the date of asking, and ask for open item format if the supplier can produce it. Suppliers who send statements on a fixed monthly cycle will usually send whatever their system generates, so if that date does not line up with your close, you reconcile to their date and carry the days in between as timing differences.
That last point deserves emphasis because it is where this job usually dies. Attempting statements for two hundred suppliers is how a reconciliation becomes a project that never finishes. In most files, twenty suppliers carry ninety percent of the payables balance. Reconciling those twenty properly every month, and the long tail once or twice a year, catches nearly everything worth catching at a fraction of the effort. A check that actually gets done monthly beats a thorough one that gets abandoned in week two.
3. Agree the subledger to the control account
Compare the total of the aged payables report to the balance of the accounts payable control account at the same date. Ideally they match and this step takes a minute.
When they do not, check the two reports before you check the books. Confirm both are on an accrual basis, and confirm both are run to the same date. That accounts for most differences on QuickBooks Online and Xero, for the reasons set out earlier. If the settings agree and the difference survives, work through the general ledger detail for the payables account and pick out anything that is not a bill or a bill payment: a bill payment that was never applied to a bill, a supplier credit sitting unallocated, a transaction dated outside the period you are reporting, or a foreign currency balance being revalued.
A short list of shapes worth recognising, because each points somewhere specific. A difference equal to one transaction on the report means one entry to find, and it is the easiest case. A difference equal to twice a transaction usually means a sign error rather than a missing entry, so look for something posted as a debit that should have been a credit. A difference that appeared this month on an account that tied last month narrows the search to this period's activity, which is the argument for step one all over again. A difference that has been constant for several months is the one to take seriously, because a recurring difference that survives the report checks points at something structural, often a balance carried in from a previous system at conversion. It will not resolve itself: at some point somebody has to find it, document what it was, and clear it deliberately so that future reconciliations start from a clean figure.
Two practical notes. First, check the sign of the difference before you start hunting, because it halves the search: a control account higher than the subledger means something was added to the ledger without a bill behind it, and lower means the opposite. Second, if the difference exactly equals a single round number, look for a journal entry of that amount before you look at anything else. Somebody almost certainly made the balance say what they wanted it to say, and the entry will be sitting in the general ledger detail with a description that explains it.
Once the two agree, you know the detail behind your payables figure is complete and internally consistent. You do not yet know whether the detail itself is right. That is the next step, and it is a different kind of work.
4. Work the differences, one at a time
Now take a supplier statement and put it beside your ledger for that supplier. Tick off everything that appears on both sides at the same amount. What remains, in either column, is your list of differences, and each one has a cause that you name before you decide what to do about it.
Resist the urge to post an adjustment to make the balance agree. An adjusting entry that is not tied to an explanation is not a reconciliation, it is a cover up, and it guarantees that next month's reconciliation starts from a balance nobody agreed. Every difference gets a reason. Some of those reasons resolve into a correcting entry, some resolve into a query to the supplier, and some resolve into nothing at all because they are simply timing.
Keep the working. Whatever form it takes, a spreadsheet or a report saved out of the accounting system, the reconciliation for a period should be findable afterwards along with the documents behind any entries it produced. This is partly so the next person can see what was decided, and partly because a reconciliation you cannot produce is one you will be asked to do again. Our guide to the month-end close process covers where this sits in the wider close and what else belongs in the same folder.
What is a vendor statement?
A vendor statement, also called a statement of account or a supplier statement, is a list the supplier sends you of every invoice, credit note and payment they have recorded on your account, with the balance they believe you owe. It is the payables equivalent of a bank statement: a record of the same transactions kept by somebody else. That is exactly what makes it valuable, because your own ledger cannot tell you about an invoice that never reached you, and the statement can.
Some suppliers send one every month without being asked, and others will only send one on request.
Statements come in two shapes and it matters which one you have. An open item statement lists only what the supplier considers unpaid. A balance forward statement lists the period's activity on top of a brought forward figure. Open item statements are far easier to reconcile, because every line on them should correspond to something outstanding in your ledger. With a balance forward statement you are partly reconciling against a number whose composition you cannot see, and the first job is often to ask for an open item version instead.
Two cautions about the balance itself. A supplier's statement is not authoritative, it is just another party's records, and suppliers make mistakes in both directions. Treat a difference as a question rather than a correction. And read the date carefully, because a statement generated on the fifth of the month reflects the supplier's position on the fifth, not at your month end, so payments in flight across that boundary will legitimately appear on one side only.
Vendor statement reconciliation, and what it catches that the ledger check cannot
Vendor statement reconciliation, sometimes called supplier statement reconciliation, is the external check run properly and at scale. It is the part of this job that most small businesses have never done, and the first time it is done on an established file it almost always finds something.
What it finds, specifically, is liabilities that exist in the world but not in your books. Consider how an invoice goes missing. It is emailed to somebody who left the company, or to a personal inbox rather than a shared one. It arrives as an attachment on a thread about something else. It is sent to the owner while the bookkeeper does the entering, and the owner reads it, thinks "that looks right," and moves on. None of these are unusual and none of them leave a trace in the accounting system, because the defining feature of a missing invoice is that there is nothing in your records to notice the absence of.
Your internal reconciliation cannot find these. The subledger agrees to the control account perfectly, because both are built from the bills that were entered, and a bill that was never entered is invisible to both. Only an outside record closes that gap.
The practical consequences of those missing invoices are worth spelling out. You are late paying a supplier who is not chasing you yet, which quietly costs goodwill and sometimes credit terms. Your payables balance understates what you owe, so your cash position is better on paper than in fact. Your expenses are understated in the period the invoice belonged to, which distorts margin. And if the invoice surfaces after the period is closed, the correction lands in the wrong month, which is the sort of thing that turns a two day close into a week.
There is also a duplicate payment angle, running the other way. The same conditions that let an invoice go unentered, several routes in and no single destination, let one get entered twice: once from the email and once from the paper copy or the chased reminder. A supplier statement showing one invoice where your ledger holds two is how that gets caught, usually before the second payment goes out and always before it is written off.
Reconciling accounts payable in QuickBooks Online and Xero
Both platforms give you the reports this job needs, under different names, and both have one behaviour that materially affects the result.
In QuickBooks Online you want the Accounts Payable Aging Detail report for the subledger, and the Transaction Detail by Account report filtered to the Accounts Payable account for the control account side. The behaviour to know: a QuickBooks bill has no draft state. When a bill is created it posts open in accounts payable immediately, so anything entered is in the subledger and in the control account from the moment it exists. That makes the internal check straightforward and it means there is no category of half entered bill sitting outside your payables figure.
In Xero the equivalents are the Aged Payables Detail report and the Account Transactions report for the accounts payable account. Xero calls a supplier a contact, and its accounts carry codes as well as names, so a statement reconciliation will involve matching on contact name rather than on anything like a supplier number. The behaviour to know is the important one: in Xero a bill is created as a draft and does not hit accounts payable until it is approved. A draft bill is not in your aged payables report and not in your control account.
That difference deserves a moment, because it creates a category of problem that does not exist in QuickBooks Online. A Xero file can hold a stack of draft bills representing real obligations, correctly entered, coded and waiting, none of which appear in the payables balance. Your internal reconciliation will tie perfectly. Your supplier statement reconciliation will show differences that look like missing invoices and are not. Before concluding anything from a Xero statement reconciliation, check both queues that sit outside payables, not just one: Draft and Awaiting Approval. A bill only reaches the payables balance when it is approved and moves to Awaiting Payment, so a bill that has been submitted and is waiting on somebody's approval is just as invisible to your aged payables report as one nobody has finished typing. If approval is a step somebody does weekly and the close happens on the first of the month, some of those drafts belong in the period you are closing.
The mirror of this is a genuine advantage: because approval is an explicit act in Xero, the draft list is a visible queue of work. In QuickBooks Online the equivalent uncertainty is not in the system at all, it is in whether every invoice that arrived has been entered, and no report will tell you that. Both of our walkthroughs cover where a bill lands and in what state, for QuickBooks Online and for Xero.
The discrepancies you will actually find, and what each one means
After a few reconciliations the differences stop feeling like puzzles, because nearly all of them fall into a small number of categories. Naming the category is most of the diagnosis.
Timing. The invoice is dated the twenty eighth and reached you on the third. It is on the supplier's statement and not in your ledger, and both records are correct. This is the most common difference by volume and it needs no entry, just a note that it is timing. The same applies to payments in flight: you have recorded it going out, they have not yet recorded it arriving.
An invoice you never received. On their statement, absent from your ledger, and not explained by timing. This is the finding the whole exercise exists for. Get a copy, check it is genuinely yours, and enter it in the period it belongs to if that period is still open.
A duplicate. One invoice on their statement, two in your ledger, often at slightly different dates. Void one, and check whether either was paid before you do.
A credit note missing or unapplied. These look alike on a statement and behave differently, so separate them. If the supplier has issued a credit and your ledger does not have it at all, your balance is genuinely overstated and entering it corrects the total. If you have recorded the credit but never allocated it to the invoice it relates to, your total is already right: an unallocated credit sits in payables as a negative and has reduced the balance since the day you entered it. What is wrong in that case is the composition, because the invoice still shows as fully outstanding and the credit sits on its own. Applying it moves the aging around without moving the balance.
A payment applied to the wrong invoice. The totals agree and the composition does not, so the aging is wrong even though the balance is right. This one is easy to wave through and worth fixing, because it is what makes an aged payables report untrustworthy.
A genuine dispute. Wrong price, wrong quantity, goods never arrived. An invoice discrepancy in this sense is not a reconciliation error at all, it is a commercial disagreement that the reconciliation surfaced. Flag it, do not adjust it, and get it in front of whoever owns the supplier relationship.
The reason the taxonomy is useful is that the six do not call for the same response. An invoice you never received and a duplicate both need a correcting entry, and so does a credit note that never reached your ledger. A credit note you have recorded but not allocated, and a payment sitting against the wrong invoice, both rearrange the aging without moving the balance by a penny. A genuine dispute needs a conversation and no entry at all. Timing needs nothing but a note. Sorting differences by category before touching anything is what keeps a reconciliation from turning into a series of adjustments nobody can explain later. Checking an invoice against what was ordered and received before it is entered prevents a good share of these from arising at all, which is the subject of our guide to the accounts payable process.
Where automation actually helps, and where it does not
Be sceptical of the claim that reconciliation can be automated end to end, because the useful and the useless parts of this job are easy to confuse.
Matching is genuinely automatable. Comparing two lists of transactions and proposing which lines correspond is exactly the kind of work software is good at, and any tool that ingests a supplier statement and ticks off what agrees will save real time on a long statement. What it produces is a shorter list of exceptions.
Deciding what an exception means is not automatable, and that is where the time actually goes. Whether a missing invoice is genuinely missing or arrived last Tuesday and sits unentered in somebody's inbox, whether a price difference is a supplier error or a renegotiation nobody wrote down, whether a credit was promised: these are judgements that need context the software does not hold.
This is worth holding onto when you read claims about reconciliation tooling, because the two halves get quoted as one number. A tool that matches ninety five percent of lines automatically has genuinely done the mechanical part, and the five percent it could not match is the part that was always going to take the time. The saving is real and it is a saving on the easy half. Ask any tool you are evaluating what it does with an exception, and treat "flags it for review" as the honest answer it is rather than as a gap. There is no version of this where software decides whether your supplier billed you correctly.
Which points at the more useful intervention. Most reconciliation exceptions are not created at reconciliation time. They are created weeks earlier, when a document arrived somewhere that was not the books. An invoice sitting in an inbox becomes a statement difference at month end, a query to the supplier, and twenty minutes of somebody's time, and none of that would have happened if the document had reached the ledger when it arrived. The cheapest reconciliation is the one with a short exception list, and exception lists get short at the intake end, not at the reconciliation end.
For a firm, this is the difference between a month end spent searching for documents across client inboxes and one spent reviewing a list. The hours are the same hours either way. They are just billed for different things, and only one of them is work the client values. Estimate your own time saved if you want a number for your own volume.
Where DocStreamAI fits
DocStreamAI does not reconcile accounts payable, and this is a good place to be plain about that. It has no view of a supplier statement and does not tick lists off against each other. What it does is attack the reason exception lists get long.
It watches Gmail and Outlook inboxes, along with a forwarding address belonging to your organisation, for supplier invoices and receipts. It reads the fields off each document, matches the supplier to one already in your file, codes the lines, resolves the payment terms into a due date, and creates the bill in QuickBooks Online or Xero, either automatically or after you review it on a dashboard. The practical effect on this job is that "the invoice arrived but is not in the books" stops being the default state of an invoice.
Two specifics are relevant to reconciliation. Duplicate bills are checked against what is already in your accounting platform before anything is inserted, which removes one of the six discrepancy categories above at the point it would otherwise be created. And documents that should not post on their own are held for a person: a duplicate of one already processed, or an invoice with no due date, which is usually a purchase order or a quote that should not become a bill at all.
What it does not do is equally relevant. It does not raise purchase orders, it does not make payments, and it does not decide what a difference means. Reconciliation stays yours. For the wider picture of which tools cover which part of this territory, our guide to invoice automation software compares the categories, and getting invoices out of Gmail and into QuickBooks covers the intake path in detail.
How often should you reconcile accounts payable?
Monthly, as part of the close, is right for most small businesses, and it is the cadence QuickBooks Online and Xero are built around. The subledger to control account check is quick enough to run every month without debate. Supplier statement reconciliation is heavier, so a common and sensible split is monthly for the suppliers carrying most of the balance and quarterly for the long tail.
Anything less frequent than quarterly turns a small difference into an investigation.
Two things change the answer. Volume raises the frequency: a business paying hundreds of invoices a month accumulates differences faster and should not let a quarter pass on its main suppliers. And anything unusual justifies an off cycle check, because a supplier chasing an invoice you cannot find, a payment run that failed partway, or a file that has just been migrated between systems are all reasons to look now rather than at month end.
The one cadence that does not work is annually, at year end, under time pressure, on differences that are eleven months old. That is how a reconciliation becomes a forensic exercise, and it is the version of this job that gives it its reputation.
The honest bottom line
Accounts payable reconciliation is two checks with one name. The internal one, subledger against control account, is quick, should be monthly, and mostly finds journal entries that bypassed the subledger. The external one, your ledger against supplier statements, is slower, is the one most small businesses have never done, and is where the unrecorded liabilities are.
If you do nothing else after reading this, get statements from your ten largest suppliers and compare them against your ledger. It is an afternoon, and on a file that has never had it done, the odds are good that you find something that matters.
And if the exception list comes back long, treat that as information about intake rather than about reconciliation. A reconciliation that takes a long time is usually reporting on documents that arrived weeks ago and never made it into the books. Fix that end and this job gets shorter every month, which is a better outcome than getting faster at explaining the same differences. Book a demo on your own documents if you want to see that intake step against your own invoices.

