Mapping Your QuickBooks Classes

Coming from QuickBooks? Your Class column can tell NP Ledger two things — which fund the money belongs to, and what the money did.

Updated Aug. 2, 2026

QuickBooks Online has one Class field and nonprofits use it for two very different jobs. Some orgs use it to track restricted money — the fund structure, in disguise. Others use it to track what the money did — program, management and general, fundraising. Plenty of orgs do both, on two axes.

So when you import a QuickBooks General Ledger export, NP Ledger asks you about each class twice:

  • Which fund does it belong to? That's whose money it is.
  • What's its functional class? That's what the money did.

Answer either, both, or neither for each class. NP Ledger remembers your answers and applies them to every future QuickBooks import.

Without the fund answer, every imported transaction goes to your General Fund, and you'd reclassify potentially thousands of transactions by hand after the fact.

Without the functional answer, your imported expenses come in as Unallocated — NP Ledger's honest way of saying it doesn't know. Unallocated expenses aren't wrong, but they hold things up: your Statement of Functional Expenses and Form 990 Part IX can't be right until they're classified, and you can't close a period while any are still sitting there. If your Class column already carries program / management / fundraising, answering here means you never have to re-enter, line by line, something you already exported.

  • Export a General Ledger report from QuickBooks Online that includes the Class column. (This is different from the Transactions by Tag Group report used elsewhere in NP Ledger — see the note at the end.)
  • Know, roughly, which classes are really funds. Some orgs use Class for funds; others use it for programs, locations, or grants. Only the fund-like ones should map to funds — the rest can be ignored.
  • You don't need to create your funds first. You can pick existing funds or create new ones right on the mapping screen.

Step 1: Upload the General Ledger export

Import the QuickBooks GL file the usual way (Spreadsheet Import, or Step 6 of the setup wizard). NP Ledger auto-detects the QuickBooks GL format and opens a preview. If the file has a Class column, a Class → Fund mapping section appears on that preview.

Step 2: Review the discovered classes

The mapping section lists every distinct class found in the file, with its row count and debit/credit totals so you can sanity-check before committing. The totals are there to catch mistakes — a class you didn't expect to be large is a clue you're about to map it to the wrong fund.

Step 3: Map each class

Each class gets two answers. They're independent — a class can be a pure fund, a pure functional class, both, or neither.

Fund — choose one of:

  • An existing fund: pick from your current funds.
  • Create a new fund: a small form captures the fund's name, fund type, restriction type, and purpose category, and the new fund is available immediately. Inline-created funds are always standard funds — this path never creates a pass-through fund (those auto-create a linked liability account and have their own dedicated flow). If you need a pass-through fund, create it separately first, then map the class to it.
  • Ignore this class: transactions on this class import to your General Fund, exactly as they would have before. "Ignore" still counts as resolving the class, so it won't block the import.

Functional class — choose Program Services, Management and General, Fundraising, Unallocated, or Not from this class. Every expense line carrying that class comes in with the class you pick.

NP Ledger fills this in for you when the class name is unmistakable — a class called Fundraising or Management & General or Program:Youth Arts arrives pre-filled, marked "Suggested from the class name." It stays quiet when the name could mean more than one thing. A class called Development could be fundraising or a community-development program; Overhead could be management or program; Gallery North is probably a location. Those come in blank, and that's on purpose — a wrong functional class is worse than none, because it looks settled.

Check every pre-filled row before you save. The suggestion is a starting point, not a decision.

Step 4: Save, then apply

Saving your mappings reloads the preview with an updated badge. Apply stays locked until every class is resolved — either mapped to a fund or set to Ignore. If you'd rather not map anything, you can choose to send everything to the General Fund and proceed. When you Apply, NP Ledger stamps the correct fund on each transaction as it imports, and shows a summary like "312 transactions mapped to Building Fund via class BldgFund."

  • Casing and spacing don't matter. BldgFund, bldgfund, and BldgFund are all treated as the same class and collapse to one mapping. NP Ledger keeps the spelling exactly as it appears in your file for display, but matches on a normalized key (strip + lowercase). This is what lets a class that drifted in spelling across years still resolve to one fund.
  • Hierarchical classes stay whole. A class like Programs:Youth Arts is mapped as a single name — it is not split into a parent and a child. If you need parent/child program tracking, use NP Ledger's Programs and Projects, not funds. (The functional-class suggestion does read the part before the first colon, so Programs:Youth Arts is suggested as Program Services. That's only the suggestion — the mapping itself is still one whole name.)

NP Ledger looks in three places, in order, and stops at the first answer:

  1. The line's QuickBooks class, if you mapped that class to a functional class. This wins because it's per-line — it can say that one rent payment was fundraising and the next was program, which a per-account setting can't.
  2. The expense account's default functional class, if you've set one. This is the fallback for classes that say nothing about function.
  3. Unallocated — nothing told us. These show in their own column on the Statement of Functional Expenses and block period close until you clear them.

You can clear unallocated lines later with the Adjusting Entry wizard, or prevent them next time by setting a default on the expense account. But if the answer was in your QuickBooks file, mapping the class is the shortest path.

You won't find a "With Donor Restrictions" checkbox on a fund, and you don't need one. The fund's restriction is what sets the class. Money you receive into a Restricted fund reports as With Donor Restrictions; money into a General, Board-Designated, or In-Kind fund reports as Without Donor Restrictions. So mapping a QuickBooks class to a restricted fund is exactly what makes those gifts show up as donor-restricted on your Statement of Financial Position and Statement of Activities.

If your imported Chart of Accounts happens to flag a revenue account as with donor restrictions, that works too — gifts to that account are restricted wherever they land. Either signal is enough.

What surprises people: your expenses are always reported as Without Donor Restrictions, even the ones you pay out of a restricted fund. That isn't a bug, and it isn't NP Ledger being opinionated — it's how GAAP works (ASC 958-205-45-6). Spending restricted money is what satisfies the donor's restriction, so the money is first released from the restricted class into the unrestricted one, and the expense is charged there. You'll see that as the "Net Assets Released from Restrictions" line. See Restrictions and Releases.

Saved mappings live under Settings → Imports → Class Mappings. From there an admin can:

  • Edit a mapping's target fund. Editing changes future imports only — it does not silently rewrite transactions you already imported under the old fund.
  • Delete a mapping. Already-imported transactions are untouched; future imports of that class fall back to the General Fund.
  • Apply a correction to history: see below.

Fixing already-imported transactions

If you mapped a class to the wrong fund and have already imported under it, open the mapping and use Apply to history. This is a deliberate, separate action, not something editing does automatically:

  • It shows you, fund by fund, how many historical transaction lines would move, so you can preview before committing.
  • It runs as a single all-or-nothing operation.
  • It's guarded against runaway scale: a remap touching more than 10,000 lines requires an explicit confirmation to proceed.
  • It's reversible. Each apply records one audit event with the exact lines it moved, so you can reverse it and restore the prior fund if needed.
  • After applying, the post-import summary lists each class and the fund its transactions went to. Spot-check that the big classes landed where you expect.
  • On the Funds page, confirm the fund balances look right for the funds you mapped.
  • Re-importing more QuickBooks history later won't re-prompt for classes you've already mapped — they resolve automatically.
  • Mapping a non-fund class to a fund. If a class is really a program, location, or grant — not a fund — choose Ignore in the Fund column and track it with Programs or Projects instead. If it's a functional class (program, management, fundraising), Ignore is almost always right for the fund and the answer belongs in the Functional class column instead. NP Ledger says so on the screen when your whole class list looks that way.
  • Accepting a pre-filled functional class without reading it. The suggestion comes from the class name, and names lie. Read the pre-filled rows once.
  • Expecting a net-asset field on the fund. It's on the account (see above).
  • Editing a mapping and expecting history to change. Editing only affects future imports. Use Apply to history to reclassify past transactions.
  • Looking for the Transactions by Tag Group report. That's a different QuickBooks export for a different feature — it is not an alternative way to get Class data into funds. Class → Fund mapping reads the General Ledger export's Class column.

Open the AI Help panel and try:

  • "How do I map these QuickBooks classes to my funds?"
  • "What happens to classes I ignore?"
  • "How do I reclassify transactions I already imported under the wrong fund?"

Was this page helpful?

Ready to try NP Ledger?

Native fund accounting, Form 990 support, and smarter bookkeeping for nonprofits.