Back to Blog
ToolsJune 1, 2026

I Built a Tool to Fix My Least Favorite QBO Workflow

QBO's Receive Payment workflow is bookkeeping's most tedious bottleneck. I automated it. Here's what I built and why 84% of AR teams still do this manually.

There's a moment every bookkeeper knows: a remittance email lands in your inbox and you already feel the next ten minutes slipping away. The client paid fifteen invoices with one ACH transfer. The remittance is a pasted table of invoice numbers and amounts. Your job is to open QBO, find the customer, open Receive Payment, and manually check off each invoice - one checkbox at a time.

I'm a bookkeeper and a developer. When I hit a workflow I hate enough times, I build something.

TL;DR: 84% of AR teams still manually match payments to remittance data, with 19% doing it by hand every time (SSON Collaborative AR Pulse Check, 2024). I built Ground Control to automate the QBO Receive Payment step - it reads remittance emails, matches open invoices, and posts with one confirmation click. Here's what I built and what changed.

What the QBO Receive Payment Workflow Actually Requires

Let me be specific, because "matching payments" sounds simple until you're doing it for the fourteenth client of the month.

Here's the standard sequence for a single multi-invoice payment:

  1. Open the remittance email or PDF
  2. Note the total payment amount and cross-reference the deposit in your bank feed
  3. Navigate to the customer in QBO
  4. Open Receive Payment
  5. Set the date, payment method, and reference number
  6. Scan your open invoices list and check off each invoice on the remittance - in QBO's order, which often doesn't match the remittance order
  7. Verify the applied total matches the payment amount
  8. Save

For three invoices, that's two minutes. For twenty, it's eight to twelve minutes of focused attention. How many of those minutes actually require your judgment as a bookkeeper? Almost none. You're matching numbers to numbers.

Multiply this across your full client base and a few hundred invoices per month, and you've got hours per week going to a task that is fundamentally data entry with extra steps.

I've written about why QBO's architecture makes this worse than it should be - the short version is that QBO was built for single-invoice entry, not bulk remittance processing. See Why the QBO Receive Payment Workflow Is Still Broken for the full picture.

The Data Says This Isn't Just My Problem

84% of business and finance leaders report their AR teams manually match payments to remittance data at least some of the time. 19% say their teams always do it manually, with no automation at all (SSON Collaborative AR Pulse Check, 2024). These are organizations with dedicated finance staff - the problem doesn't scale away with headcount.

How AR Teams Handle Payment-to-Remittance MatchingAlways manual19%Sometimes manual65%Fully automated16%Source: SSON Collaborative AR Pulse Check via Versapay, 2024n = business and finance leaders across multiple industries

Small businesses report spending an average of 25 hours per week on manual data entry and reconciling information across apps (Intuit QuickBooks Business Solutions Survey, August 2024, n=630). Payment application is a meaningful share of where those hours go.

What surprised me most about this data wasn't the size of the problem. It was the source. QBO is supposed to be the automation layer for small business accounting. But the payment application step - the moment where a bank deposit becomes a set of closed invoices - is still almost entirely manual inside QBO. The tool that's meant to solve bookkeeping complexity has a manual gap in the middle of the AR workflow.

The APQC benchmarking data shows what that gap costs. Organizations with manual invoice processing pay between $1.77 per invoice (top performers) and $10.89 per invoice (bottom performers) - a 6x gap explained almost entirely by automation adoption (APQC Open Standards Benchmarking, 2023). That cost shows up in labor, errors, and rework.

What I Tried Before Writing Code

Before building anything, I went through the standard options.

Hiring a VA helped with volume but not accuracy. Payment posting requires enough context to catch mismatches - wrong invoice applied, credit memo overlooked, partial payment handled incorrectly. Reviewing the VA's work closely enough to trust it took almost as long as just doing it myself. Sound familiar?

CSV imports exist in QBO but are brittle. The format requirements are strict, you have to build the import file manually (which still means doing the matching yourself), and the failure modes are hard to debug.

Better checklists - I got more organized. The underlying work didn't change.

The mistake I kept making was treating this as a process problem. It's a structural problem. The workflow requires manual matching because the tool wasn't designed to automate it. No amount of process improvement changes that.

What I Built and How It Works

Ground Control is the tool. The payment posting workflow was its first feature.

Step 1 - Read the remittance. Paste in the remittance email or upload the PDF. Ground Control parses the line items: invoice numbers, amounts, partial payments, credits.

Step 2 - Match to open invoices. Ground Control pulls your open invoices from QBO via the API and runs the match. Exact matches are handled automatically. Partial payments and discrepancies surface for your review with the specific difference flagged.

Step 3 - Confirm and post. You see the proposed match before anything is applied. One click posts it to QBO's Receive Payment API. Nothing posts without your confirmation.

The tool removes data entry from the workflow - not judgment. Straightforward payments, which are most of them, move in seconds. Exceptions still come to you, with the relevant context already pulled up.

For a more detailed look at why payment matching is technically harder than it looks, see The Payment Matching Problem Nobody Talks About.

What Actually Changed

Before Ground Control, a payment covering 15-20 invoices took me 8-12 minutes of active work in QBO. After three months of daily use, the same payment takes under 2 minutes - most of that reviewing the match confirmation, not entering data.

Error rates dropped. Research by Barchard and Pace in Behavior Research Methods (2011) puts manual data entry error rates at 1-4% per field for skilled operators. At 1,000 invoices with 20 fields each, that's 200-800 field-level errors - not occasional mistakes, but a statistically predictable outcome of manual entry. Remove the data entry step and you remove the error source.

The change that surprised me was the mental overhead. Remittance emails used to create a small dread response - not stress exactly, just the awareness that a chunk of focused time was about to disappear. That's gone. It's a 90-second task now.

If you're managing payment posting across multiple QBO files, Multi-Client Payment Processing Without Losing Your Mind covers how Ground Control handles the multi-client workflow.


Does Ground Control work with any QuickBooks Online file?

Yes. It connects to your QBO firm via OAuth, so it reads your actual open invoices and posts directly to your client files. No CSV exports or manual column mapping required. The setup takes about 2 minutes per QBO realm.

What happens when a remittance doesn't match any open invoice?

Ground Control surfaces unmatched items and flags them for your review. It won't post anything it can't match with confidence unless you tell it to. You still make the call on exceptions - partial payments, write-offs, and anything with a discrepancy come to you with the context already pulled up.

Is this only useful for high invoice volumes?

It helps most when a single payment covers 10 or more invoices, but the error-prevention value applies at any volume. Manual matching has a 1-4% per-field error rate regardless of how many invoices you're processing. Automation removes the error source, not just the time.

How is this different from QBO's bank feed?

The bank feed shows you incoming deposits. Ground Control handles the application step - which invoices does this deposit cover? QBO can't answer that from the bank feed alone. The two tools solve adjacent but different problems in the AR workflow.


Building Ground Control didn't make me a faster bookkeeper in the way that rushing does. It made me more accurate, with less time and mental energy going to work that doesn't require a bookkeeper's judgment.

The QBO Receive Payment workflow was the worst fifteen minutes of my week for years. Now it isn't. That's a sufficient reason to build something.

If you want to try it, it's at groundcontrolbookkeeping.com. For context on the broader automation work, see Why I'm Building an Automation Layer for Bookkeepers.