QuickBooks Online and Square integration
Small-to-mid-market businesses use QuickBooks Online to manage accounting and Square to process payments and sales. Connecting the two keeps your books up to date without manual entry. Square payments and refunds post into QuickBooks Online as deposits and vendor credits, Square invoices sync as QBO invoices with full detail, and inventory adjustments flow both directions so your counts stay accurate. ml-connector handles the different authentication flows and the entity mapping between the two platforms.
What moves between them
The main flow runs from Square into QuickBooks Online. Square payments and refunds post into QBO as deposits and vendor credits, mapped to matching QBO bank accounts and vendor records. Square invoices sync as QBO invoices with full customer and line-item detail. Square inventory adjustments update QBO inventory accounts so physical counts stay in agreement. Customer records flow in both directions so QBO customers reflect Square customer additions, changes, and deletions. Because QuickBooks Online is pull-friendly, ml-connector polls the CDC endpoint on a schedule tied to your sales cycle and can also receive Square webhook pushes where they are enabled.
How ml-connector handles it
ml-connector stores both credential sets encrypted and refreshes OAuth tokens before expiry: 1 hour before access token expiry on the QuickBooks Online side and 25 days before access token expiry on the Square side. It maps Square merchant locations to QBO classes or departments so payments and invoices land on the correct segment of your business. When Square webhook payloads arrive, ml-connector enriches them by fetching the full entity from Square. For payments and refunds, it creates QBO deposits or vendor credits and reconciles them to matching bank accounts. For invoices, it maps Square customers to QBO customer records and creates QBO invoices with the same line items and amounts. Square inventory adjustments are mapped to QBO inventory adjustment accounts via a configured mapping table. All operations are idempotent: a duplicate webhook triggers no duplicate posting. Every record carries a full audit trail and can be replayed if a downstream QBO API call fails.
A real-world example
A mid-market retail business runs Square for in-store and online payments and QuickBooks Online for accounting and tax reporting. Before the integration, the finance team exported payment summaries from Square every day and manually entered deposits into QBO, reviewed inventory counts weekly and reconciled them by hand, and created QBO invoices by copying data from Square. With Square and QuickBooks Online connected, each Square payment posts automatically as a deposit on the matching bank account, Square inventory adjustments update QBO accounts in real time, and Square invoices create QBO records with full line-item detail. The daily manual posting step is gone, inventory counts stay in agreement, and month-end close starts with cash and inventory already reconciled.
What you can do
- Post Square payments and refunds into QuickBooks Online as deposits and vendor credits on matching bank accounts.
- Sync Square invoices as QuickBooks Online invoices with full customer, line-item, and tax detail.
- Map Square inventory adjustments to QuickBooks Online inventory accounts so physical counts stay accurate.
- Authenticate both systems with OAuth 2.0, refresh tokens before expiry, and enrich webhook payloads with full entity data.
- Poll on your sales schedule with idempotent operations, a full audit trail, and replay on failure.
Questions
- Which direction does data flow between QuickBooks Online and Square?
- The primary flow is Square into QuickBooks Online. Square payments and refunds post as QBO deposits and vendor credits, invoices sync as QBO invoices, and inventory adjustments update QBO accounts. Customers and vendors flow in both directions for reference data alignment. QuickBooks Online general ledger accounts are read-only to Square, so ml-connector does not write GL entries back into Square.
- How does ml-connector handle the different OAuth token lifetimes?
- QuickBooks Online access tokens expire in 1 hour and refresh tokens rotate every 24 to 26 hours, while Square access tokens expire in 30 days and refresh tokens do not expire. ml-connector tracks both expiries and refreshes each token independently before it expires, so a token rotation in either system does not interrupt service.
- What happens when Square is commerce-layer only and has no GL Accounts API?
- ml-connector maps Square merchant locations and payment methods to QuickBooks Online classes, departments, or custom fields so payments and invoices land on the correct income account. You configure the mapping once per location, and every synced record routes to the right GL segment without manual intervention.
Related integrations
More QuickBooks Online integrations
Other systems that connect to Square
Connect QuickBooks Online and Square
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started