QuickBooks Online + Meridian
Connect QuickBooks Online, map cost pools to classes, and post locked AI chargeback months as balanced journal entries. Written for controllers: what Meridian can and cannot touch in your books, and why each setup step matters.
Best For: Controllers and finance leads posting AI chargebacks to QuickBooks Online
Connect QuickBooks Online to Meridian
Meridian posts your AI cost chargebacks straight into QuickBooks Online as journal entries, tagged to the teams that used the AI. This guide walks through setup and explains why each step matters, so your books come out right the first time.
Time: about 20 minutes. Who should do this: someone with admin access in QuickBooks and access to Meridian for your organization. Usually a controller, finance lead or the person who owns your chart of accounts.
Posting is manual. Meridian posts a journal entry only when someone clicks Post to QuickBooks. Scheduled posting isn't available yet.
What Meridian does (and doesn't do) in your books
When you connect, Intuit asks you to approve access. Here is exactly what that access is used for:
| Meridian does | Meridian never does |
|---|---|
| Read your company name, chart of accounts and classes, so you can map to them | Read invoices, bills, customers, vendors, bank feeds or payroll |
| Create journal entries you initiate from a locked chargeback month | Edit or delete any existing transaction |
| Keep a record of each entry it posted (QuickBooks entry number, month, posting method, who posted and when) | Post anything without a person clicking Post |
Why this matters: your accountant or auditor will ask. The short answer is "read-only on the chart of accounts, and it writes only the journal entries we approve."
Before you start
- QuickBooks Online Plus, Advanced, or Intuit Enterprise Suite. Class tracking, which Meridian uses to show which team spent what, isn't available on the lower editions.
- Your cost pools in Meridian. These are the teams or business units you charge AI costs to. They should already exist under Settings β Cost pools in Meridian.
- Intuit Enterprise Suite with several entities? Each entity is connected separately. Repeat this guide in each entity that should receive chargebacks.
Step 1: Turn on class tracking in QuickBooks
In QuickBooks: gear icon β Account and settings β Advanced β Categories β turn on Track classes and choose One to each row in transaction. Save.
Why: a chargeback moves cost from "the company" to "the team that used it." Classes are how QuickBooks records "which team." With one class per row, a single journal entry can split one AI bill across several teams, which is exactly what a chargeback is.
Turn on Track locations too if you report by location or region. Meridian doesn't require it.
Step 2: Create one class per team
In QuickBooks: gear icon β All lists β Classes β New. Create a class for each team you charge back to, for example Engineering, Sales, Support.
Why: in Step 5 you match each Meridian cost pool to a class. Matching names on both sides makes the mapping obvious and your reports readable.
Already use classes for something else, like departments? Use those. Meridian works with whatever classes you have.
Step 3: Set up two accounts
In QuickBooks: Accounting β Chart of accounts β New. Create both:
| Account name (suggested) | Account type | Detail type | What it holds |
|---|---|---|---|
| AI Platform Costs | Expenses | Software & Apps if listed; otherwise Other Business Expenses | Your AI vendor bills, and the per-team charges Meridian posts |
| AI Cost Allocations | Expenses | Same as above | The offsetting credit for each chargeback |
You can use different names, or existing accounts. What matters is the account type.
Why "Expenses" and not "Other Expense": QuickBooks treats Other Expense as non-operating, and shows it below operating income, next to things like penalties and depreciation. AI spend is a normal cost of running the business. Putting it in Other Expense would understate your operating costs and overstate operating income, which your finance team or auditor would flag.
Why two accounts: this is the default, called the contra method (see "Choosing a posting method" below). It lets the team that pays the AI bills see both the full spend and how much was charged back to other teams.
Step 4: Connect QuickBooks in Meridian
In Meridian: Integrations β Destinations tab β QuickBooks Online card β Set up. On the QuickBooks Online page, click Connect QuickBooks.
You'll be sent to Intuit to sign in. Pick the company (or entity) and approve access. You'll return to the QuickBooks Online page, which shows "QuickBooks connected successfully" and the name of the connected company. From then on, the card's button reads Manage instead of Set up.
Why the Intuit screen: Meridian never sees your QuickBooks password. Intuit issues Meridian a limited access key for that one company, which Meridian stores encrypted. You can revoke it at any time (see "Disconnecting and reconnecting").
Step 5: Map your accounts and teams
In Meridian: on the QuickBooks Online page, under Mapping, fill in:
- Posting method: Contra (default) or Straight reclass.
- Expense account (debit): AI Platform Costs.
- Offset account (credit) (contra method only): AI Cost Allocations.
- Cost pool β QBO Class: for each Meridian cost pool, pick the matching QuickBooks class.
Click Save mapping.
Why map by account and class, not by name: Meridian stores QuickBooks' internal IDs, so renaming an account or class in QuickBooks later won't break the mapping. When you save, and again before every preview and post, Meridian re-checks that each mapped account and class still exists and is active, so you can't post into something that's been retired.
Step 6: Lock the chargeback month
In Meridian: Reports β Chargeback / GL Export β Open Chargeback. Choose the Period (month), click Preview draft to review the allocation, then click Lock & download.
If the month hasn't ended yet, the button reads Lock early & download, and you must tick "I understand β lock this open month early" first. Most controllers wait for month-end.
Why locking is required: posting to your general ledger should only happen with final numbers. A lock freezes that month's allocation so the numbers can't change after you've reviewed them. Meridian won't post a month that isn't locked.
Step 7: Preview and post
In Meridian: on the QuickBooks Online page, under Post to QuickBooks, choose the month from Locked chargeback run β Preview. Check that each team's amount matches the locked chargeback from Step 6, then click Post to QuickBooks and confirm.
A contra-method entry looks like this, for $1,000 of AI spend split 60/40:
| Line | Account | Class | Debit | Credit |
|---|---|---|---|---|
| 1 | AI Platform Costs | Engineering | 600.00 | |
| 2 | AI Platform Costs | Sales | 400.00 | |
| 3 | AI Cost Allocations | (none) | 1,000.00 |
Debits always equal credits. If an amount doesn't split evenly, Meridian puts the rounding cent on the largest line so the entry still balances exactly.
Why you can't post the same month twice: Meridian blocks a second post for the same company, month and posting method. This prevents double-charging a team if someone clicks Post twice. Don't switch the posting method to get around this, because that would post the month a second time. If you genuinely need to re-post a month, void the original entry in QuickBooks and contact support@onaro.io. Voiding in QuickBooks alone doesn't clear Meridian's record of the post.
Every post appears under JE posting history on the QuickBooks Online page, with the QuickBooks entry number. Click Download CSV to export it.
Step 8: Check the result in QuickBooks
In QuickBooks: Reports β Profit and Loss by Class, for the posted month.
You should see:
- AI Platform Costs split across your team columns (for example, Engineering 600, Sales 400)
- AI Cost Allocations at -1,000 under Not specified
- A net effect of zero company-wide: the chargeback moves cost between teams, it doesn't add cost
Why check this report: it's the view your finance team will use to see who spent what on AI, and confirming it on the first post catches any mapping mistake immediately.
Choosing a posting method
| Contra (default) | Straight reclass | |
|---|---|---|
| Credit side goes to | A separate offset account (AI Cost Allocations) | The same expense account, with no class |
| The paying team sees | Full gross spend and a visible recovery line | Spend drops as it's charged out |
| Best when | A central team (IT, platform) owns the AI bills and wants to show what it recovered | You just want costs to sit with the teams, with no gross-up |
Both are standard practice; ask your controller which your company prefers. You can change the method in Meridian at any time, and it applies to future months.
Disconnecting and reconnecting
- From Meridian: Integrations β Destinations tab β QuickBooks Online card β Manage β Disconnect, then confirm. Meridian revokes its access with Intuit and deletes the stored key.
- From QuickBooks: Apps β My apps β Meridian GL Bridge β Disconnect. Intuit sends you to a Meridian page confirming "QuickBooks is disconnected", and Meridian clears the connection.
Either way, entries already posted stay in QuickBooks untouched. Reconnecting the same company later keeps your saved mapping.
Why you might see "Reconnection required": QuickBooks access expires if it goes unused for a long time, or if a QuickBooks admin revokes it. The QuickBooks Online page shows "Reconnection required", and the card on the Integrations page shows "Reauth required". Click Connect QuickBooks and approve again. Nothing is lost.
Troubleshooting
| Message or symptom | What it means | Fix |
|---|---|---|
| "No locked chargeback periods" or "Cannot post: chargeback period is not locked" | Posting requires final numbers | Lock the month (Step 6) |
| "β¦ already posted to QuickBooks as JE β¦" | Duplicate-post protection | If you really need to re-post, void the original entry in QuickBooks and contact support |
| "Mapped expense account is inactive in QBO", "Mapped offset account is inactive in QBO" or "Mapped class for pool β¦ is inactive in QBO" | Something was deleted or made inactive in QuickBooks | Reactivate it, or update the mapping (Step 5) |
| "Cannot post: cost pool β¦ has no QBO class mapping" | A cost pool in the chargeback isn't mapped to a class | Map it under Cost pool β QBO Class and click Save mapping (Step 5) |
| No class dropdown / classes missing | Class tracking is off | Step 1 |
| "Reconnection required" or "Reauth required" | Access expired or was revoked | Click Connect QuickBooks and approve again |
| Totals look doubled in P&L | Bills and chargebacks both land in AI Platform Costs, which is expected with the contra method | Check the net: AI Platform Costs minus AI Cost Allocations equals your actual spend |
When contacting support (support@onaro.io), include the month, the company name and any error message. If a post failed, click Download CSV under JE posting history and include the error column for that row. It contains Intuit's reference ID, which lets us trace the exact request with Intuit.