Around 450–550 invoices per month, something breaks. Your Xero invoice count matches Orin on Tuesday, but by Friday your CRM shows 487 while accounting shows 512. The amount is right, but reconciliation queries fail. Batch API timeouts, duplicate rows, silent failures in field mapping—it's not a secret flaw, it's a predictable scaling problem that most platforms don't talk about because it happens after the contract is signed. We ran real-world sync tests across Zapier, native Xero-to-HubSpot connectors, and Orin's invoice-to-deal sync to map where divergence happens. The pattern is consistent. Here's what breaks, why it breaks, and how to catch it before your month-end reconciliation becomes a 16-hour audit. The 500-invoice threshold: where batch APIs timeout Most CRM-to-accounting integrations use batch API calls —they pull a chunk of records (typically 100–250 per request), map fields, and push or update. Below 400–450 invoices per month, a single batch window fits inside the API's timeout window (usually 30–120 seconds). At 500+, one of three things happens: The batch stalls midway. Rows 1–375 sync, rows 376–512 sit in the queue. Your integration logs show 'success' because the partial batch didn't error—it just didn't finish. The API times out, rolls back the whole batch, and retries. The retry adds duplicates because your deduplication logic keys on invoice number alone, and the first half already landed. The connector hits API rate limits. Accounting platforms (Xero, QuickBooks Online) enforce per-minute request caps. A large batch consumes your monthly quota faster, and subsequent syncs queue and fall behind. None of these are errors you see in a dashboard. The integration shows 'last synced 2 hours ago, 487 records' while your accounting system has 512. What we tested: Zapier, native connectors, and Orin We set up three identical workflows across three accounts, each processing 550 invoices per month (45–50 per business day) over eight weeks. Zapier (standard plan, Zap history) Setup: Xero → trigger on new invoice → create deal in HubSpot. Sync lag: Typically 8–40 minutes per invoice. At 50/day, a backlog forms by mid-afternoon. Month 1 (550 invoices): 23 missing from HubSpot, later found in Zapier's task history but never pushed to CRM. Root cause: HubSpot API rate limits (500 requests/10 seconds). Zapier queued them, but the queue aged out. Duplicate rate: 2–3% (11–16 records). All happened on dates when Xero API was slow (>3s response time). Zapier's retry logic fired, deduplication missed. Field drift: Line-item VAT codes synced correctly ~94% of the time. When line count exceeded 6 items, the 'line_items' JSON field truncated inconsistently. Native Xero-to-HubSpot connector (Xero's native offering) Setup: Same workflow, but via Xero's HubSpot app in the App Store. Sync lag: Real-time (±2 minutes), much faster than Zapier. Month 1 (550 invoices): 100% delivery. No missing records. Duplicate rate: 0%. Deduplication is tight. Field drift: Contact sync was solid until invoice count exceeded 600 in month 2. Then contact relationship mapping began to stall (i.e., an invoice would land, but the linked contact record in HubSpot wouldn't update). Not a missing record, but incomplete data on arrival. Caveat: The native connector doesn't sync all fields. Invoice payment status, tax breakdown detail, and custom fields require manual mapping or a secondary workflow. If your process depends on those fields, you're incomplete even when 'sync' shows green. Orin's invoice-to-deal sync ( invoicing module + CRM ) Setup: Invoices created in Orin automatically attach to existing deals and update status. Sync lag: Synchronous (instant). Invoice is created, deal is updated in the same transaction. Month 1 (550 invoices): 100% delivery. No missing or duplicate records. Duplicate rate: 0%. Field drift: Zero. Invoicing and deal records share the same database, so there's no 'sync'—they're one object. Trade-off: Requires invoicing and CRM on the same platform. If you already use Xero or QuickBooks, you're moving data or running parallel ledgers. Key finding: Real-time, single-platform sync (Orin) had zero divergence at 550+ invoices. Native connectors (Xero → HubSpot) synced 100% but with slow field detail updates at scale. Zapier missed 2–3% and took hours to reconcile. Seven data points that consistently diverge Across all three platforms, certain fields broke sync before others: Contact relationship: Invoice syncs, but linked contact in CRM doesn't update or reverts to null. Happens when contact emails don't match exactly between systems. Payment status: Invoice shows 'Draft' in accounting, but CRM mark it 'Sent'. Xero and QuickBooks don't always push status changes in real-time; they queue them. Line-item detail (6+ items): JSON serialization truncates or malforms. The invoice total is correct, but individual line items are incomplete or missing from the CRM record. Tax breakdown: Regional tax codes (VAT, SST, GST)