The 'Simple Integration' That Sends the Same Invoice Twice
Most "simple integrations" that connect your billing tool to your CRM or job-management system will send a duplicate invoice at some point, unless someone explicitly built in duplicate prevention and a retry policy — not because the integration is badly built, but because retries, network hiccups, and reconciliation are the actual hard part of any integration, and they're invisible until they fail.
Why Do Integrations That "Just Connect Two Tools" Go Wrong?
The sales pitch for an integration is often "it just sends data from A to B." What that description leaves out: what happens when the send fails partway through? What happens if it succeeds but the confirmation response gets lost? Both of those are common, boring, everyday network events — and without explicit handling, both can result in the same invoice, job, or record getting created twice.
What Is Duplicate Prevention, and How Does It Actually Work?
Duplicate prevention means every record created by an integration carries a unique identifier tied to the original action, so if the same action gets sent twice — because of a retry, a timeout, a double-click — the receiving system recognizes the duplicate and discards it instead of creating a second record. Without this identifier, the receiving system has no way to tell "this is the same invoice sent again" from "this is a genuinely new invoice."
What Does a Retry Policy Actually Need to Specify?
| Question | Why It Matters |
|---|---|
| How many times will it retry a failed send? | Unlimited retries can create many duplicates; zero retries can silently drop real data |
| How long between retries? | Too fast can overwhelm a temporarily struggling system; too slow delays real invoices |
| What happens after all retries fail? | Should alert a person, not just silently give up |
What Is Reconciliation, and Why Does It Matter Separately From Prevention?
Even with good duplicate prevention and a sane retry policy, integrations should be periodically reconciled — a scheduled check comparing record counts and totals between the two connected systems, catching any drift before it compounds. Reconciliation is the safety net for whatever prevention and retries didn't catch, and skipping it means small discrepancies can go unnoticed for months.
What's the Owner-Level Acceptance Checklist Before You Trust an Integration?
Before considering any integration "done": has someone deliberately tested what happens on a failed send (not just a successful one)? Is there a unique identifier preventing duplicate records? Is there an alert if the retry policy exhausts without success? Is there a scheduled reconciliation check, even monthly? If any answer is no, the integration works today but isn't actually finished. Our custom platform work treats this checklist as part of the build, not an optional add-on.
How Do You Catch This Before It Costs You a Real Customer Relationship?
Ask whoever built or sold you the integration these exact questions before go-live, in writing. A vendor who can answer clearly has actually thought about failure modes. A vendor who says "it just works" hasn't, and you'll find out the hard way — usually the first time a customer calls confused about a duplicate charge.