Native CRM-to-accounting connectors sync customers and finished invoices. They almost never sync the middle, which is where quotes, line items, discounts, change orders, partial billing, and tax treatment live. So a human retypes that middle by hand, and the two systems drift apart. The fix is one quote record that survives from proposal through invoice, owned by you, with reconciliation reporting that proves both systems agree. That's a real build, and it isn't the right answer for every company. If your deals are simple and your volume is low, keep rekeying and spend the money elsewhere.
Why your quote to cash process breaks between CRM and accounting, and how to close the gap
/ 18 min read
TL;DR
Key takeaways
- The expensive part of the handoff is the detail under the total, not the total itself.
- Most connectors are built for bookkeeping hygiene, not for sales operations.
- Change orders, retainers, and partial billing are where packaged integrations quit.
- A single quote object with a stable ID solves more problems than a dozen field mappings.
- If you can't produce a reconciliation report on demand, you don't have an integration, you have a hope.
- Leave the general ledger, tax filing, and bank feeds in the accounting package. Build the sales-side logic.
On this page
- The handoff that actually breaks
- What gets lost in the retype
- Why native connectors stop short
- One quote object that survives the whole trip
- Change orders, partial billing, and retainers
- Reconciliation reporting that replaces the monthly spreadsheet
- What to build and what to leave alone
- Limitations and honest caveats
- How to start without waiting months
- Read this next
- Frequently asked questions
Your CRM says the deal closed. Your accounting system has no idea. Somewhere in between, a person opens two browser tabs and retypes a number.
That gap is where quote to cash breaks. Quote to cash just means everything from the price you give a customer to the money landing in your bank. Most mid-sized companies have a good CRM and a good accounting package. What they don't have is a trustworthy road between them.
This article walks through why that road keeps washing out, what the off-the-shelf connectors actually sync, and what a custom bridge needs to handle before it earns its keep.
The handoff that actually breaks
Picture the moment. A sales rep marks an opportunity Closed Won. The CRM fires a notification. Maybe a deal room in Slack lights up. Everyone feels good.
Now the real work starts. Someone in operations or finance opens the signed proposal, usually a PDF. They open the accounting system. They create or find the customer. They create an invoice or a sales order. They retype the line items. They apply the discount. They pick the tax code. They set the payment terms. They save.
That retype takes five to fifteen minutes on a simple deal. On a complex one with twenty line items and mixed tax treatment, it takes an hour, and it gets done wrong often enough that someone has to check it.
The retype is also the moment the two systems stop being connected. Before the retype, the deal lives in the CRM. After it, the invoice lives in accounting. Nothing links them except a human's memory and maybe a job number typed into a description field.
That missing link is what you feel later. Sales asks why a customer is on credit hold. Finance asks why a deal was discounted. Nobody can answer quickly, because answering means opening two systems and matching records by name and date.
Ask your operations lead one question. "If I give you an invoice number, how long does it take you to show me the original quote it came from?" If the answer is more than ten seconds, the handoff is manual no matter what your integration vendor claims.
What gets lost in the retype
The total survives. Almost nothing else does.
Line item detail is the first casualty. A proposal might list eight distinct deliverables. The invoice ends up as one line that says "Professional services per agreement." The customer accepts it. Your margin reporting dies, because you can no longer see which service lines made money.
Discounts go next. In the CRM the rep recorded a fifteen percent discount on two of the eight items. In accounting, the person retyping just entered the net price. Now your discount reporting is empty. You cannot answer whether discounting is growing, which reps grant the most, or whether discounted deals churn faster.
Terms drift. The contract says net 45 with a deposit. The accounting system defaults to net 30 and nobody changed it. Collections chases a customer who isn't late. That call costs you more goodwill than the invoice is worth.
Tax treatment is the one that gets expensive. Service work in one county, product shipped to another, a customer with a resale certificate on file. The CRM has none of that logic. The person retyping guesses based on what they did last time. Multiply that by a few hundred invoices and you have an audit problem instead of a data problem.
And then there's the link itself. No deal ID on the invoice. No invoice ID on the deal. Your CRM pipeline report and your accounting revenue report will never agree, and nobody will be able to explain the difference in under a day.
Why native connectors stop short
The built-in integrations aren't bad. They're just scoped for a different job. Most of them were designed to keep a bookkeeper from maintaining two customer lists. They sync contacts, companies, products, and finished invoices with payment status. That's genuinely useful.
What they don't do is model the middle of your process. Here's why.
A connector has to work for every customer of the platform. That means it only maps fields that exist in both systems with the same meaning. Customer name maps cleanly. Invoice total maps cleanly. Your three-tier approval rule for discounts over twenty percent does not, because the accounting package has no concept of it.
Connectors also tend to be one-directional in practice even when they claim two-way sync. The accounting system is treated as the system of record for money. The CRM is treated as the system of record for relationships. The moment a credit memo is issued in accounting, the CRM usually learns nothing about it.
The other limit is timing. Many connectors fire on invoice creation. Your process has four states before that. Quote sent, quote approved internally, contract signed, work authorized. None of those states exist in the accounting system, so the connector has nothing to sync them to.
So teams fill the gap the only way they can. A spreadsheet. A shared drive of signed PDFs. A naming convention that one person understands. That works until that person takes a vacation.
Watch out for integration platforms sold per task or per operation. A single closed deal can trigger a dozen operations once you handle line items, taxes, and updates. At a few thousand deals a year, the bill climbs fast, and you still own the logic maintenance. Price the tier you'll be on in year three, not year one.
One quote object that survives the whole trip
The fix that changes everything is boring. Build one record for the quote, give it a permanent ID, and make every downstream document point back to it.
That record holds the line items with quantities, unit prices, cost basis, discount, tax code, and the deliverable each line maps to. It holds the terms. It holds the approval history, including who approved the discount and when. It holds a version number, because quotes change.
When the deal closes, nothing gets retyped. The system creates the sales order from the quote. It creates the invoice from the order. Each one carries the quote ID forward. Each line item on the invoice knows which quote line it came from.
Suddenly a pile of questions become one click. Which quote produced this invoice. Which invoice lines are unbilled. Which deliverables have been delivered but not invoiced. What the margin was at quote time versus at invoice time.
The important design decision is where that object lives. Not in the CRM, because CRMs model opportunities, and an opportunity is a forecast, not a contract. Not in the accounting system, because accounting models transactions after they're agreed. The quote object belongs in a small system you own that sits between them.
That system doesn't need to be big. In practice it's a database, a web app your team logs into, and two sets of API calls. One pulls the deal from the CRM. One pushes the invoice into accounting. The business logic that nobody else can model lives in the middle, where you can change it without filing a support ticket.
One more thing to get right. The quote object should store the raw inputs, not just the computed totals. Store the discount percentage and the pre-discount price, not only the net. Store the tax rule you applied and why. Six months from now, when someone asks how a number was produced, you'll have the answer in the record instead of in someone's memory.
Change orders, partial billing, and retainers
This is where packaged integrations give up, and it's worth being specific about why.
Change orders
A change order is a second agreement attached to the first. The customer adds scope. The price goes up. Sometimes the timeline changes and the payment schedule changes with it.
Connectors handle this badly because they treat an invoice as a one-time creation event. If the deal changes after the invoice exists, the connector either does nothing or overwrites. Overwriting an invoice that's already been sent is worse than doing nothing.
What you want is versioning. The original quote stays frozen. The change order is a new version that references the original. Reporting can show you contract value as originally sold and as currently contracted. Finance can see which revenue came from the original scope and which came from expansion, which is a number most companies cannot produce today.
Partial billing
Progress billing, milestone billing, percentage of completion. Call it what you like, it means one quote producing many invoices over time.
Here's where the math gets uncomfortable. If you bill thirty percent at kickoff, forty percent at delivery, and thirty percent at acceptance, each invoice has to know how much of each quote line it consumed. Otherwise you cannot answer the one question finance always asks. How much of this contract is left to bill?
The accounting system can tell you what you invoiced. It cannot tell you what you were supposed to invoice. The quote object can, because it holds the schedule and tracks consumption against it.
Retainers and recurring work
Retainers break connectors in a different way. The money comes in before the work. That's a liability on your balance sheet, not revenue, until the hours are delivered.
Most CRM-to-accounting integrations have no concept of drawdown. They'll create a recurring invoice and stop there. Your team then tracks the remaining balance in a spreadsheet, and the spreadsheet disagrees with accounting within two months.
A proper bridge tracks the retainer balance as hours or dollars consumed, posts the drawdown entry to accounting on a schedule, and shows the client-facing balance in one place. That single feature pays for a lot of build on its own, because it removes the monthly argument about how much is left.
Before you design anything, pull your last fifty invoices and sort them into buckets. Straight one-shot invoices, change orders, partial bills, retainer draws, credits. The bucket sizes tell you what to build first. Most teams are shocked at how few of their invoices are the simple case the connector was built for.
Reconciliation reporting that replaces the monthly spreadsheet
An integration you can't audit isn't finished. You need a report that proves the two systems agree, and you need it to run on demand.
The report is simpler than people expect. For every quote in a closed state, show the contracted value, the amount invoiced, the amount collected, and the variance. Flag anything where the numbers don't tie. Flag anything where an invoice exists in accounting with no matching quote. Flag anything where a quote is marked won and has been sitting unbilled past a threshold you set.
That last flag is the one that finds money. Unbilled closed work is more common than most owners want to believe. It happens quietly, usually because the person responsible for billing was waiting on a confirmation that never came.
Build the report as a live screen, not a monthly export. The value isn't in the numbers, it's in the fact that anyone can check at any time. When reconciliation is a two-day month-end ritual, nobody does it mid-month, and errors sit for weeks.
One practical detail from doing this work. Reconciliation breaks most often on rounding and on partial payments applied across multiple invoices. Decide your rounding rule once, write it down, and apply it in one place in the code. Decide how to attribute a lump-sum customer payment across open invoices before you write the matching logic, not after.
Keep a log of every message sent to the accounting system, including the payload and the response. When a number is wrong six weeks later, that log turns a two-day investigation into a two-minute one. It also makes your accountant much friendlier at year end.
What to build and what to leave alone
The temptation after reading all this is to build an accounting system. Don't. The accounting package is good at what it does, and replacing it buys you audit risk and tax headaches for no gain.
Leave these alone. The general ledger and chart of accounts. Bank feeds and reconciliation of actual cash. Sales tax calculation and filing. Payroll. Financial statements. Accounts payable. Anything your CPA touches.
Build the parts that are specific to how you sell and deliver. Quote construction with your pricing rules. Approval workflow. The quote-to-order-to-invoice chain with IDs intact. Change order versioning. Billing schedules and retainer drawdown. The reconciliation view. Customer-facing documents that look like your company instead of like your accounting vendor.
The same logic applies to the CRM. Keep it for pipeline, activity, and relationship history. Sales reps already live there and retraining them is a cost with no return. Your bridge should read from the CRM and write status back to it, so a rep sees billing state on the deal without leaving the tool they use all day.
Running the arithmetic with your own numbers
Here's the shape of the math. Fill in your real figures, because borrowed numbers are worthless.
Count the invoices you produce in a year. Multiply by the average minutes spent creating them from scratch, including the checking. Multiply by the loaded hourly cost of the person doing it. That's the labor line.
Then add the error cost. Count the credit memos you issued last year that came from a billing mistake. Add the average days your invoices sit unsent after work is done, and multiply by your cost of capital. Add what you pay annually for connector subscriptions or integration platform tasks.
Now compare that total against the one-time cost of a build you own outright, spread over five years, plus hosting and occasional changes. For a company doing two hundred invoices a year with simple terms, the manual process usually wins. For a company doing two thousand with change orders and retainers, it usually doesn't, and the gap widens every year the subscription renews with a price increase.
Run the numbers honestly. If rekeying wins, rekey. We'd rather tell you that than sell you something that doesn't pay for itself.
Limitations and honest caveats
A custom bridge solves real problems. It also comes with costs people underestimate, so here they are plainly.
You own the maintenance. When your CRM vendor changes its API or your accounting platform deprecates an endpoint, something has to be updated. That's a real obligation, not a theoretical one. Budget for it the way you budget for insurance.
Accounting APIs have limits you cannot design around. Most impose rate limits, meaning you can only send so many requests per minute. Some do not expose every field the web interface shows. A few will not let you modify an invoice once it's been sent or a period has closed. Your design has to respect those rules, and sometimes that means a workflow is slightly clunkier than the whiteboard version.
Historical data is work. Migrating years of past quotes into a new object is a scripted export with cleanup, not a copy and paste. Many companies choose to start fresh on a date and leave history where it is, which is a reasonable call. Just make that decision deliberately, because "we'll migrate it later" usually means never.
Multi-currency and multi-entity add real complexity. If you invoice from three legal entities in two currencies, the reconciliation logic roughly doubles. That's doable and we've seen it done well, but it's not a small add-on.
And if your deals genuinely are simple, this is overkill. One line item, standard terms, no change orders, a hundred invoices a year. The native connector plus a careful person will serve you fine. Spend the money on something with a bigger return.
The most common mistake is automating a broken process. If three people disagree about when a deal is billable, software will just make the disagreement faster. Settle the rules on paper first. A two-hour meeting with sales, delivery, and finance in the same room is the highest return work in this whole project.
How to start without waiting months
Start narrow. Pick the single most common invoice type you produce and automate that path end to end. Nothing else. Get it running for a month with real deals and real money.
While that runs, build the reconciliation view. It will immediately show you what the automated path got wrong, and it will keep showing you after everyone stops paying attention.
Then add the next invoice type. Change orders usually come second because they're frequent. Retainer drawdown often comes third because it's high value but lower volume.
Keep a manual override from day one. Someone will need to create an invoice outside the normal path, and if the system won't let them, they'll create it directly in accounting and your reconciliation will break. Give them the escape hatch and log it when they use it.
Measure two things. Minutes from Closed Won to invoice sent. Number of reconciliation exceptions open at any time. If both go down, the build is working. If they don't, stop adding features and find out why.
If you want help mapping your own handoff before anyone writes code, you can book a free strategy session with our team in Clearwater. We'll walk your current process, show you where it leaks, and tell you honestly if a build is worth it for your volume.
Read this next
If you want the broader picture of how these middle-layer systems get designed, read our piece on building the integration layer between your CRM and the rest of your operations. It covers the architecture decisions in more detail.
Related articles
Frequently asked questions
Why does my accounting system not reflect the deal my sales rep just closed in the CRM?
Native connectors between CRM and accounting systems only sync customers and finished invoices. They skip the middle stages like quotes, line items, discounts, and change orders. When a deal closes in your CRM, someone still needs to manually retype the details into accounting. That gap between systems is where quote to cash breaks.
What information gets lost when someone retypes a quote into the accounting system?
Line item detail disappears first. A proposal with eight deliverables becomes one line saying professional services. Discounts vanish into net pricing. Payment terms revert to defaults. Tax treatment gets guessed instead of tracked. The original quote and resulting invoice never link to each other. You lose margin reporting, discount insights, and audit trail.
Can I use Zapier or Make to connect my CRM and accounting system instead?
Off-the-shelf connectors like Zapier and Make work for bookkeeping basics but cannot model your sales process. They only map fields that exist in both systems with identical meanings. Your approval rules, change orders, and partial billing logic don't exist in accounting, so the connector has nowhere to send them.
What should I do if I have complex deals with change orders and partial billing?
Packaged integrations quit on change orders, retainers, and partial billing. You need a custom integration that maintains one quote record with a stable ID surviving from proposal through invoice. This lets you track the full journey and generate reconciliation reports proving both systems agree on what happened.
How do I know if my current integration actually works?
Ask your operations lead this question: if you give them an invoice number, can they show you the original quote in under ten seconds? If the answer is no, your handoff is still manual no matter what your integration vendor claims. You need reconciliation reporting on demand to confirm systems are actually connected.
Is a custom quote to cash bridge worth building for my company?
If your deals are simple and volume is low, keep rekeying and invest the money elsewhere. The real build makes sense when you handle multiple line items, frequent discounts, change orders, or mixed tax treatment. You need enough complexity and volume for the integration to pay for itself through reduced errors and better reporting.
Should the quote live in my CRM or accounting system?
The quote should live in one system you own, with a stable ID that travels through to the invoice. This single quote object that survives the whole trip solves more problems than mapping individual fields. Leave general ledger, tax filing, and bank feeds in accounting. Build your sales-side logic around that one connected record.
Share this article
Keep reading
Can a custom system connect to QuickBooks Online?
Yes, and the connection is well-trodden ground. Here's what the QuickBooks Online API actually supports, where it hits real limits, and how to decide if a custom integration beats an off-the-shelf connector.
If this is your situation
Talk it through on a call
Thirty minutes over video with the person who would run the build. You talk, we ask questions, and you leave with a plain read on whether custom software makes sense for you. If the answer is that your current tool is fine and badly configured, you will hear that.
Who wrote this

David Verneuille
Founder, Black Badger Software Solutions
David Verneuille founded Black Badger after 18 years as a project manager and years implementing Smartsheet, monday.com, Wrike and Zoho for clients. He now builds custom systems that clients own outright, which is why the writing here is specific about where each platform fits and where it stops fitting.
Drafted with AI assistance, then checked, edited, and approved by a person before publishing. The facts, opinions, and recommendations are ours.
