> ## Documentation Index
> Fetch the complete documentation index at: https://help.vori.com/llms.txt
> Use this file to discover all available pages before exploring further.

# QuickBooks Online integration

> How Vori's QuickBooks Online integration syncs daily sales journal entries and approved vendor invoices from Vori into QuickBooks Online.

<Note>
  This feature is under development, so details are subject to change. If you're interested in gaining early access, reach out to Vori support at [**support@vori.com**](mailto:support@vori.com).
</Note>

Vori's QuickBooks Online integration is built for whoever owns your books — a bookkeeper, controller, or outside accountant — and assumes familiarity with QuickBooks Online. It replaces the daily data entry that normally sits between your POS and your ledger.

***

### Overview

Vori connects to your QuickBooks Online company and does three things:

1. **Reads your chart of accounts** into Vori, so you map POS data to your real accounts instead of typing account numbers from memory.
2. **Pushes a daily sales journal entry** built from your End of Day data — sales, returns, COGS, taxes, tenders, and related lines, broken out by department.
3. **Pushes approved vendor invoices as Bills** — vendor-linked, dated, terms-aware AP records you pay inside QuickBooks.

Sales and invoices arrive in QuickBooks already coded to your accounts, so your daily close is reviewing numbers instead of typing them. QuickBooks remains your financial system of record — Vori does not take over your books.

***

### How data flows between Vori and QuickBooks

The integration is deliberately one-way for financial transactions. Vori pushes; QuickBooks owns what it receives.

#### What Vori reads from QuickBooks

Reference data only. Vori never reads, alters, or reports on your transactions.

| Data                  | Why                                           |
| --------------------- | --------------------------------------------- |
| Chart of accounts     | To match your chart of accounts to Vori data  |
| Classes and Locations | So entries are tagged to the right store      |
| Vendor list           | To match Vori vendors to QuickBooks vendors   |
| Payment terms         | To set the due date on the Bills Vori creates |

#### What Vori writes to QuickBooks

| Data                       | Synced when                                                  | Notes                                 |
| -------------------------- | ------------------------------------------------------------ | ------------------------------------- |
| Daily sales journal entry  | You click **Sync to QuickBooks** from your End of Day report | One entry per store, per business day |
| Approved invoices as Bills | You approve an invoice in Vori                               | One Bill per invoice                  |
| New vendor records         | When you create a new vendor                                 | Never created automatically           |

Vori does **not** see any of the following. Once Vori posts an entry, QuickBooks owns it.

* Bill payments and payment status
* Bank and account reconciliations
* Edits or deletions you make to posted entries
* Any transaction not originated by Vori

***

### Setting up the connection

The connection is self-service and secure — you never share your QuickBooks credentials with Vori.

1. In the Vori Back Office, go to **Integrations → Accounting Sync** and click **Connect** on QuickBooks Online.
2. You're redirected to Intuit's own consent screen, where you sign in to QuickBooks and authorize Vori's access. Your credentials are entered on Intuit's site and are never seen or stored by Vori.
3. You're returned to Vori. The connection card shows the connected QuickBooks company name and connection status.
4. Vori immediately performs a first chart-of-accounts pull, so mapping can begin.

You can disconnect at any time from the same page, and you can revoke Vori's access directly from within QuickBooks. Disconnecting stops all future pushes. Entries already posted to QuickBooks remain, because they are now QuickBooks records.

<Note>
  Vori supports one QuickBooks company per banner, with Class and Location tags to distinguish entries by store. A banner can have one accounting integration connected at a time — QuickBooks Online and Xero cannot run simultaneously.
</Note>

***

### Setting up your chart of accounts

Vori pulls your chart of accounts directly from QuickBooks and lets you map those accounts to your Vori data. This is the core of the integration, and the part worth spending setup time on. Mapping is configured once in Vori and then reused every day.

Vori refreshes your chart of accounts nightly, so new and renamed accounts are ready to map the next day. You can also refresh on demand from **Integrations → Accounting Sync**.

Mappings are managed under **Accounting → GL Code Mapping**. There are three types to configure: General Accounts, Department Accounts, and Segments.

#### General Accounts

Store-level items that don't belong to any single department, grouped by type:

| Group                | Line items                                                                                    |
| -------------------- | --------------------------------------------------------------------------------------------- |
| **Taxes**            | Tax Collected, Tax Refunded                                                                   |
| **Payment methods**  | Cash, Credit Card, Debit Card, EBT, WIC, Check, and any custom tenders you use                |
| **Gift cards**       | Deposits (sold), Redemptions, Refunds, Adjustments                                            |
| **House accounts**   | Charges, Refunds, Adjustments                                                                 |
| **Discounts**        | Discounts & Rewards                                                                           |
| **Accounts payable** | The AP account your vendor Bills post to                                                      |
| **Other**            | Cash Over/Short, Cashback, Tips, Bottle Deposits, Refunded Bottle Deposits, Pay Ins, Pay Outs |

#### Department Accounts

Every **parent department** in your store can be mapped to up to four account types:

| Mapping       | What it represents                              |
| ------------- | ----------------------------------------------- |
| **Sales**     | Department net sales revenue                    |
| **Returns**   | Department refunds and returns (contra-revenue) |
| **COGS**      | Cost of goods sold for the department           |
| **Inventory** | Inventory asset for the department              |

A few important notes:

* **All four are optional.** A store that only wants revenue-level detail maps Sales. If you want live department margin tracking and perpetual inventory, map all four.
* **Multiple Vori departments can share one account.** Many stores have departments that are more granular than their accounting structure. Map those Vori departments to the same QuickBooks account and their activity rolls up together.

#### Segments

If you run several stores out of one QuickBooks company, Vori tags every line it posts with that store's **Class** or **Location** value, so you can filter reports by store. Assign these under **Accounting → GL Code Mapping** — a value must match a Class or Location that already exists in QuickBooks, or the line posts untagged. Single-store operators generally don't need this.

***

### The daily journal entry

Once your accounts are set up, you can push daily journal entries directly from Vori to QuickBooks. Go to **Reports → End of Day Report → Export to Accounting → Push to QuickBooks Online**. Choose the date range — a single day, or a stretch of days up to a month at a time — and Vori creates one journal entry per store, per business day in that range.

<Tip>
  Wait until all data from your POS lanes has synced and reconciled before pushing to QuickBooks.
</Tip>

#### What it contains

The daily entry is built from the same End of Day data your store already reviews. It contains only lines for which you have configured a mapping, so depending on your configuration it can include:

* **Net sales by department** (credit to each department's revenue account)
* **Returns by department** (debit to each department's returns account)
* **COGS by department** (debit) with the corresponding **inventory relief by department** (credit)
* **Sales tax collected and refunded**
* **Each tender type** — cash, credit, debit, EBT, WIC, check
* **Discounts and rewards**
* **Bottle deposits**
* **Gift card deposits, redemptions, and refunds**
* **House account charges, refunds, and adjustments**
* **Cash over/short, cashback, and tips**
* **Pay ins and pay outs**
* **Inventory shrink by department**
* **Inventory adjustments by department** *(coming soon)*

Debits and credits are validated to balance before anything is sent. A day that doesn't balance is rejected — nothing posts, and Vori names the amount and the offending order. This check cannot be bypassed.

Unmapped accounts stop the push separately, listing each item and its amount. You can choose **Push mapped lines only** to post without them; the excluded amounts net to zero, so the entry still balances, and the omissions are recorded on the sync record. Fix the mapping rather than making this routine.

#### Example entry

Synthetic figures for a single store on a single day:

| Account | Description             | Debit         | Credit        |
| ------- | ----------------------- | ------------- | ------------- |
| 4010    | Sales – Grocery         |               | 5,000.00      |
| 4020    | Sales – Produce         |               | 2,000.00      |
| 4030    | Sales – Deli            |               | 1,500.00      |
| 4040    | Sales – Bakery          |               | 1,000.00      |
| 4050    | Sales – Meat            |               | 500.00        |
| 4110    | Returns – Grocery       | 100.00        |               |
| 4300    | Discounts & Rewards     | 200.00        |               |
| 2310    | Bottle Deposits Payable |               | 50.00         |
| 2200    | Sales Tax Payable       |               | 650.00        |
| 1010    | Cash Clearing           | 2,998.00      |               |
| 1020    | Credit Card Clearing    | 6,000.00      |               |
| 1030    | Debit Card Clearing     | 1,000.00      |               |
| 1040    | EBT Clearing            | 300.00        |               |
| 1050    | WIC Clearing            | 100.00        |               |
| 6900    | Cash Over/Short         | 2.00          |               |
| 5010    | COGS – Grocery          | 3,500.00      |               |
| 1210    | Inventory – Grocery     |               | 3,500.00      |
| 5020    | COGS – Produce          | 1,300.00      |               |
| 1220    | Inventory – Produce     |               | 1,300.00      |
|         | **Totals**              | **15,500.00** | **15,500.00** |

A few things to read out of this example:

* **Tender lines are the debit side of the sale.** They sum to the total collected, so you can reconcile against actual deposits and processor settlements.
* **Accurate margins in QuickBooks require Sales, Returns, COGS, and Inventory for each department.** Because COGS and inventory are fundamentally connected, Vori requires both COGS and Inventory account mappings to post either line in the journal entry. This is what lets QuickBooks show department margin without additional work at period end.
* **Discounts appear as a single store-level line**, not split by department. Worth understanding if you compute department margin in QuickBooks: discount value is not attributed to the department that granted it.

***

### Invoices and Bills

Approved vendor invoices in Vori are posted to QuickBooks as **Bills** — real AP records that appear in AP aging, carry terms and a due date, and are paid inside QuickBooks exactly like a Bill you entered by hand. Two things are configured before invoices can flow to QuickBooks: accounts and vendors.

#### Accounts

To properly represent a Bill in QuickBooks, map the following accounts:

| What                   | Where it maps                                 | Notes                                                                                                                                      |
| ---------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------ |
| Department purchases   | The **Inventory** account for each department | Received product is an asset when it arrives, not an expense. It becomes COGS later, when the item sells, through the daily journal entry. |
| Accounts payable       | One AP account for the store                  | The credit side of every Bill                                                                                                              |
| Non-item invoice costs | One account for other charges                 | Freight, fees, and similar charges that belong to no department                                                                            |

This is what keeps department margin honest end to end: purchases raise the department's inventory asset, and sales relieve it against that department's COGS account. Both sides use the same department accounts, so the balance in QuickBooks reflects what's actually on the shelf.

#### Vendors

QuickBooks vendors and Vori vendors have no shared identifier, so they're linked once per vendor. The first time you review an invoice from a vendor that hasn't yet been linked, Vori searches your QuickBooks vendor list for likely matches and presents them. You either:

* **Select the matching QuickBooks vendor**, or
* **Create a new vendor in QuickBooks** — Vori shows you the vendor's details from Vori, you confirm them, and Vori writes the new vendor record.

**Vori never silently creates vendors in your QuickBooks.** Vendor creation is always an explicit action you take. Once linked, the mapping persists — every future invoice from that vendor skips this step entirely.

#### Approving an invoice

After your department staff finish processing an invoice (cost changes, receiving, etc.), invoices arrive under **Accounting → Invoice Review**. Accountants must approve invoices before they sync to QuickBooks. Vori flags any issues that would block approval — new vendors, unmapped departments, or unreconciled line items.

From the queue, open an invoice to see its detail: line items, costs, and the account each line is coded to, with department subtotals.

Approval is gated. An invoice cannot be approved, and therefore cannot post, unless its vendor is linked to a QuickBooks vendor and every line is coded to a valid account. This is deliberate: a gap is easier to fix in Vori than to unpick in QuickBooks later.

On approval, Vori creates the Bill. The invoice is marked as exported and carries a link to the resulting QuickBooks record.

#### What the Bill contains

| Bill field         | Source                                                                         |
| ------------------ | ------------------------------------------------------------------------------ |
| Vendor             | The linked QuickBooks vendor                                                   |
| Reference number   | The invoice number from Vori                                                   |
| Bill date          | The invoice's billing date                                                     |
| Due date and terms | Derived from the invoice's billing date and due date                           |
| Line items         | **One line per department** on the invoice, coded to that department's account |
| AP account         | Your store-level accounts payable account                                      |

An invoice is summarized by department rather than passed through line by line, so a delivery covering produce, deli, and bakery becomes a Bill with three lines. Department-level purchasing detail reaches QuickBooks without item-level clutter in your books.

#### Example Bill

A produce vendor delivers to two departments on one invoice, with freight billed separately on the same document.

**Bill header**

| Field         | Value               |
| ------------- | ------------------- |
| Vendor        | Coastal Produce Co. |
| Reference no. | 48219               |
| Bill date     | 2026-03-04          |
| Terms         | Net 15              |
| Due date      | 2026-03-19          |

**Bill lines**

| Account | Description         | Amount       |
| ------- | ------------------- | ------------ |
| 1220    | Inventory – Produce | 1,842.50     |
| 1230    | Inventory – Deli    | 210.00       |
| 7420    | Freight             | 85.00        |
|         | **Total**           | **2,137.50** |

In accounting terms, the three lines are debits and the 2,137.50 total is credited to your AP account. The Bill appears in QuickBooks AP aging with a due date of 2026-03-19, and you pay it there.

<Note>
  No COGS has been recorded yet. Cost moves from inventory to COGS when the item sells, in the daily journal entry.
</Note>

***

### Frequently asked questions

<AccordionGroup>
  <Accordion title="How does Vori handle errors, and how do you prevent duplicate entries?">
    Because this data touches your financial records, it's critical that you have full control and visibility over what hits your books and when. The governing principle: Vori holds a bad entry rather than forcing it through — a gap is easier to fix in Vori than to unpick in QuickBooks later.

    **What Vori catches before anything posts**

    | Situation                                                       | What happens                                                                             |
    | --------------------------------------------------------------- | ---------------------------------------------------------------------------------------- |
    | A department or category has no account mapped                  | The push stops and shows each unmapped item with its amount                              |
    | The day's debits and credits don't balance                      | Held and flagged, with the offending order named. Vori never posts an unbalanced entry.  |
    | A Bill's vendor isn't linked to a QuickBooks vendor             | The invoice can't be approved, so it never reaches QuickBooks                            |
    | A mapped account was deleted or made inactive in QuickBooks     | The push fails with the account named, rather than posting elsewhere                     |
    | A store's Class or Location value matches nothing in QuickBooks | The entry posts, untagged for that store, and the mismatch is flagged in GL Code Mapping |

    Because Vori re-reads your chart of accounts nightly, accounts you rename or add in QuickBooks are picked up automatically, and anything that becomes unmapped as a result surfaces the same way.

    **Every attempt is recorded.** A sync history view under **Integrations → Accounting Sync** shows:

    * Timestamp
    * Type — daily journal entry, invoice Bill, or chart-of-accounts pull
    * Reference — the business date, or the invoice number
    * Status — pending, success, or failed
    * The QuickBooks reference returned on success, with a link to open the entry in QuickBooks
    * The specific error message on failure

    **Failures are visible where you work.** A journal entry or Bill that fails to sync stays marked as unposted in Vori, with the error QuickBooks returned. Failed Bills are flagged in the **Invoice Review** queue so they aren't forgotten.

    **Retries are safe.** Once you've fixed the underlying cause — added a missing mapping, reactivated an account, linked a vendor — you can retry the sync. Each push carries a stable reference to the underlying Vori record, so retrying a day or an invoice that already posted will not create a second copy.

    Every entry Vori posts is a discrete, referenced journal entry or Bill in QuickBooks, so there's a clear audit trail of exactly what Vori posted and when.
  </Accordion>

  <Accordion title="Do entries ever land in QuickBooks uncategorized?">
    No. Vori doesn't create accounts in your QuickBooks and doesn't post to a default, catch-all, or suspense account.

    The governing principle is that Vori syncs only with valid data. Posting an entry against an account that doesn't exist, or a Bill against a vendor with no QuickBooks counterpart, creates work in QuickBooks instead of removing it — so incomplete mappings stop the push rather than routing around it.
  </Accordion>

  <Accordion title="Can I pay bills from Vori?">
    Not today. Bills are created in QuickBooks and paid there, through whatever payment workflow you use today. Vori also doesn't read payment status back, so AP aging and payment history live entirely in QuickBooks.

    If paying bills from Vori would be useful to you, you can vote for it on our roadmap at [vori.productlane.com/request](https://vori.productlane.com/request).
  </Accordion>

  <Accordion title="What happens if I edit or delete an entry after Vori posts it?">
    Nothing on Vori's side. Once an entry is in QuickBooks it's a QuickBooks record, and Vori will not overwrite, re-post, or correct it. More broadly, Vori doesn't read your QuickBooks transactions at all.
  </Accordion>

  <Accordion title="Does the original invoice PDF get attached to the Bill in QuickBooks?">
    Not today. The Bill record is created with the vendor, dates, terms, and coded lines. The source document stays viewable in Vori.
  </Accordion>

  <Accordion title="Does the integration cover labor, hours, or payroll?">
    Not today. Payroll stays in your payroll system and reaches QuickBooks through its own integration.
  </Accordion>

  <Accordion title="How do you handle taxes in multiple jurisdictions?">
    If you collect sales tax across several jurisdictions, each rate produces its own line on the daily entry, but all of them post to the same `Tax Collected` account.
  </Accordion>
</AccordionGroup>


## Related topics

- [Frequently Asked Questions](/faqs.md)
- [Create Quick Actions in Back Office](/point-of-sale-pos/pos-customization-and-setup/create-quick-actions-in-back-office.md)
- [Setting Up Quick Food Service Counters](/product-and-product-catalog-management/quick-food-service/setting-up-quick-food-service-counters.md)
