Convert veterinary clinic bank, card batch and CareCredit CSV exports into a .qbo Web Connect file QuickBooks Desktop and Online accept. Built for vet books.
No account needed for your first conversions. We never store your bank login.
Short answer: a veterinary practice's end of day report almost never equals the money that lands in the bank, because one invoice gets paid on four or five different rails that settle on different days and arrive net of different fees. The fix is to stop trying to make the practice management system talk to QuickBooks and instead post the bank side from the bank's own record. Export the CSV from your bank, card processor, CareCredit and Scratch, convert each one to a .qbo Web Connect file, and import that. QuickBooks then holds exactly what cleared, which is the only figure a reconciliation can be built on.
Every veterinary practice runs two sets of books whether it means to or not. The practice management system holds the clinical and production record: what was done, who did it, what it was billed at. The bank holds the settlement record: what actually arrived, when, and after what was taken out. Those two things are related, but they are not the same number, and on any given day they will not match. A practice that treats the day sheet as if it were a deposit slip spends every month end chasing a difference that was never an error in the first place.
This is a different problem from the one a human medical clinic has. A medical practice is mostly waiting on insurance, so its reconciliation puzzle is remittance advice. A veterinary practice is a retail business with a pharmacy attached that also happens to do surgery. Clients pay at the counter, in cash, on cards, on third party financing, sometimes on a house account, and increasingly through pet insurance that reimburses the owner rather than the clinic. The revenue is immediate, the settlement is fragmented, and the fees come out before the money ever reaches the operating account.
Here is what a single $1,200 surgery actually does to your bank statement when the client pays $200 in cash, puts $500 on a CareCredit card and $500 on a personal Visa.
Swipe to see the full table
| Payment rail | When it reaches the bank | What comes out first | What QuickBooks sees |
|---|---|---|---|
| Cash at the counter | Whenever someone takes the drawer to the bank, often days later and combined with other days | Nothing, but the deposit is a mixed total | One lump deposit that matches no single invoice |
| Credit and debit card batch | Next business day in most cases, batched by settlement cutoff rather than by calendar day | Merchant discount and per transaction fees, either netted daily or billed monthly depending on the processor | A batch total, not the individual card payments |
| CareCredit | Within two business days of the transaction, as an electronic deposit | CareCredit's processing fee, which varies by the promotional financing option used. There are no provider annual or monthly fees | A deposit smaller than the amount charged, with no invoice reference |
| Scratch payment plans | The practice is funded rather than carrying the client balance itself | A flat provider fee on the plan. No setup, monthly, hardware or software fees | A deposit that does not tie to the day it was earned |
| House account or payment plan run in house | Whenever the client pays, which may be months later | Nothing, but the revenue was recognized earlier | A payment with no matching charge in the period |
Built for the CSV and Excel exports US banks and cards actually send, checked before it exports.
The converter adds up the transactions it parsed and matches that to your file total before you export, so nothing is silently dropped.
Valid OFX 1.02 with QuickBooks Web Connect headers. Online and Desktop import it as a standard bank feed.
Date, description, and amount are detected for you, so you skip QuickBooks' strict 3-column and 4-column CSV layout.
Bulk upload for catch-up and cleanup work. Each file gets its own reconciliation check and its own exports.
Mixed date formats, currency symbols, and stray commas that break a raw CSV import are cleaned up before the .qbo is built.
One conversion, three files: the .qbo for QuickBooks, an XLSX to review, and a CSV for everything else.
Three steps. No column-mapping wizard.
Drag in a CSV, XLS, or XLSX export from your bank, credit card, or accounting tool. Any column order is fine.
Every transaction is parsed and checked against your file total. You see the rows before exporting.
Download the .qbo and import it as a Web Connect bank feed. Excel and CSV are in the same download.
The specifics that decide whether the import is clean. If your case is not here, message us in chat.
Five rails, five settlement clocks, and only one of them deposits the gross amount. That is why the day sheet and the bank feed disagree, and it is also why the answer is not a better sync between them. AVImark, Cornerstone, ezyVet, Shepherd, Digitail, IDEXX Neo and Covetrus were all built to run a hospital, not to keep a general ledger. They record production by doctor, by service code, by patient. QuickBooks records money by account, by date, by payee. The two systems use different vocabularies, and when a connector tries to translate between them it has to guess.
The guesses fail in predictable ways. One system bundles a whole visit into a single invoice line while another splits it into a dozen; the same charge shows up twice because it was imported and also entered by hand; a service never arrives in QuickBooks at all because its code had no mapping. None of that is a bug you can fix in QuickBooks, and none of it gets better by syncing harder. The practices that close cleanly do the opposite: they post revenue in summary from the practice management system, post the bank side from the bank, and let a clearing account absorb the timing difference between them.
A clearing account, sometimes called an undeposited funds account or a merchant clearing account, is a holding pen. Revenue goes in when it is earned. Deposits come out when the money lands. The balance left sitting in it is, by definition, money you have earned but not yet received, which for a veterinary practice is card batches in transit, CareCredit funding on its two day clock, and Scratch plan funding.
Run one clearing account per rail, not one for everything. A single combined clearing account will balance to zero eventually, but when it does not, you have no way to tell whether the problem is Tuesday's card batch or a CareCredit fee you did not book. Separate accounts for the card processor, for CareCredit and for Scratch turn a vague variance into a specific one you can look up.
The fee is the part practices most often miss. When CareCredit deposits net of its processing fee, booking the deposit at face value quietly understates both revenue and expense. The correct entry books the gross amount against the clearing account and the fee as a separate expense line, so the deposit reconciles and your merchant fee expense is real. Do that consistently and the annual fee number becomes something you can negotiate with, rather than a rounding difference nobody ever quantified.
This is the practical wall. QuickBooks Desktop cannot import a bank or credit card CSV in any version or year, including Pro, Premier and Enterprise. The Import Excel and CSV toolkit that Intuit publishes imports customers, vendors, items and the chart of accounts. It does not import transactions. The only banking import path Desktop has is a .qbo Web Connect file loaded through Banking, then Bank Feeds, then Import Web Connect File.
So when your bank hands you a CSV, or your processor exports a settlement report as a spreadsheet, or CareCredit gives you a payment file, none of it can go into Desktop as it stands. Converting the CSV to a .qbo is what makes it importable. That is the entire job this tool does: it reads the date, description and amount columns whatever order they are in, fixes mixed date formats and stray currency symbols, gets the signs right for a bank account or a credit card account, checks the parsed total against your file total, and writes a valid OFX 1.02 file with the Web Connect headers QuickBooks expects.
QuickBooks Online will take a CSV, but on tight terms: three columns meaning date, description and amount, or four columns meaning date, description, credit and debit, in English, one consistent date format, no more than 350 KB and no more than 1,000 rows per upload. A year of a busy clinic's checking account blows through the row cap and gets split into files you then have to track. A .qbo import has no row limit and no date limit, which is why catch up work goes faster through the converter even on Online.
Because the day sheet reports what was billed and collected inside the practice on that calendar day, while the bank reports what settled, which happens on a different schedule and after fees. Cash sits in a drawer until someone banks it, card batches close on a processor cutoff rather than at closing time, and CareCredit funds within two business days net of its fee. The two numbers are not supposed to match daily. They should reconcile over a period through a clearing account.
Record the client's payment at full value against the invoice, sending it to a CareCredit clearing account rather than straight to the bank. When the deposit arrives, usually within two business days, it will be smaller than the amount charged because CareCredit deducts its processing fee before depositing. Book that deposit against the clearing account and post the difference to a merchant fee expense account. The clearing account then returns to zero and your books show both the gross revenue and the true cost of offering financing.
Yes, and for the same reason. Scratch funds the practice rather than leaving you to carry the client's balance, and it charges a flat provider fee on the plan with no setup, monthly, hardware or software fees. Because the funding does not arrive on the day the service was performed, a dedicated clearing account is what keeps the timing gap visible. Lumping Scratch in with card settlements makes any variance impossible to trace back to a rail.
Import a summary. Line by line syncing from a clinical system into a general ledger is where most veterinary bookkeeping breaks, because the two systems categorize differently and duplicates and dropped codes are common. A daily or weekly summary journal entry from the practice management system, carrying revenue by category, discounts, and payments by rail, gives you everything a financial statement needs without importing thousands of clinical line items your accountant will never look at.
Treat it as inventory with a real cost of goods sold, which is what separates a veterinary practice from a human medical clinic. Pharmacy, prescription diets, retail food and supplies all carry a cost, and if the summary entry posts everything to one service revenue account, your gross margin is fiction. Split the revenue summary into professional services, pharmacy, food and retail at minimum, and post distributor bills from Covetrus, MWI or Patterson to a matching cost of goods sold account so margin by category is visible.
No, and you should not try. Controlled substance logs are a regulatory record with their own required content and retention rules, and they live in your practice management system or a dedicated log, not in an accounting file. QuickBooks holds the financial side of those purchases, meaning the distributor bill and the inventory value. Keep the compliance record where your regulator expects to find it.
Keep them out. There is no accounting reason to carry individual client or patient detail into the general ledger, and doing it makes the file bigger, slower and more sensitive without adding any information a financial statement uses. Post revenue at the summary level and deposits at the batch level. If you need to look up who paid for what, that answer lives in the practice management system, which is the system of record for it.
As far back as your bank will export. This is the part that catches practices doing a cleanup or changing accountants: a bank feed pulls roughly 90 days on a first connect, some banks up to about 24 months, and it will not go back and fill the gap it missed. File imports have no date limit at all. If you need three years of history to rebuild a set of books, download the CSVs, convert them, and import them; the feed will never do it for you.
Not if the date ranges do not overlap. Every transaction in a converted .qbo carries a unique identifier, the field QuickBooks checks against activity it has already recorded, so a repeated import is normally recognized and skipped. The real risk is importing a period the feed has already delivered, where the same transaction can arrive under two different identifiers. Decide which method owns which date range and stay on that line.
Because a credit card is a liability, so the sign convention inverts compared with a checking account. Purchases increase what you owe and payments reduce it, which means a card file loaded into a bank type account posts every line the wrong way. Set the account up in QuickBooks as a Credit Card account and convert the file as a card export, and the signs come out correct. Practices with a fuel card or a distributor card often hit this first, because those cards frequently have no QuickBooks feed at all.
Yes. Multi location groups usually run one operating account per hospital, or one account with class tracking by site, and either way the import is per file. Convert each location's export and import it into its own account or class. Class tracking is available in every edition of QuickBooks Desktop and starts at Plus on QuickBooks Online, which is worth checking before you plan a location by location P&L on a lower Online tier.
Post the revenue summary from the practice management system for the period, split by service, pharmacy, food and retail. Import the bank and card activity from converted .qbo files so every deposit and fee is in the register at its real date. Clear each rail's clearing account to zero, booking the merchant and provider fees as expense. Reconcile the operating account and each card to the statement. Anything still sitting in a clearing account at that point is either genuinely in transit or a fee you have not booked, and both are answerable in minutes rather than being a mystery variance.
Upload a CSV or Excel export, get a QuickBooks-ready .qbo back in seconds. No card to try it.
Related guides: see the CSV to QBO converter for medical and dental practices for the insurance remittance side, CSV to QuickBooks Desktop for the Desktop import path, credit card CSV to QuickBooks for card sign handling, the CSV to QBO converter for accountants if you keep books for several practices, the best CSV to QBO converter comparison to see what each tool actually outputs, the undeposited funds cleanup guide for clearing accounts that never got cleared, and the QuickBooks month end close checklist for the wider close.
For the solo bookkeeper running a monthly close in QuickBooks.
USD / month
billed $288 yearly
For a firm or finance team converting across many clients and currencies.
USD / month
billed $888 yearly
For multi-bookkeeper firms managing many client books at scale.
USD / month
billed $2,988 yearly