Trusted by Intuit · SaaS Direct United States 🇺🇸+1 888 706 7227 · Book a Discovery Call →

Success Story

One Line, Two Dimensions: Moving a Nonprofit’s Grant Accounting from Sage Intacct to QuickBooks Online Advanced

Metro Denver Homeless Initiative tagged its Sage Intacct transaction lines with both a grant and a functional-expense department. QuickBooks Online Advanced allows one line-level dimension. Here is how SaaS Direct made one dimension carry both, and moved MDHI off Intacct ahead of a fixed renewal date.

37
Days, First Call to Final Load
2-in-1
Grant + Department on One Class
2,808
Source Files Linked in QBO
3
Days Ahead of Plan

Customer Overview

Metro Denver Homeless Initiative (MDHI) is the Continuum of Care for a seven-county region of Colorado: Adams, Arapahoe, Boulder, Broomfield, Denver, Douglas and Jefferson. It coordinates the regional response to homelessness, including the OneHome coordinated entry system and the region’s homeless management information system (HMIS).

Financially, MDHI is a single-entity nonprofit with a July to June fiscal year. Public Form 990 data shows about $3.8 million in revenue for the fiscal year ended June 2025, most of it contributions and grants. At scoping, the organization had about two dozen staff and about four people working in the accounting system, with payroll processed outside it. Day-to-day accounting, and the client side of the conversion, were led by MDHI’s outsourced accounting firm working with MDHI’s finance leadership.

Grant tracking was the center of the books. Each grant was tracked individually for receipts, spend and remaining balance. MDHI needed to leave Sage Intacct before its July 1, 2026 renewal and land in QuickBooks Online Advanced with that grant reporting intact.

Organization Snapshot

Region
Seven-county Denver metro, CO
Organization
Continuum of Care (nonprofit)
Revenue
About $3.8M (FY June 2025)
Fiscal year
July to June
Migration
Sage Intacct → QBO Adv.
Deadline
Intacct renewal, July 1, 2026

The Challenge

In Sage Intacct, a single bill line could say: this expense belongs to grant A, and it is a Programs cost. The grant answered the funder’s question. The department answered the Form 990 question of how much went to programs, management and fundraising. MDHI relied on both.

QuickBooks Online Advanced offers Class and Location. Class can be set on every line. Location is chosen once for the whole transaction and applies to every line on it, with one exception: journal entries allow Location line by line. On a bill or invoice that splits across grants and departments, only one of the two dimensions can survive at line level.

This is not unique to MDHI. Any grant-funded organization moving from Sage Intacct to QuickBooks Online Advanced with two line-level tags will meet the same wall. The design has to make one tag carry two meanings, and it has to be decided before the data load, not after.

What MDHI needed from QuickBooks Online

Budget and report by grant

The client’s stated need going in, and the reason grants had to live on Class.

Keep the functional-expense split

Management & General, Programs and Fundraising, tagged line by line, feed the Form 990.

Audit support inside the ledger

Auditors sample individual transactions, so source documents had to be attached in QuickBooks Online, not filed elsewhere.

Is this your situation?

Check your Intacct setup before you pick a migration date

  • You tag Intacct transaction lines with more than one dimension
  • Functional expenses for your Form 990 come from one of those dimensions
  • You budget and report by grant, project or program
  • Your auditors sample individual transactions and their support

If you checked two or more, the class design is the critical path of your migration, not the data load.

Designing the Destination

Eight alternatives came before the chosen design. The first six were set aside before the first load. Putting departments in the Location field was the original plan; it failed at the first cutoff load. Splitting transactions by department was the alternative offered on June 29.

Option consideredWhy it was set aside
Opening balances onlyNo transaction-level audit trail in QuickBooks Online, and MDHI’s auditors sample individual transactions.
Journal-entry-only historyLoses the original transaction types and their drill-down, for a cost saving that was minimal next to full history.
Grants as customers, alongside ClassDropped at extraction: the client confirmed grants migrate as Class only, with no other grant fields. Budgeting and reporting run on Class.
Three-level class tree: grant type > category > grantClosest to Intacct’s grant reporting, but the client judged it more complex than MDHI needs.
Suffixes to separate duplicate grant namesReplaced by class codes that join grant ID and grant name, which keeps the same grant in different years distinct on purpose.
Attachments as a folder plus a spreadsheet indexAuditors pulling samples would have to leave QuickBooks Online to find support. The client chose attachments linked inside QBO.
Departments in the Location field (the original plan)Location is set once per transaction; only journal entries allow it per line. At the first cutoff load, bills and invoices lost their department split.
Split each affected transaction by departmentWorkable, but the volume had to be sized before a date could be committed, with the Intacct freeze already under way.

Chosen: departments as parent classes, grants nested beneath

Management & General, Programs and Fundraising became parent classes. Unrestricted grants, including the unrestricted portion of a few foundation grants tracked by funder name, went under Management & General; all other grants went under Programs. Fundraising stayed as a parent class with no transactions mapped to it. Proposed in writing June 29, accepted the same day, mapping confirmed June 30.

The Solution

The engagement ran on a paid assessment, written decisions, and two cutoff loads against a hard freeze. Five working disciplines carried it:

01

Complexity Assessment

Fixed Fee, Not an Estimate

Before quoting, SaaS Direct profiled the Intacct company: counts, structure, dimensions and the reports the client actually used. 123 accounts, 214 grants (87 active) across 7 grant types, 3 departments, 996 vendors and 395 customers. The result was a fixed-fee quote rather than an estimate.

02

Extraction Package

With Written Discussion Points

On June 11 SaaS Direct delivered the full Intacct extraction with a written list of open questions. The client answered the two headline questions the same day, reviewed the package with us on June 12, and confirmed the open decisions on June 15.

03

Data-Quality Decisions

Agreed in Writing

Transactions with no record type came across as journal entries. Missing or duplicated document numbers got unique IDs. Duplicate account names were made unique. The unused Intacct item dimension was dropped, and because the QuickBooks API requires an item on every invoice line, one service item was created per income account.

04

Two Cutoffs and a Freeze

Review Load, Then Final Load

The first cutoff load, with data through March 31, 2026, went to the client on June 24 for review. June 26 was the last working day in Intacct. The final extraction ran June 27, and the final load, with data through June 26, was delivered July 3.

05

Independent Client Review

Every Load, Checked Twice

The client’s accounting firm validated each load independently, comparing trial balances, balance sheets and the Intacct functional-expense report against QuickBooks Online. Six milestone meetings were scheduled in the first week.

Commercial structure

Paid complexity assessment, then a fixed-fee quote. Milestone billing tied to client approval of the extraction package and of the QuickBooks Online test environment. A scope addition after the quote was invoiced separately rather than folded in.

Obstacles, and How We Resolved Them

Six things went wrong or needed a decision mid-project. How a migration partner handles those is a better guide than a clean story, so here they are in full.

The department constraint was found at review, not at design

The original plan put departments in QuickBooks Online’s Location field. After the first cutoff load, the client’s reviewers compared Intacct and QBO reports and found transactions missing departments: on bills and invoices, Location holds one value per transaction. The constraint had not been tested when that plan was set. As the QuickBooks specialists, we should have caught it at design time.

Resolution. Two options in writing on June 29, one chosen the same day, mapping confirmed June 30. The final load still arrived three days early.

Grant classes mapped to the wrong key

In the first load, grant classes pulled the Intacct record number instead of the grant ID. The transformed data was correct; the error was introduced at load.

Resolution. Root cause confirmed June 26; fix applied during the freeze week, before the final load.

AR aging did not tie

Two year-end audit-adjustment journal entries were not tagged to any customer in the Intacct extract. Loaded into QBO, their lines landed on individual customers and the aging stopped matching Intacct. Even before migration, the Intacct AR and AP agings did not tie to the trial balance.

Resolution. The client chose between tagging lines to customers and holding about 20 lines on one miscellaneous customer. They chose agings that match the trial balance.

A verbal requirement never reached the specification

A scoping instruction given on a June call, about limiting which history and records came across, was not written into the specification the technical team worked from. It caused rework and confusion on both sides.

Resolution. Addressed without moving the delivery date. Our rule now: nothing agreed on a call counts until it is in the written discussion points.

Vendor ACH banking details did not come across

In Intacct, vendor bank details lived on the vendor record’s bank file tab. They were clarified as a requirement on June 26, separately from the payment-method flag, which has no QBO equivalent. They were still missing from the final load, and the client had bills to pay.

Resolution. ACH details loaded for 77 vendor records on July 7, four days after the report. The client confirmed on July 8 that the data was in place.

Converted invoices flagged for approval

After go-live, converted invoices, although already paid, showed as requiring approval and filled the QuickBooks Online task list. The client cleared them by hand.

Resolution. Approval-workflow flags on converted transactions are now checked before handover.

Validation

The trial balance built from the extracted Intacct transactions was reconciled to the Intacct trial balance before any data was transformed. The agreed tolerance: AR and AP rounding differences of a few cents booked as a journal entry; anything of a dollar or more traced back to the source transaction.

In parallel, the client’s accounting firm ran its own checks on each load: trial balance and balance sheets, the Intacct functional-expense report against the QBO profit and loss by department, and spot checks of open vendor and customer balances.

Checks on the final load

  • Opening trial balance, Intacct against QuickBooks Online
  • Balance sheet at each fiscal year-end
  • Income statement at each fiscal year-end
  • AR and AP agings at each fiscal year-end and at the June 26, 2026 cutoff
  • Statement of Activity by Class
  • Exceptions file: transactions with no class in Intacct, assigned their department’s parent class and listed for the client
Migrated

2,808files

2,552 attachment records uploaded to QuickBooks Online and linked to their transactions, so auditors can pull support without leaving the ledger.

Archived, not migrated

658files

640 attachment records not linked to any transaction, or linked only to transactions before the migration period, delivered in the full Intacct archive with a mapping workbook.

The Results

Off Intacct Before the Renewal Date

MDHI left Intacct on its last working day, June 26, with the final extraction complete on June 27, ahead of the July 1 renewal.

Grant and Functional-Expense Reporting on One Class

Budgeting and grant reporting run on one class hierarchy that also carries the Management & General, Programs and Fundraising split for the Form 990.

Audit Support Inside the Ledger

2,808 source files are linked to their transactions in QuickBooks Online. Attachment linking finished July 23, as agreed, after go-live.

Delivered Early, 37 Days After the First Call

The final load was delivered July 3 against a July 6 plan. The team was working day to day in QuickBooks Online by mid-July.

Project timeline

Five weeks from discovery call to final load, against a renewal date that could not move. The final extraction was complete before the renewal, and the one design change was proposed, accepted and mapped within four days of being reported.

  1. May 27First discovery call
  2. June 1Complexity assessment complete; fixed-fee quote
  3. June 11Extraction package and discussion points delivered
  4. June 15Extraction decisions confirmed
  5. June 24First cutoff load delivered for review
  6. June 26Last working day in Intacct; department gap reported
  7. June 27Final extraction, ahead of July 1 renewal
  8. June 29Class redesign proposed and accepted
  9. July 3Final load delivered (plan: July 6)
  10. July 7ACH details loaded for 77 vendors
  11. July 23Attachment linking complete

Why It Worked

A Fixed Quote from a Paid Assessment

The client knew the price of the agreed scope before committing. A scope addition after the quote was invoiced separately rather than folded in.

Decisions in Writing, Answered Fast

Open questions went into a written discussion-points document, and the client turned answers around quickly, often the same day. That is how a five-week project stays five weeks.

Options, Not Excuses, When the Design Broke

When the department gap surfaced, the client had two options in writing within three days, and picked one the same day.

Two Cutoffs and a Hard Freeze

A full review load nine days before the final load gave the client’s reviewers time to find what we missed, while there was still time to fix it.

An Engaged Client Review Team

The client’s accounting firm validated every load independently. Several of the issues on this page were found by them, which is the point of the process.

Running Grants in Sage Intacct?

If your Intacct lines carry more than one dimension, we will work through your class design with you before you commit to a date.

Book a migration review →

Download

Download the Case Study

Keep this story as a PDF. The case study summary is built for sharing with your team; the full case study covers every design decision, obstacle and validation step.

Case Study Summary

PDF · 2 pages · 225 KB

The problem, the solution, how we validated it and the result, on two pages.

Download PDF

Full Case Study

PDF · 10 pages · 344 KB

The complete account: starting position, the options we set aside and why, obstacles and how we resolved them, validation and timeline.

Download PDF

Frequently asked questions

Can QuickBooks Online Advanced hold grant and functional expense on one line?

Not as two separate tags. On regular transactions, QuickBooks Online Advanced allows one line-level dimension: Class. For MDHI we built a single class hierarchy, with the functional-expense departments as parent classes and the grants beneath them, so the one class on each line carries both the grant and the functional expense.

Why can’t Location replace a second Intacct dimension on bills?

On bills and invoices, Location holds one value per transaction. A bill split across grants and departments needs a tag on every line, which Class provides. MDHI’s original plan put departments in Location, and the first cutoff load showed transactions missing departments, so the design moved to the class hierarchy.

How do you design Class for Form 990 programs vs grants?

Start from the two questions the reports have to answer: which grant paid for it, and which functional-expense category it belongs to on the Form 990. For MDHI, the functional-expense departments that feed the Form 990, Management & General, Programs and Fundraising, became parent classes and each grant became a child class beneath one of them, so reporting by grant and by functional expense both come from the same class on each line.

How long did MDHI’s Intacct → QBO Advanced migration take?

37 days from the first call to the final data load. The final load arrived July 3, three days ahead of the July 6 plan.

Do source PDFs/attachments migrate into QBO for auditors?

For MDHI, yes: 2,808 source files were linked to their transactions in QuickBooks Online Advanced, so auditors can sample a transaction and see its support inside the ledger. Attachment linking was scheduled to run past go-live and finished July 23, as agreed.

About SaaS Direct

SaaS Direct is a financial systems migration specialist helping businesses and accounting firms transition between legacy and modern platforms. With a proprietary migration code repository spanning 88+ platforms and a disciplined delivery methodology, SaaS Direct handles the technical complexity of accounting transitions so finance teams and advisory firms don’t have to.

Running Grants and Functional Expenses in Sage Intacct?

Talk to us before your renewal date, and bring your list of dimensions. The class design is where this kind of migration is won or lost, and it is the first thing we will look at with you. The destination in this story is QuickBooks Online Advanced, not Intuit Enterprise Suite.

Book a Sage Intacct Migration Review

Pick a time that suits you. You will speak with a migration lead who has moved this exact path, not a call center.