A US veterinary practice's monthly close runs through two wholesaler vendors: Patterson Veterinary and Covetrus. Covetrus carries the legacy Henry Schein Animal Health book after the February 2019 merger that created the company, and the MWI Animal Health book after Covetrus absorbed MWI from Cencora in late 2024. Both legacy names still surface on transitional paperwork.
Every line on every one of those invoices needs to land in one of the AAHA/VMG Chart of Accounts cost-of-goods-sold accounts: Pharmacy COGS, OTC COGS, Prescription Diet COGS, Lab Supplies, Surgical Supplies, Dental Supplies, Anesthesia Supplies, Imaging Supplies, Boarding Supplies, and Grooming Supplies, with Office Supplies routed to expense rather than COGS. The mechanism that gets each SKU to the right account is a mapping table the bookkeeper builds once and reuses each month, and the destination in QuickBooks is a single category-split bill posted against the wholesaler vendor, with location classes added for groups running more than one hospital.
The AAHA/VMG Chart of Accounts is free to download from AVMA, AAHA, VMG, and the state VMAs, and it is endorsed by AVMA, VHMA, and VetPartners. No member paywall, no proprietary license. That is the structural standard the rest of this workflow runs against.
The split is not bookkeeping for its own sake. AAHA/VMG publishes benchmark COGS ratios by department, and practice owners and the management consultants who advise them read those ratios at month-end. Pharmacy COGS as a percentage of Pharmacy Revenue, OTC COGS as a percentage of OTC Revenue, Prescription Diet COGS against Prescription Diet Revenue, and the same pairing for surgical, dental, and the rest of the operational departments. A single Pharmacy Supplies bucket on the QuickBooks side hides the signal the practice owner is trying to read. The whole point of getting the veterinary wholesaler invoice to AAHA chart of accounts coding right is to make those ratios computable from the GL without re-cutting them by hand.
Three reader profiles work this monthly-close stack. The external ProAdvisor runs QuickBooks Online files for somewhere between five and thirty vet-practice clients and receives a fresh stack of Patterson and Covetrus invoices from each client every month. The in-house practice manager handles AP for one or two hospitals and reviews the COGS ratios with the owner at month-end. The DVM-owner of a solo or small-group practice still does the books personally, posts the bills in QBO, and watches the same ratios. All three share the same vet practice monthly close AP workflow, and all three benefit from the same mapping-driven approach.
What follows is the operator walkthrough, vendor-neutral across the post-2019 and post-2024 wholesaler landscape, anchored on the reusable SKU-to-COA mapping table the practice owns and the bookkeeper reuses, and honest at the end about the volume point where the spreadsheet workflow stops paying for itself.
The AAHA/VMG COGS Structure Wholesaler Invoices Populate
The structural feature of the AAHA/VMG chart that makes a SKU-to-COA mapping possible is the pairing between revenue and COGS accounts. Today's Veterinary Business' walk-through of the paired AAHA/VMG account structure notes that the 2017 AAHA/VMG Companion Animal Chart of Accounts pairs roughly 35 revenue accounts with their cost-of-goods-sold counterparts, so each income category (pharmacy, OTC, prescription diet, surgical, dental, and so on) has a matching COGS account that wholesaler invoice lines need to land in. The pairing is what lets a practice owner read department-level margin from the standard P&L: every dollar of Pharmacy Revenue sits across the page from a Pharmacy COGS dollar, and the wholesaler invoice is where the COGS dollar enters the ledger.
The COGS accounts that Patterson and Covetrus invoices actually populate are a manageable list. The bookkeeper does not need to internalize the full 70-account pairing to do this workflow well; they need the wholesaler-invoice side, named with enough specificity to drive a mapping.
- Pharmacy COGS is the destination for prescription pharmaceuticals: injectables, oral tablets and capsules, topical preparations, ophthalmics, ear medications, and Schedule II through V controlled substances at the COGS level. This is typically the largest single line on a wholesaler invoice for a small-animal practice.
- OTC COGS is for over-the-counter retail product the practice sells from the front counter: flea and tick preventatives sold without prescription, joint supplements, ear cleaners, dental chews, and the rest of the wellness-aisle catalog.
- Prescription Diet COGS is its own account because the AAHA/VMG chart pairs it with Prescription Diet Revenue. Hill's Prescription Diet, Royal Canin Veterinary Diet, and Purina Pro Plan Veterinary Diets all land here.
- Lab Supplies COGS is for in-house lab consumables: reagents, cuvettes, slides, microhaematocrit tubes, urine dipsticks. This is the supplies side of the lab the practice runs inside the building, distinct from the outside reference-lab statements that arrive separately from IDEXX or Antech and post to Lab Fees revenue and the matching outside-lab COGS.
- Surgical Supplies COGS covers sutures, surgical drapes, gowns, scrub, scalpel blades, surgical gloves, and disposables consumed per procedure.
- Dental Supplies COGS covers burs, polishing paste, ultrasonic scaler tips, fluoride, and dental disposables.
- Anesthesia Supplies COGS is for sevoflurane and isoflurane, oxygen, breathing circuits, endotracheal tubes, and induction agents.
- Imaging Supplies COGS captures digital radiography sensor consumables, processing chemistry for the few practices still on analog, and imaging contrast.
- Boarding Supplies COGS is bedding, kennel cleaning chemicals, and boarding-specific consumables.
- Grooming Supplies COGS is shampoos, conditioners, ear cleaners used in the bath, and grooming-specific consumables.
Office Supplies is the account most often miscoded on wholesaler invoices. Patterson and Covetrus both stock practice office consumables (printer paper, pens, file folders, cleaning supplies for non-clinical areas), and those lines belong in an Office Supplies expense account, not in any COGS account. Coding them to a COGS account inflates COGS and distorts the department-level ratios the practice tracks.
The Prescription Diet versus OTC distinction is the one to be most careful with, because the same Patterson or Covetrus invoice can carry both. A bag of Hill's Prescription Diet k/d for a CKD cat lands in Prescription Diet COGS; a package of retail-grade joint supplement from the wellness aisle lands in OTC COGS. The wholesaler does not flag the difference for the bookkeeper. Getting Pharmacy COGS right depends on this prescription-diet-versus-OTC separation holding across every invoice, because the practice tracks the revenue side as two separate lines and the owner reads each ratio independently.
This is the list of accounts the mapping table targets. It is not the full AAHA/VMG chart, which extends through revenue, expense, payroll, and balance-sheet accounts. AVMA, AAHA, VMG, and the state VMAs host the full chart for direct download, and any practice setting up books from scratch should pull the source rather than reconstruct it from a list like this one.
The SKU-to-COA Mapping Table You Build Once and Reuse Every Month
The mapping table is what turns the workflow from a recurring chore into a capital asset. Every wholesaler SKU the practice has ever ordered eventually appears in the table with its COA destination already decided. This month's Patterson invoice is matched against last month's mapping, the known SKUs return coded rows automatically, and the bookkeeper only has to deal with the genuinely new product codes. By month twelve the mapping has converged on the practice's working catalog and net-new SKUs become unusual rather than routine. This is the difference between the vet practice SKU to COA mapping done well and the version most practices stumble into, where every invoice is recoded from memory at month-end.
The column structure is short. Every cell earns its place.
- SKU: the wholesaler's catalog number exactly as it appears on the invoice. Patterson item numbers and Covetrus item numbers live in the same column; the wholesaler is captured elsewhere, so the SKU column stays clean.
- Description: the product name as printed on the invoice. Useful for human review when a SKU comes up that the bookkeeper does not immediately recognize.
- COA Account: the AAHA/VMG COGS account from the prior section. Pharmacy COGS, OTC COGS, Prescription Diet COGS, Lab Supplies, Surgical Supplies, Dental Supplies, Anesthesia Supplies, Imaging Supplies, Boarding Supplies, Grooming Supplies, or Office Supplies for the non-COGS lines.
- Department: Wellness, Sick, Surgery, Dentistry, Boarding, or Grooming, for practices that report department-level COGS one layer below the COA account. Practices that do not split this far leave the column blank or omit it.
- Notes: free-text. Useful flags include controlled-substance schedule, manufacturer rebate participation, recurring backorder, and any SKU the bookkeeper wants to revisit at year-end.
Three lookup mechanics serve the three reader profiles cleanly. None of them is the single right answer; the right answer depends on the bookkeeper's Excel version and the practice's invoice volume.
VLOOKUP is the universal option. The bookkeeper pulls this month's Patterson invoice into a workbook with the mapping table on a second sheet and writes =VLOOKUP(invoice_SKU, mapping_table, COA_column_index, FALSE) against each line. It works in every Excel version the bookkeeper is likely to have, including the older QBO-paired installations that turn up at small practices. It is brittle to column reordering in the mapping table and to extra whitespace in SKU strings; protect the mapping sheet and trim the SKU column once when the table is set up.
XLOOKUP is the better tool for any bookkeeper on Excel 2021 or Microsoft 365. The formula reads =XLOOKUP(invoice_SKU, mapping_SKU_column, mapping_COA_column) and returns the COA account directly. Column reordering in the mapping table does not break the lookup, the formula reads more naturally on review, and the unknown-SKU handling is easier (=XLOOKUP(invoice_SKU, mapping_SKU_column, mapping_COA_column, "REVIEW") flags exceptions in a single cell).
Power Query merge is the right tool once the bookkeeper is running this monthly across more than a handful of practices or once a single practice's invoice volume crosses into hundreds of lines per month. Set up a Power Query that imports the wholesaler invoice export, imports the mapping table, joins them on SKU, and returns a coded invoice ready for the QBO bill posting. Refresh on open. The mapping table is the only file the bookkeeper edits between months; the query is rebuilt only if the wholesaler changes its export format.
The per-new-SKU workflow is where the mapping earns its asset framing. The lookup returns the COA account for every known SKU and a flag (blank cell, error, or REVIEW string depending on the formula choice) for every unknown SKU. The bookkeeper filters the flagged rows, codes each unknown SKU once, and appends those rows to the mapping table with their COA account. Next month the same SKUs return coded automatically. Net-new SKUs in a stable practice are typically a small fraction of the month's line items after the first six months of mapping, which is what makes the workflow viable as a recurring veterinary pharmacy invoice categorization process rather than a recurring crisis.
A few practical notes for the bookkeeper running this across multiple clients. The mapping table belongs to the practice, not to the bookkeeper. The SKU-to-COA decisions reflect how the practice categorizes its own revenue, and a change of bookkeeper should not require rebuilding the mapping from scratch. Version the file (date-stamped backups, or git for the technically inclined). Review the unknown-SKU pile early in the close, not at the end, so an unfamiliar product code does not become a last-day blocker. And recognize that the same pattern recurs across other supplier-heavy verticals — the same SKU-to-account mapping pattern applied to US lumberyard supplier invoices uses different account names but the identical asset logic, which is a useful reference if the bookkeeper also handles construction or trades clients.
Patterson Veterinary Invoices via Patterson Connect
Patterson Veterinary is the distribution arm of Patterson Companies and one of the two current full-line US companion-animal distributors. Practices order through Patterson Connect, the operator portal, and receive printed invoices in shipments and electronic invoices through the portal. Nothing on a Patterson invoice carries an MWI Animal Health line item; MWI moved to Covetrus in the 2024 acquisition, so a SKU labelled MWI on this month's paperwork came from the Covetrus side, not the Patterson side.
The bookkeeper has three ways to get line items off Patterson invoices, ordered by extraction effort and per-line fidelity.
The PDF invoice is always available, attached to the shipment confirmation email and downloadable from Patterson Connect. Line items are present in a structured table, but a fresh extraction is needed for every invoice unless the bookkeeper has automation in the pipeline. This is the workhorse path for most low-to-mid-volume practices.
The Patterson Connect order-history export produces a CSV-style file with line-item data already in columns. Availability and exact field shape vary by account configuration, so it is worth asking the practice's Patterson rep what the practice's account exposes before designing the workflow around it. When the export is clean, it skips the per-invoice extraction step entirely.
The printed packing slip is the last resort. It travels with the shipment, is usually less complete than the invoice itself, and is missing the financial fields the bookkeeper needs (extended price, tax, terms). Useful for shipment receipt confirmation, not for AP-side coding.
A Patterson invoice carries the columns a bookkeeper needs to extract Patterson Vet invoice line items into the mapping table: invoice number (header block), invoice date (header), due date (calculated from terms, typically net 30 for established accounts), vendor name (Patterson Veterinary), Patterson item number (the SKU column the mapping table joins on), line-item description, quantity ordered, unit price, extended price, line-item tax where charged, and the invoice total in the footer. The PO number, if the practice issues POs, sits in the header block next to the invoice metadata.
A handful of friction points come up often enough to plan for.
Patterson ships out of multiple distribution centers, so a single PO frequently produces multiple shipments and multiple invoices. The bookkeeper sees several smaller invoices against one practice-side PO, each with its own invoice number, date, and partial line-item set. The mapping table handles them identically; the cadence of QBO bill entry just becomes per-invoice rather than per-PO.
Backordered lines do not stay on the original invoice. When an out-of-stock item ships a week later, it appears as a separate invoice with its own number, even though the practice may think of it as part of the original order. Reconcile by PO if the practice is tracking that way; otherwise treat each invoice as standalone.
Freight and handling lines need to land somewhere sensible. They are not COGS lines; most practices code them to a Freight & Delivery expense account, or roll them into the COGS account that dominates the invoice if the practice's CPA has directed that treatment. Either is defensible; consistency across months matters more than which one the practice chooses.
The occasional manufacturer drop-ship line, where Patterson invoices for a product that shipped directly from Zoetis, Boehringer Ingelheim, IDEXX-Pharma, or another manufacturer, is still a Patterson invoice for bookkeeping purposes. The vendor on the QBO bill is Patterson Veterinary; the line codes to the appropriate COGS account through the same mapping. The drop-ship distinction matters only if the practice is tracking manufacturer rebates separately, in which case a Notes column entry on the mapping row flags the SKU for the rebate workflow covered later.
What feeds the mapping table from a Patterson invoice is straightforward: the SKU column and the description column from the line-item table. The mapping returns the COA account against each SKU; quantity, unit price, and extended price come along for the QBO bill posting unchanged. The full invoice extraction takes the bookkeeper from PDF to a coded spreadsheet ready for the category-split bill, with new SKUs flagged for the few minutes of categorization work that grows the mapping table for next month.
Covetrus Invoices and the Legacy Henry Schein Animal Health and MWI Lines
Covetrus is the second of the two current full-line US companion-animal distributors. The vendor history matters for AP setup because bookkeepers still see two legacy names on invoices and statements: Henry Schein Animal Health became Covetrus on 8 February 2019 (that was the merger that created Covetrus, not a later acquisition), and Covetrus then absorbed MWI Animal Health from Cencora in late 2024 for $1.25 billion. So a vet-practice bookkeeper today may still see HSAH or MWI on transitional paperwork or on legacy statements, but both are Covetrus brands now. Post them to a single Covetrus vendor record in QuickBooks unless the practice has a specific reason to keep them separate (a few practices keep MWI as its own vendor for historical year-over-year comparison; that is a CPA-directed exception, not the default).
The bookkeeper has three documents to work from on the Covetrus side.
The PDF invoice is the primary AP document. Line items are present in a structured table; the extraction approach is the same as Patterson, just against a different layout.
The Covetrus order-history CSV export is available through Covetrus.com for accounts configured for it. When clean, it gives the bookkeeper structured line items without per-invoice PDF extraction. Worth asking the Covetrus rep what the account exposes.
The consolidated monthly statement lists every invoice from the period and is the right document for statement reconciliation at month-end. It is not the right document for first-pass categorization, because the line-item detail per invoice is summarised; the underlying invoices are what feed the mapping table.
Covetrus ships consolidated more aggressively than Patterson does. A single order frequently ships from multiple distribution centers and produces multiple invoices against one PO, and some practices are configured for a consolidated monthly invoice that aggregates the period's shipments into a single document. Both patterns feed the same mapping table; the consolidated pattern only changes the QBO posting cadence (one Covetrus bill at month-end rather than several across the month). Practices on the consolidated-monthly pattern need to make sure their close timing aligns with when Covetrus generates the consolidated document, because a consolidated invoice that arrives on the 5th of the following month is awkward to back-date into the prior period without breaking the close.
The columns a bookkeeper needs when they extract Covetrus invoice CSV files or PDFs into the mapping workflow: invoice number, invoice date, due date, vendor (Covetrus, regardless of whether legacy HSAH or MWI lines appear on the document), Covetrus item number, manufacturer item number (Covetrus typically prints both alongside each other, which is useful for cross-referencing rebate programs), description, quantity, unit price, extended price, line-item tax where charged, shipping and handling, total. The manufacturer item number is the value rebate programs key off, so practices that participate in manufacturer rebates should keep that column even if the mapping table only joins on the Covetrus SKU.
The legacy vendor question comes up most often during the first few months of a new bookkeeping engagement. When a Henry Schein Animal Health invoice extraction shows up alongside Covetrus-branded items on the same invoice or in the same period, or when an MWI Animal Health invoice to spreadsheet workflow surfaces older paperwork from before the 2024 consolidation, the rule is the same: the line codes to the appropriate AAHA/VMG COGS account through the same mapping table. The COA destination is determined by what the product is (Pharmacy, OTC, Prescription Diet, and so on), not by which legacy brand name appears on the document. SKUs migrate forward unchanged across the brand transitions; the bookkeeper only consolidates the vendor record in QuickBooks.
One last note on Covetrus's own published guidance. Covetrus publishes a QuickBooks integration document that walks the revenue side of the PMS-to-QBO bridge: how to pull daily deposits and revenue categories from the practice management software into the QBO P&L. That document is useful for the revenue side of the close. It does not cover the AP side from the wholesaler invoice, which is the workflow this article walks. The two sides are separate workstreams that meet only at the month-end ratio review.
Posting the Category-Split Bill in QuickBooks Online and Desktop
The mapping-driven output gives the bookkeeper a coded version of the wholesaler invoice with each line carrying its AAHA/VMG COGS account. The QuickBooks step is mechanical from there: collapse the line-level coding to category subtotals, enter a single bill against the wholesaler vendor, and attach the original PDF.
The QBO Bill header carries the vendor (Patterson Veterinary or Covetrus, never the legacy HSAH or MWI names as the vendor of record), the bill date set to the wholesaler's invoice date, the due date calculated from the vendor's payment terms (typically net 30 for established vet-practice accounts, occasionally net 45 with a small discount for payment inside 10 days), and the AP account. The Bill no. field gets the wholesaler's invoice number exactly as printed, including any prefix; that is the field the bookkeeper later uses to match payments and reconcile the consolidated monthly statement.
The category-split body is one row per AAHA/VMG COGS account that has a non-zero allocation from this invoice. The Category column gets the COA account (Pharmacy COGS, OTC COGS, Prescription Diet COGS, Lab Supplies, Surgical Supplies, Dental Supplies, Anesthesia Supplies, Imaging Supplies, Boarding Supplies, Grooming Supplies, or Office Supplies for the non-COGS lines). The Amount column gets the sum of extended prices for the coded rows that land in that account. The Description or Memo column gets a short trace back to the source: "Pharmacy COGS, coded rows from Patterson INV-12345" or "Prescription Diet COGS, coded rows from Covetrus INV-67890". Class or Location gets the hospital identifier for multi-site practices. The bill total reconciles to the wholesaler invoice total to the cent; if it does not, the gap is almost always a freight line or a tax line that was not allocated, and the right move is to fix the mapping rather than force a balancing entry.
The Category-versus-Item decision is the single most consequential setting on a vet wholesaler invoice QuickBooks Online posting. Vet practices almost always use Category mode, not Item mode, because the practice management system (Cornerstone, AVImark, ezyVet, DVMAX, Vetspire, Shepherd) holds the inventory record and QBO does not need to. Item mode is appropriate only when the practice is using QBO as its inventory system, which is unusual in this vertical and creates a duplicate inventory ledger that drifts from the PIMS within a few months. Bookkeepers who default to Item mode out of habit from non-veterinary clients build themselves a recurring reconciliation burden. Category mode posts the AAHA/VMG COGS allocation directly without touching the inventory subledger.
QuickBooks Desktop posts the same structure with a different UI. The Enter Bills screen exposes an Expenses tab where the category-split lines live, with the same Category, Amount, Memo, and Class columns. The logical posting is identical; the keyboard rhythm differs. Both editions support a class or location dimension for multi-site allocation, which is the mechanism the multi-location section covers.
The choreography across the close is worth being explicit about. The bookkeeper finishes the mapping-driven extraction in Excel or Power Query and ends with a coded spreadsheet. A pivot or a SUMIF collapses the coded rows to category subtotals per AAHA/VMG account. Those subtotals become the rows on the QBO bill. Either the bookkeeper enters the bill by hand (typical at low volume), or imports it via the practice's preferred AP-import tool (Bill.com sync, SaasAnt, Transaction Pro). The original wholesaler PDF attaches to the bill as the audit-trail document, which matters at year-end review and at any subsequent AAHA accreditation visit.
This section deliberately does not walk the QBO setup tasks. Creating the AAHA/VMG accounts in the chart, setting up the wholesaler vendor records with payment terms, configuring class tracking, and enabling location accounting are all one-time setup work that lives outside the monthly-close workflow. The article assumes those are in place and walks the per-invoice posting only.
Credit Memos, Rebates, Vetcove, Multi-Location, and the Controlled-Substance Cross-Reference
The core workflow handles the bulk of every monthly close. The variations below are the patterns the bookkeeper hits often enough to need a clear answer for.
Credit memos. Patterson and Covetrus issue credit memos for returns, mis-picks, recall replacements, and damaged-in-transit lines. They typically arrive 30 to 60 days after the source invoice. In QBO they post as a Vendor Credit (or Credit Memo in QBD) against the same vendor record, with category-split lines that mirror the original COGS coding in reverse: a returned bag of Hill's Prescription Diet credits back to Prescription Diet COGS, not to a generic contra account. Apply the credit on the next bill payment to that vendor; the credit then nets against open bills automatically.
Manufacturer rebates. Programs from Zoetis, Boehringer Ingelheim, Elanco, Bayer, and IDEXX-Pharma flow inconsistently. Sometimes a direct check from the manufacturer, sometimes a wholesaler statement credit through Patterson or Covetrus, sometimes a contra-account adjustment at quarter-end. The honest answer is to ask the manufacturer how each specific rebate is paid before designing the bookkeeping for it. Direct checks post to the matching COGS account as a credit (a Zoetis rebate on injectable lines credits Pharmacy COGS). Statement credits post against the wholesaler vendor's open balance. Contra-account treatments are reserved for situations the practice's CPA has specifically directed, usually for rebates large enough to distort department-level COGS ratios if booked directly to the COGS line.
Vetcove and other buying-group consolidation. Some practices order through Vetcove buying group invoice consolidation or similar aggregators that compare prices across multiple wholesalers and route orders accordingly. The bookkeeper sees either the underlying Patterson and Covetrus invoices (posted normally to their respective vendor records, the way every other invoice in this article is handled) or, less commonly, an aggregator-consolidated statement. In either case the mapping table works unchanged; only the document the bookkeeper opens differs. Do not treat the aggregator as the vendor of record unless the practice has specifically structured AP that way at the CPA's direction, because doing so collapses the per-wholesaler statement reconciliation that the practice still owes Patterson and Covetrus directly.
Multi-location class tracking. Practices with multiple hospitals under one EIN use QuickBooks classes (in QBO) or location tracking to allocate a single Patterson or Covetrus invoice across hospitals. Add a Location column to the mapping table or to the per-line allocation step so the SKU mapping returns category-coded rows already tagged with their destination hospital, and let the QBO bill carry the class on each category-split line. Practices structured as separate EINs per location post separate bills per entity, which is a different posting workflow and typically requires the wholesaler to invoice each location separately (worth setting up at the Patterson Connect or Covetrus account level so the invoices arrive pre-split). For groups in the two-to-ten-hospital range, multi-location AP automation patterns for groups of two to ten hospitals cover the broader AP workflow that wholesaler invoicing sits inside.
Controlled-substance parallel posting. Schedule II through V drug lines on the same Patterson or Covetrus invoice need to feed both the Pharmacy COGS GL account (the AP side this article walks) and the practice's DEA controlled-substance log (the regulatory side). One wholesaler invoice produces two records. The financial posting follows the workflow already walked: the controlled-substance lines code to Pharmacy COGS through the same mapping table and land on the QBO bill alongside everything else. The DEA log is its own document with chain-of-custody fields, DEA-222 form cross-referencing for Schedule II, and signed receipts that the AP workflow does not touch; the 21 CFR 1304.04-compliant receiving log built from the same Patterson Vet, Covetrus, and Henry Schein invoice stack walks that regulatory side end to end. The bookkeeper running both workflows on the same invoice stack typically lifts the controlled-substance lines into a separate worksheet for the DEA log while leaving the original mapping-driven coding intact for the QBO bill.
Reference-lab statements (IDEXX and Antech). The practice also reconciles monthly statements from the outside reference labs, which is a separate document flow from a separate supplier set with a different chart-of-accounts destination (Lab Fees revenue and the matching outside-lab COGS, not the in-house Lab Supplies COGS account from earlier in this article). For the bookkeeper who handles both, reference-lab statement reconciliation for IDEXX and Antech walks that workflow end to end.
When the Spreadsheet Workflow Stops Scaling
The mapping-driven workflow walked through this article wins on fidelity at low and modest volume. The bookkeeper builds and owns the mapping table, every line item on every wholesaler invoice is visible and auditable per SKU, the AAHA/VMG coding is traceable from the QBO bill back to the source PDF, and the practice's department-level COGS ratios compute cleanly from the GL without manual recutting. At a single hospital, or a handful of clients on an external bookkeeper's roster, this is the right workflow and there is no honest case for replacing it.
What changes as volume rises is where the bookkeeper's time goes. The mapping itself is built once and converges within six to twelve months; the recurring work is extraction (getting line items off the wholesaler PDF into the structured shape the mapping consumes). Bookkeepers managing 15 or 20 vet-practice clients in QuickBooks Online typically find that extraction time, not coding time, becomes the binding constraint. The mapping table is sitting there ready to do its job; the manual PDF-to-spreadsheet step is what consumes the hours.
The generic AP-automation tools that solve this for other industries do not solve it cleanly for veterinary. Bill.com, Dext, AutoEntry, Hubdoc, and Stampli capture supplier invoices well at the header level: vendor, invoice number, date, total, terms. They typically lose the per-line-item detail, which is the entire point of the AAHA/VMG workflow. A practice that posts a Patterson invoice as a single line to a generic Pharmacy Supplies account does not need this article in the first place, and a generic AP tool serves that practice fine. A practice that needs Pharmacy COGS, OTC COGS, Prescription Diet COGS, Lab Supplies, Surgical Supplies, and Dental Supplies split out of the same invoice is the one this article was written for, and a header-only capture tool leaves the bookkeeper to redo the line-item extraction by hand.
The honest answer when extraction time is the bottleneck and per-line AAHA/VMG fidelity matters is a category-aware extraction approach that lifts SKU, description, quantity, and price off the wholesaler PDF into the structured shape the mapping table already consumes. Bookkeepers running this pattern across multiple vet-practice clients use automated wholesaler invoice extraction for the per-line lift and then run the same SKU-to-COA mapping over the structured output. The mapping is still the practice's asset; the chart of accounts is still AAHA/VMG; the QBO posting is still the category-split bill from the previous section. Only the manual PDF-to-spreadsheet step is replaced.
For the bookkeeper trying to read where they sit on this spectrum, the decision framework is concrete. Count the wholesaler invoices per month per practice. Multiply by the average line count per invoice. Compare that number against the monthly extraction-time budget the bookkeeper has for that client. Below the threshold, the mapping table and a manual PDF read are the right tools and adding automation only adds dependency. Above the threshold, the manual extraction step is silently capping how many clients the bookkeeper can take on, and an extraction layer that preserves the per-line AAHA/VMG mapping is the natural next step. A bookkeeper who handles adjacent SMB-healthcare clients alongside the vet practices may also find an adjacent SMB-healthcare bookkeeping workflow for ABA therapy invoices to Excel useful as a parallel reference for the same mapping-driven approach applied to a different document type and a different vertical chart of accounts.
Extract invoice data to Excel with natural language prompts
Upload your invoices, describe what you need in plain language, and download clean, structured spreadsheets. No templates, no complex configuration.
Related Articles
Explore adjacent guides and reference articles on this topic.
Veterinary Controlled-Substance Log from Wholesaler Invoices
Build a DEA-compliant veterinary controlled-substance receiving log from Patterson Vet, Covetrus, and Henry Schein invoices under 21 CFR 1304.04.
Extract IDEXX and Antech Lab Statements to Excel
Extract IDEXX and Antech lab statements to Excel for veterinary missed-charge review, PIMS matching, and clean month-end AP posting.
US Lumberyard Supplier Invoice to Excel for Contractors
Extract line items from Builders FirstSource, 84 Lumber, US LBM, and other US lumberyards into Excel with UOM, sales tax, and job-cost coding handled.