How We Fixed 5,000+ Duplicate Time Entries in a QuickBooks API Integration
🔧

How We Fixed 5,000+ Duplicate Time Entries in a QuickBooks API Integration

View Details
Unsplash Cover
Unsplash Cover
Video
Prompt status
Draft ready
Short video prompt
FORMAT: Vertical 9:16, 20–35s, fast cuts, burned-in captions.

GOAL: Explain a real QuickBooks Online API pagination mistake that creates duplicate time entries, and the exact fix.

SOURCE / CONTEXT:
- Blog post title: How We Fixed 5,000+ Duplicate Time Entries in a QuickBooks API Integration
- URL: https://connex.digital/blog/duplicate-time-entries

STYLE:
- Tone: warm US confident, energetic, clear.
- Music: upbeat, modern tech.
- Visuals: quick motion graphics of API calls, offset numbers sliding, duplicated rows, then a clean “fixed” import.
- Branding: On-screen text includes “Connex Digital” and a subtle Connex Digital logo in-frame throughout.

SCRIPT + SHOT LIST (20–35s):
1) HOOK (0–2s)
- On-screen text: “Getting duplicate time entries from QuickBooks?”
- Visual: spreadsheet rows multiply rapidly.
- VO: “If your QuickBooks import is exploding with duplicates, it might be one number.”

2) POINT 1 (2–8s)
- On-screen text: “QuickBooks returns max 1,000 records per call”
- Visual: API request card: MAXRESULTS = 1000.
- VO: “QuickBooks caps time entries at a thousand per request, so you paginate.”

3) POINT 2 (8–16s)
- On-screen text: “STARTPOSITION is an OFFSET, not a page number”
- Visual: STARTPOSITION highlighted, then “Page 2” label gets a red X.
- VO: “But STARTPOSITION is a record offset, not ‘page two’.”

4) POINT 3 (16–24s)
- On-screen text: “Wrong: +1 → duplicates”
- Visual: 1–1000, then 2–1001, then 3–1002 overlap animation.
- VO: “If you increment by one, every page overlaps and duplicates almost everything.”

5) POINT 4 (24–30s)
- On-screen text: “Right: +1000”
- Visual: 1–1000, 1001–2000, 2001–3000 clean sequence.
- VO: “Fix it by adding your page size. With 1,000 results, go 1, then 1001, then 2001.”

6) CTA (30–35s)
- On-screen text: “Want clean QuickBooks automations? Connex Digital”
- On-screen text (small): “Book: connex.digital/book/short”
- VO: “Want help getting it right the first time? Book a quick call at connex.digital slash book slash short.”

CAPTIONS:
- Burned-in captions for every VO line.

Assumptions:
- This video is for business owners and ops teams who use QuickBooks Online and an automation platform to import time entries.
Long video prompt
FORMAT: YouTube 16:9, 6–10 minutes.

GOAL: Turn this Connex Digital case study into a clear YouTube explainer that teaches offset-based pagination in the QuickBooks Online TimeActivity API, shows the real duplication failure mode, and gives a practical fix + verification steps.

SOURCE / CONTEXT:
- Post title: How We Fixed 5,000+ Duplicate Time Entries in a QuickBooks API Integration
- Blog URL: https://connex.digital/blog/duplicate-time-entries
- Company: Connex Digital

THEME:
- Video theme: Newsroom explainer.
- Tone: conversational expert voice, warm US confident.
- Music: upbeat, trendy, low under VO.

PRESENTER:
- Avatar talking head: Vera (co-founder and CTO).

VISUAL DIRECTION:
- Mix of talking head + b-roll: dashboards, QuickBooks-style UI b-roll (generic), code snippets, animated pagination diagrams, and spreadsheet row animations.
- Use simple motion graphics to illustrate overlap (1–1000 then 2–1001) vs correct offsets (1–1000 then 1001–2000).
- On-screen text: section headers and key takeaways.
- Branding: subtle Connex Digital logo bug in a corner, consistent brand colors.

STRUCTURE (match the article headings):

1) Hook (0:00–0:30)
- Cold open with the pain: “We imported time entries and suddenly total hours were impossibly high.”
- Visual: chart spikes + duplicated rows.
- On-screen text: “QuickBooks API duplicates? Check STARTPOSITION.”

2) Intro (0:30–1:10)
- Who we are: Connex Digital builds no-code and API automations.
- What you’ll learn: why this bug happens, how to spot it, how to fix it safely.

3) Background (1:10–2:10)
- Explain the client goal: sync approved billable time entries from QuickBooks Online into a project management tool.
- Mention the 1,000-record API limit and the need for pagination.
- Visual: “MAXRESULTS 1000” graphic.

4) The Challenge (2:10–3:10)
- Show symptoms: inflated totals, same 8-hour entry appearing 3 times.
- Visual: side-by-side “source vs imported” table.

5) Root Cause Investigation (3:10–5:00)
- Teach offset-based pagination:
- STARTPOSITION = record offset
- MAXRESULTS = page size
- Show the wrong implementation:
- SELECT FROM TimeActivity STARTPOSITION 1 MAXRESULTS 1000
- SELECT
FROM TimeActivity STARTPOSITION 2 MAXRESULTS 1000
- Explain overlap: page 2 returns records 2–1001, duplicating almost everything.
- Visual: animated overlap timeline and a “near-total duplication” callout.

6) The Solution (5:00–8:30)
- Step 1: Clear corrupted data (why deduping was not practical).
- Step 2: Fix the pagination loop:
- Iteration 1: STARTPOSITION = 1 → 1–1000
- Iteration 2: STARTPOSITION = 1001 → 1001–2000
- Iteration 3: STARTPOSITION = 2001 → 2001–3000
- Step 3: Staged verification:
- Run first 20 iterations (up to 20,000 records), pause, validate totals.
- Step 4: Add project name filters:
- Only process project names containing “architecture” or “design” per naming convention.
- Visual: checklist animation with each step turning green.

7) Results (8:30–9:20)
- Mention outcomes:
- duplicates eliminated
- first 20 iterations verified
- clean reimport of 5,509 records
- Visual: before/after counts.

8) Key Takeaway + CTA (9:20–10:00)
- Takeaway: “Always increment STARTPOSITION by MAXRESULTS in offset-based pagination.”
- CTA on-screen + VO: “If you want QuickBooks automations that are accurate from day one, book a call: http://connex.digital/book/video”.

ON-SCREEN TEXT (must include):
- “STARTPOSITION is an OFFSET, not a page number”
- “Next STARTPOSITION = previous STARTPOSITION + MAXRESULTS”

Assumptions:
- We will show generic UI and diagrams rather than actual client screenshots.
- Audience is ops, finance, and automation builders working with QuickBooks Online integrations.
General
🔑 Keyword Goals
Generate LK
Generate NL
LinkedIn Post Content
🚨 Have you ever faced duplicate time entries in your QuickBooks API integration? We recently tackled a daunting challenge where we fixed over 5,000 duplicate time entries for a client.

The culprit? A single-digit error in the STARTPOSITION parameter during offset-based pagination. Instead of incrementing by the page size (1,000), it was mistakenly set to increment by 1. This led to massive duplication and inflated hour totals.

In our latest blog post, we dive into:
- The root cause of the duplication issue
- The step-by-step solution we implemented
- Key takeaways to ensure accurate QuickBooks integrations

If you're looking to streamline your QuickBooks automation and avoid these pitfalls, check out the full article here: Read More

#QuickBooks #APIIntegration #ConnexDigital #Automation #TimeManagement
Hidden
Full URL
Unsplash Cover
Unsplash Cover
Prompt last generated
Mar 3, 2026
KW AI GEN
QuickBooks API, duplicate time entries, pagination fix, automation
When your automation loops through QuickBooks time entries using API pagination, each new page must start exactly 1,000 records ahead of the last — not 1. A single-digit error in the STARTPOSITION parameter is enough to cause near-total record duplication, inflating imported data by thousands of hours before anyone notices.
Here is how we diagnosed and fixed this exact issue for an architecture and design firm.

Background

The firm needed to sync all approved billable time entries from QuickBooks Online into their project management platform. Because the QuickBooks API returns a maximum of 1,000 records per call, the integration used paginated queries — iterating through batches of time entries until the full history was retrieved.
Before the historical import began, all existing time entries were cleared to ensure a clean slate. The workflow appeared correctly configured. Then the import ran — and something was clearly wrong.

The Challenge

Within the first pass, total imported hours far exceeded what the entire department had actually worked. A closer look at a single project revealed one employee's 8-hour time entry appearing three times on the same date.
The client pulled screenshots directly from QuickBooks to compare — the source data showed the correct single entry. The automation was creating the duplicates.

Root Cause Investigation

Live troubleshooting confirmed the issue quickly. By pulling two consecutive pages from the QuickBooks time entry API and comparing them side-by-side, the team found identical records on Page 1 and Page 2.
The QuickBooks Online API uses offset-based pagination with STARTPOSITION and MAXRESULTS:
SELECT * FROM TimeActivity STARTPOSITION 1 MAXRESULTS 1000 SELECT * FROM TimeActivity STARTPOSITION 2 MAXRESULTS 1000
The error: STARTPOSITION was incrementing by 1 on each iteration instead of 1,000.
So Page 1 retrieved records 1–1,000. Page 2 started at position 2 — returning records 2–1,001. Page 3 started at 3 — returning records 3–1,002. Every record except the very first was being imported multiple times, once per iteration.
⚠️
The key insight: QuickBooks' STARTPOSITION is a record offset, not a page number. To get the next full page of 1,000 records, you must add 1,000 to the start position — not 1.

The Solution

Step 1 — Clear corrupted data

All incorrectly imported time entries were deleted before reimporting. Attempting to deduplicate in place was not practical given the volume.

Step 2 — Fix the pagination loop

The workflow was updated so STARTPOSITION increments by 1,000 on each iteration:
Iteration 1: STARTPOSITION = 1 → records 1–1,000 Iteration 2: STARTPOSITION = 1001 → records 1,001–2,000 Iteration 3: STARTPOSITION = 2001 → records 2,001–3,000

Step 3 — Staged verification before full import

Rather than running the corrected import all at once, the first 20 iterations (up to 20,000 records) were run and then paused. The client reviewed the results for accuracy before the full import continued. This approach limits the blast radius if any secondary issue surfaces.

Step 4 — Add project name filters

A second issue was discovered during the same session: some non-architecture projects had slipped through because the workflow lacked a project name filter. The fix added a required condition — project names must contain "architecture" or "design" (case-sensitive, uppercase) before being processed. This matched the firm's existing naming convention and prevented unrelated projects from being imported.

Results

  • Duplicate time entries were eliminated after clearing and reimporting with the corrected pagination
  • Accuracy was confirmed on the first 20 iterations before full processing continued
  • A queue of 5,509 records was cleanly reimported without duplication
  • Non-architecture projects were filtered out completely going forward

Key Takeaway

When building paginated imports from QuickBooks Online, always increment STARTPOSITION by the same value as MAXRESULTS. A page size of 1,000 means the next page starts at previous start + 1,000 — not previous start + 1.
This principle applies to any system using offset-based pagination: the starting offset of each page must equal the previous starting offset plus the page size. Getting this wrong by even a single digit creates cascading duplicates across every record after the first.
If your QuickBooks integration is returning inflated record counts or producing duplicate entries in a connected system, STARTPOSITION is the first parameter to audit.

Ready to build QuickBooks automations that are accurate from day one? Book a free discovery call with the Connex Digital team and let's get your data flowing cleanly.