Help Center

QuickBooks and accounting

Chris Muench
Chris Muench

Connect QuickBooks Online with OAuth from Store Config, set an Export Start Date, and each sync posts one journal entry per location per day summarizing sales, COGS, taxes, tenders, discounts and over/short — into accounts the integration creates for you. Shogo is the recommended bridge for Xero and other accounting software.

Your accountant does not want to re-key every day's totals, and you do not want to type them. The QuickBooks Online integration closes that gap: PHP Point Of Sale posts one journal entry per location per day into QuickBooks Online, summarizing that day's end-of-day activity — gross sales, cost of goods sold, taxes, payments by tender, discounts, refunds, gift card and store account movement, and cash over/short. It creates the accounts it needs in your QuickBooks chart of accounts automatically, so there is no manual mapping step.

Everything lives in Store Config → Quickbooks Settings (open Store Config from the left menu and search for quickbooks), and requires the Store Config module permission (permissions and templates).

Shogo for other accounting software

The Quickbooks Settings panel itself points you to Shogo (shogo.io), the partner that integrates PHP Point Of Sale with all major accounting software — QuickBooks, Xero and more — with more flexible options, including purchasing and custom account mapping. Shogo is planned to replace the built-in QuickBooks integration over time, so if you are starting fresh, or you need per-account control or non-QuickBooks software, start with Shogo. The built-in integration below remains the direct, journal-entry-only option for QuickBooks Online.

Connect QuickBooks Online

  1. Go to Store Config and search for quickbooks to open Quickbooks Settings.
  2. Click Connect to quickbooks online.
  3. Sign in to your Intuit account and authorize PHP Point Of Sale to access your QuickBooks Online company.

Once connected, the panel shows three maintenance controls:

  • Refresh Tokens — renews the OAuth tokens if QuickBooks reports an expired session.
  • Reconnect to quickbooks online — runs the authorization again, for example after changing QuickBooks credentials or companies.
  • Reset Quickbooks — clears the stored connection (tokens, company/realm, export start date, the record of which days were already posted, and the class mappings). It deletes nothing inside QuickBooks itself; use it to start the setup over.

Configure and run the sync

  • Quickbooks Sync Operations contains a single operation, Export journal entry to quickbooks, enabled by default. Unchecking it means a sync does nothing.
  • Export Start Date — enter a date as YYYY-MM-DD. The sync posts one journal entry for every day from this date through yesterday (today's entry posts once the day is over). If you leave it empty, posting starts from the current date. Pick the first date you want in QuickBooks — for a new connection that is usually the day you started using the POS, or the start of the current accounting period.
  • Last Sync Date shows when the sync last ran. Click Sync next to it (and confirm) to run the export now; a Quickbooks sync progress bar tracks the run and a Cancel button stops it.
  • Quickbooks sync logs lists a downloadable log file for each run — open one to see exactly which dates posted and any errors QuickBooks returned.

Days that posted successfully are remembered per location and never posted twice, so you can run the sync as often as you like. If QuickBooks rejects a day's entry (the error appears in the log), that day is automatically retried on the next sync. To have the export run automatically every day on a cloud store, submit a support request and it will be scheduled for you.

What the journal entries contain

Each entry is dated to the business day it summarizes and is built from the same figures as your sales and closeout reports. The integration creates the accounts it needs in your chart of accounts, all prefixed with the POS branding (for example "PHP POS GROSS INCOME"), the first time each is used:

  • Gross income (Income) — the day's gross sales, excluding gift card sales, credited.
  • COGS (Cost of Goods Sold, debit) paired with a COGS inventory asset account (credit) — so inventory value moves to cost of sales.
  • Tax payable [rate] (Other Current Liability) — one account per tax rate, credited with that rate's collected tax; your rates come from setting up taxes.
  • Sales [payment type] (Bank/cash-on-hand) — one account per tender (cash, check, credit card, and so on), debited with that tender's takings; matching Returns [payment type] accounts are debited negative for refunds by tender.
  • Discounts (Income, discounts/refunds given) and Refunds (Income) — the day's discounts and refund totals.
  • Gift card (Other Current Liability) — gift card sales post to the liability rather than income, since the revenue is recognized on redemption; see gift cards.
  • Store account (Other Current Liability) — charges to customer store accounts.
  • Over/short paired with Petty cash — register overages and shortages from your closeouts (registers and cash management).

Locations become QuickBooks classes. A class named after each location is created automatically, every journal entry line carries its location's class, and each location gets its own entry per day — so class-based reports in QuickBooks break your books down by store.

What the integration is — and is not

This is journal-entry-level accounting, not invoice-level bookkeeping. QuickBooks receives daily summaries, not a copy of every individual sale, customer, item and invoice — your detailed records stay in the POS, and QuickBooks holds the financial summary, which is what most retail books need. If you need per-invoice detail in your accounting software, or you use anything other than QuickBooks Online, use Shogo instead.

Common questions

Do I have to map my chart of accounts before syncing? No. The integration creates the accounts it needs automatically (prefixed with the POS name) the first time it posts, including one tax-payable account per tax rate and one bank account per payment type. Your accountant can reclassify or merge them inside QuickBooks afterward.

Why is there no journal entry for today? Entries post for complete days only — the export covers the Export Start Date through yesterday. Today's entry appears after the day closes and the next sync runs.

Will running the sync twice double my numbers? No. Each successfully posted day is recorded per location and skipped on later runs. Only days that failed (visible in the Quickbooks sync logs) are retried.

How do I bring in history from before I connected? Set Export Start Date to the earliest date you want and click Sync. One entry posts for every location and day from that date forward.

How do I see each store separately in QuickBooks? Entries are already split: one journal entry per location per day, with every line tagged with a QuickBooks class named after the location. Run QuickBooks reports by class.

A day's entry failed — what do I do? Open Quickbooks sync logs and read the error QuickBooks returned (a disabled account or a closed books date are common). Fix the cause in QuickBooks, then click Sync — failed days repost automatically.

Does this send my individual sales, customers or items to QuickBooks? No. Only daily summary journal entries are sent. For per-invoice accounting or other platforms like Xero, use Shogo.

Can the export run automatically every night? Yes — on cloud stores, contact support and automatic daily syncing will be set up for your account.

Was this article helpful?

0 out of 0 found this helpful

Have more questions? Submit a request

Comments

2 comments

  • Comment author
    David

    i don't see quickbooks under our store config

    0
  • Comment author
    Chris Muench

    We are rolling out to our cloud over the next couple of weeks to ensure stability for all. Once this is done QB will be available.

    0

Please sign in to leave a comment.