Connecting QuickBooks Online

Connecting your ledger turns an approved invoice into a bill in QuickBooks Online, coded to the vendor, account and property you chose. This page is for the admin who holds the QuickBooks credentials: connector settings, mapping and disconnection are all admin-only, and the API refuses them regardless of what the screen offers.

If you are not on QuickBooks, none of this is required. Export produces a mapped CSV instead, which is covered in the exports reference.

Your QuickBooks edition decides what is possible

This is the one thing worth checking before you start, because it is the cause of most disappointment later.

EditionWhat happens
EasyStart (Canada), Simple Start (United States)No Accounts Payable, so the company file cannot hold a bill at all. Nothing can post.
EssentialsBills post with vendor, account, amount and tax. Lines cannot carry a class, so the property does not travel with the cost.
Plus, AdvancedBills post and each line can carry its property as a class, provided class tracking is switched on in the company file.

InletAP reads these capabilities from the company file itself rather than from the plan name, and says so on the connection when something is missing. A company on Plus with class tracking switched off looks identical to Essentials in the data, so the edition decides which of the two you are told — the cheaper explanation is never assumed.

If the file cannot hold bills, export as CSV and bring the file into your books that way until the company is upgraded.

Connecting

Start the connection from settings. You are sent to QuickBooks, you sign in there, and you choose the company file to post into. InletAP never sees your QuickBooks password; what comes back is an authorization token for the company you selected.

The connection then reports one of three states.

StateMeaning
connectedAuthorized and posting.
action_requiredThe authorization needs renewing before anything else can post.
disconnectedRevoked or expired. Nothing will post until it is reconnected.

If the round trip fails — cancelled at QuickBooks, an expired link, a company on a plan without Accounts Payable — the reason is reported in words rather than as a code, and nothing about your workspace has changed.

Mapping what a bill refers to

A bill cannot post without a vendor and an account, so an unmatched vendor is a blocked invoice rather than an untidy list. The mapping panel counts the gaps first and lets you jump to them.

Sync from QuickBooks to pull in the company's vendors, accounts and classes. Some rows match automatically by name; ties are left for a person, because guessing between two similarly named accounts is exactly the sort of help nobody wants.

What is mappedTo what in QuickBooksWhy
VendorA QuickBooks vendorThe bill posts against it.
GL codeAn expense accountBecomes the account on the bill line.
PropertyA classBecomes the class on the line, so the cost lands on the building. Offered only when the file tracks classes.

Two further accounts sit above the list as defaults, because they answer a question the invoice does not:

  • Default expense account — what a bill line uses when the invoice carries no GL code. Without it, an uncoded invoice cannot post at all, so it counts as a blocking gap.
  • Accounts payable account — which A/P account the bill is owed from. Optional; leave it unset and QuickBooks uses the company's own.

A record created in QuickBooks since your last sync can still be matched by entering its QuickBooks ID directly, so nobody waits on a sync to finish.

Classes, not locations

InletAP sends the property as the class on each bill line. It does not use locations, departments, customers or projects today, and it will not pretend otherwise on a demo. If your books depend on location tracking, the property coding will not reach it, and that is a fair reason to keep exporting a CSV alongside.

What a posted bill looks like

The bill is created against the mapped vendor, with one line per invoice line item — or a single line when the invoice has none.

On the billWhere it comes from
VendorThe mapped vendor
Transaction and due datesThe invoice date and due date read off the document
Reference numberThe invoice number, truncated to the 21 characters QuickBooks allows
Line accountThe GL code mapped to an account, or your default expense account
Line classThe property, when the file tracks classes
TaxThe stated tax, carried by a mapped tax code
Private noteAn InletAP marker with the document reference and the property name

The arithmetic is checked before anything is sent. Line items are pre-tax and the invoice amount is the grand total, so the lines must add up to the total less tax, within a penny. If they do not, the item is held back with both figures named rather than posting a bill that settles at the wrong number. The same applies to stated tax with no tax code mapped: posting it would understate what you owe the vendor, so it waits.

Held items appear in the batch with the reason and the next move — match this vendor, match the GL code, open the invoice — and the export itself is not treated as a failure for the invoices that did post.

The external ID that comes back

When a bill is created, InletAP records the QuickBooks ID it was given against the document, along with the concurrency token and the request identifier used to post it.

That request identifier is minted before the first attempt and reused on every retry of the same post, so a dropped connection replays rather than creating a second bill. It is the difference between an integration you can retry confidently and one where a timeout means a phone call to the vendor about a double payment.

The practical effect: for any invoice you can answer "where did this end up" with an ID rather than a search.

When the connection says action required

The state is not an error message, it is a description. Reconnect from the connectors settings, which repeats the same authorization round trip and keeps your existing mappings.

While the connection is not connected, an attempt to post is refused with a sentence saying why, rather than creating a batch full of held invoices for you to sort out afterwards. Approved invoices are not lost meanwhile; they stay approved and go into the next batch.

Two other actions live on the connection card. Testing it asks QuickBooks to identify itself, which distinguishes an expired token from a bad afternoon at Intuit. Rechecking plan features reads the company's capabilities again, which is what you use after switching class tracking on or upgrading the edition.

Where to go next