QuickBooks sync creating duplicate invoices — how to prevent?

We're seeing duplicate invoices in QuickBooks Online every time a work order syncs. Same customer, same line items, created within minutes of each other. My team can't move forward on month-end close until we fix this.

We're on the standard QuickBooks Online integration, syncing completed work orders only. Happening across multiple customers, not isolated.

What causes this and how do we stop it?

  • Check if you have multiple active sync connections. QB OAuth tokens can get duplicated if someone reauthorized without removing the old one.

    GET /api/v2/integrations/quickbooks/connections

    Should only return one. If you see multiples, delete extras.

    Also: are you using webhooks + scheduled sync? That's a common double-trigger.

  • Hey Brandon — Carlos is on the right track. Two things to check:

    1. Duplicate connections
    Go to Settings → Integrations → QuickBooks and look for multiple authorized connections. If you see more than one, revoke all and reconnect once. We've seen this when someone reauthorizes after a password change without realizing the old token is still active.

    2. Webhook + scheduled sync overlap
    If you have both "Sync on Status Change" enabled and a daily scheduled sync, they can race. The webhook fires immediately on completion, then the scheduled job picks up the same work order if the timing overlaps.

    Quick fix: disable scheduled sync if you're using real-time webhooks, or add a filter so scheduled sync only picks up work orders older than 1 hour.

    Can you check your integration settings and let us know what you see? Also — are the duplicates always back-to-back (same minute) or scattered throughout the day?

  • Found it. Three active connections in there — someone on my team reauthorized last week after a QB password reset. Didn't think to check for duplicates.

    Revoked extras, running a test now. Will update.

  • +1 to what Eli said — worth noting that QB's API doesn't dedupe on your end, so even if FieldPulse sends "don't create if exists", QBO will happily make duplicates if the requests hit different connection tokens.

    YMMV but we've also seen this happen if you have a sandbox and production environment both pointed at the same QB company. Heads up if you're doing any testing.

  • Happy to help here, Brandon!

    Once you've cleaned up those duplicate connections, I'd recommend:

    1. Run a manual sync on one test work order to confirm clean behavior
    2. Check your Audit Log (Settings → Account → Audit Log) to see which user/connection created the duplicates — helps prevent recurrence
    3. Consider enabling Sync Confirmation Emails temporarily so you catch any future duplicates immediately

    If you're still seeing duplicates after removing extra connections, open a ticket and we'll trace the specific work order IDs. The double webhook + scheduled sync scenario Eli mentioned is documented in this troubleshooting article.

  • Confirmed fixed. Revoked the duplicate connections and ran 10 test work orders — clean syncs, no duplicates.

    Thanks all. Month-end close is unblocked.