Skip to main content

Accounting Sync

Written by Matt Spurr

ImpactGraph connects to your accounting system through Rutter, a secure integration platform. Syncing keeps your chart of accounts, organizations, funding sources, and transactions in sync between your accounting system and ImpactGraph.

Supported platforms: QuickBooks Online and NetSuite.


Getting Connected

  1. Navigate to Settings > Accounting Integration

  2. Click Connect Accounting System — a secure popup will appear

  3. Select your accounting platform (QuickBooks Online or NetSuite)

  4. Log in and authorize ImpactGraph to access your data

  5. Once connected, ImpactGraph automatically imports your Chart of Accounts

  6. You'll see a confirmation once the initial import is complete

Good to know:

  • Your credentials are never stored by ImpactGraph — authentication goes through Rutter's secure OAuth flow.

  • If your connection becomes unhealthy (e.g., expired credentials), you'll receive an email notification with instructions to reconnect.


Configuring Your Sync

Field Mapping

Your accounting system uses fields like Classes, Departments, Locations, Customers, and Projects to categorize transactions. ImpactGraph lets you map any of these fields to Organizations, Funding Sources, or Custom Objects — all three are optional and independently configurable.

Available accounting system fields:

Accounting System Field

Notes

Class

Hierarchical in QBO

Department

Hierarchical

Location

Hierarchical

Subsidiary

NetSuite hierarchical

Customer

Can be hierarchical

Project

Flat

Custom Field (NetSuite)

Custom segments

Common examples:

  • QBO: Classes → Organizations, Customers → Funding Sources

  • NetSuite: Custom segment → Organizations, Projects → Funding Sources

Entity Selection Modes

For hierarchical data (Classes, Departments, Locations, etc.), you can select:

Selection Mode

What It Syncs

New ERP Entries Auto-Tracked?

All parents

Only root-level (top-level) entries

Yes

All children

Only child entries (non-root)

Yes

Children of specific parents

Only children under selected parent entries

Yes (under selected parents only)

Specific IDs

Only the explicitly selected entries

No — new entries in your ERP must be manually added

For flat (non-hierarchical) data:

Selection Mode

What It Syncs

New ERP Entries Auto-Tracked?

All

Every entry of that type

Yes

Specific IDs

Only the explicitly selected entries

No — new entries must be manually added

Important: When using "Specific IDs" mode, if you create new Classes/Departments/etc. in your accounting system, they will not automatically sync. You'll need to add them to your selection.

Creating Metadata in ImpactGraph

When you create new organizations, funding sources, or custom objects directly in ImpactGraph, they are also created in your accounting system:

  • For hierarchical selections (all parents, all children, children of specific parents): the entry is created at the appropriate tier in your ERP's hierarchy.

  • For specific ID selections: the entry is created at the root level in your ERP.

Current Setup Process

Today, field mapping and selection modes are configured during onboarding:

  1. You'll complete a brief questionnaire about how you track organizations, funding sources, and programs in your accounting system.

  2. The ImpactGraph team configures your mappings based on your responses.

  3. Once configured, syncing follows your mapping rules automatically.

A self-service configuration UI is planned for the future.


What Gets Synced

Data Overview

Your Accounting Data

What It Becomes in ImpactGraph

QuickBooks Online

NetSuite

Chart of Accounts

Ledger Accounts

Yes

Yes

Classes / Departments / Locations / Subsidiaries

Organizations, Funding Sources, or Custom Objects (configurable)

Yes

Yes

Customers / Projects

Organizations, Funding Sources, or Custom Objects (configurable)

Yes

Yes

Vendors

Merchants

Yes

Yes

Expenses

Journal Entries + Transactions

Yes

Yes

Bills (+ payments, credits)

Journal Entries + Transactions

Yes

Yes

Invoices (+ payments, credits)

Journal Entries + Transactions

Yes

Yes

Journal Entries

Journal Entries + Transactions (for bank lines)

Yes

Yes

Bank Deposits

Journal Entries + Transactions

Yes

Yes

Bank Transfers

Journal Entries + Transactions

Yes

Yes

Sales Receipts

Journal Entries + Transactions

Yes

Custom Transactions (SuiteQL)

Journal Entries + Transactions

Yes

How Account Types Map

Your accounting system's account types are mapped to ImpactGraph's standardized categories:

Your Account Type

ImpactGraph Category

Bank

Bank

Accounts Receivable

Receivable

Accounts Payable

Payable

Asset / Other Current Asset

Current Asset

Fixed Asset / Other Asset

Non-Current Asset

Liability / Credit Card / Other Current Liability

Current Liability

Long-Term Liability

Non-Current Liability

Equity

Equity

Income

Operating Revenue

Other Income

Non-Operating Revenue

Expense

Operating Expense

Other Expense

Other Expense

Cost of Goods Sold

Direct Expense

Non-Posting / Unknown

Control

How Transaction Statuses Map

Your Transaction Status

ImpactGraph Status

Paid

Completed

Open, Pending, Partially Paid, Overdue, Submitted, Draft, Unpaid

Processing

Voided, Void, Deleted

Canceled

Vendor / Merchant Sync

  • Vendors from your accounting system are imported as Merchants in ImpactGraph.

  • If the same vendor appears across multiple organizations, a separate merchant record is created per organization.

  • Merchant records are progressively enriched: contact info, address, email, and phone are filled in from your vendor data without overwriting any manual edits you've made in ImpactGraph.


QuickBooks Online vs NetSuite

QuickBooks Online:

  • Organization mapping typically uses Classes.

  • Sales Receipts are supported (point-of-sale transactions).

  • Some Sales Receipt data may come from QuickBooks-specific fields — this is handled automatically.

NetSuite:

  • Organization mapping often uses custom segments (e.g., grant segments, program segments) rather than standard Classes.

  • Custom Transactions are supported via SuiteQL — these include Cash Sales, Checks, Customer Credits, Card Refunds, Cash Refunds, Vendor Credits, and Transfers.

  • Custom transaction types are configured per tenant.

  • Sales Receipts are not applicable (handled via Custom Transactions instead).

  • Hierarchical organization structures (parent/child) are supported.


How Syncing Works

When Does Syncing Happen?

Trigger

When

What Syncs

Initial connection

When you first connect

Chart of Accounts only

Manual sync

When you click "Sync Now"

Everything based on your sync settings

Nightly sync

2:00 AM UTC daily

Full sync (when enabled for your account)

Real-time updates

When data changes in your accounting system

Individual updated records

Sync Order

ImpactGraph syncs your data in a specific order to ensure dependencies are resolved:

  1. Chart of Accounts and Organizations — synced first, in parallel

  2. Funding Sources — depends on organizations being synced

  3. Coding Dimensions — depends on organizations

  4. All Transactions — expenses, bills, invoices, journal entries, deposits, transfers, sales receipts — synced in parallel

  5. Custom Transactions — NetSuite only, after standard transactions

  6. SuiteQL Custom Transactions — NetSuite only, after custom transactions

Tracking Sync Status

  • Each sync creates a trackable job so you can monitor progress.

  • If individual records fail to sync, the overall sync continues — you'll see warnings for any skipped items.

  • After sync completes, you can review counts of records created, updated, and skipped.


Edge Cases & Known Limitations

Transaction Behavior

Scenario

What Happens

What to Know

Transaction with zero amount

Skipped automatically

Zero-amount transactions don't create journal entries — this is expected

Multi-organization transactions

Split into separate entries per organization

A single bill/expense with line items for different organizations creates one journal entry per organization

Bank deposits with linked invoice payments

Creates a clearing entry

To avoid double-counting, deposits linked to invoice payments use a clearing account (Undeposited Funds → Bank) rather than recording revenue again

Transactions without organization tracking

Imported at the tenant level

If a transaction's line items don't have a Class/Department assigned in your accounting system, they'll appear without an organization in ImpactGraph

Line item amounts change on update

Existing entries are replaced

If you change line item amounts in your accounting system, ImpactGraph will delete and recreate the affected journal entry lines to match

Bank deposits with mixed positive/negative lines

Split into separate transactions

Deposit income lines and refund/chargeback lines are tracked as separate transactions to keep amounts clean

Bank transfers

Creates two transactions

One for the sending account and one for the receiving account, plus a single journal entry

Partial bill payments

One transaction per bill allocation

A single payment allocated across multiple bills creates a separate transaction for each bill's allocated amount

Credit memos on bills/invoices

Journal entry only (no transaction)

Credit memos reverse the original accrual — they don't represent cash movement, so no financial transaction is created

Journal entries with bank account lines

Creates transactions for bank lines only

Only line items that touch a bank account generate financial transactions. Non-bank lines are recorded in the journal entry but don't create transactions

Sales receipts (QBO)

Payment is the transaction itself

Unlike invoices, sales receipts don't have separate payment records — the transaction represents both the sale and the cash received

Vendor / Merchant Edge Cases

Scenario

What Happens

What to Know

Vendor not found

Transaction imported without merchant

If a vendor referenced on a transaction hasn't been synced yet or was deleted, the transaction still imports — the merchant field will be empty

Same vendor across multiple organizations

Separate merchant per org

The same vendor in your accounting system creates an independent merchant record in each ImpactGraph organization. This is by design for org-level reporting

Vendor deleted in accounting system

Merchant preserved

The merchant record in ImpactGraph is not deleted. Existing transactions retain their merchant association

Vendor data updated

Progressive enrichment

Only empty fields on the merchant are filled in from vendor data. Fields you've manually edited in ImpactGraph are never overwritten

Bill payments inherit vendor

From parent bill

Payments and credit memos on a bill inherit their vendor/merchant from the parent bill, not from the payment record itself

Journal entry with per-line vendors

Each line resolves independently

Unlike bills/expenses (which have a single header vendor), journal entry lines can each reference a different vendor

Organizational Mapping Edge Cases

Scenario

What Happens

What to Know

Same field mapped to both orgs and funding sources

Hierarchy determines assignment

Root-level entries become organizations; descendants become funding sources (in rollup mode) or all descendants become individual funding sources (in flatten mode)

Deeply nested hierarchy (3+ levels) in rollup mode

Deeper children roll up

In rollup mode, only first-level children become funding sources. Grandchildren and deeper entries roll up to their nearest funding source ancestor

Transaction line item with unmapped Class/Department

Falls back to tenant level

If a line item references a Class that hasn't been synced as an organization, the line appears without an organization in ImpactGraph

Same entity type mapped to organization, funding source, AND custom object

Not allowed

Each accounting system field can only be mapped to one ImpactGraph concept. However, different fields can be mapped independently (e.g., Classes → Organizations, Customers → Funding Sources, Departments → Custom Objects)

Current Limitations

Limitation

Affected Transactions

Details

Payment updates

Bills, Invoices

If a payment on a bill or invoice is modified after initial sync, the update may not fully propagate. Recommended workaround: void the original payment and create a new one

Payment deletions

Bills, Invoices

Deleting a payment in your accounting system may leave orphaned payment entries in ImpactGraph. Contact support if you need these cleaned up

Deleting bills/invoices with payments

Bills, Invoices

Deleting a bill or invoice that has associated payments or credit memos may leave the payment/credit entries in ImpactGraph. Recommended workaround: void payments first, then delete the bill/invoice

Adding payments to existing bills/invoices

Bills, Invoices

If a new payment is added to a bill or invoice after the initial sync, it may not be picked up until the next full sync. Triggering a manual sync will resolve this

Credit memo updates

Bills, Invoices

Updates to credit memos attached to bills/invoices should propagate, but edge cases may exist. If you notice discrepancies, trigger a manual sync

One connection per tenant

All

Each ImpactGraph tenant can only connect to a single accounting system. You cannot sync from both QBO and NetSuite simultaneously

Custom transaction types require configuration

NetSuite SuiteQL

Custom transaction types (Cash Sales, Checks, Customer Credits, etc.) must be explicitly configured per tenant. They don't sync automatically


Troubleshooting

Connection Issues

Issue

What to Do

"Connection lost" or reconnect email received

Go to Settings > Accounting Integration, click Reconnect, and re-authenticate with your accounting system

Chart of accounts didn't import after connecting

Wait a few minutes — the initial data pull runs in the background after Rutter signals it's ready. If it still hasn't appeared after 5 minutes, try triggering a manual sync

Wrong accounting platform showing

Disconnect and reconnect, selecting the correct platform

Connection shows as "unhealthy"

Your accounting system credentials may have expired or been revoked. Click Reconnect and re-authenticate. Common causes: password change, MFA reset, or admin revoking access in your accounting system

Reconnect email received but connection seems fine

The email is triggered when Rutter detects a connection issue. Even if things look OK in ImpactGraph, go to Settings > Accounting Integration and verify the connection status. If it shows healthy, no action is needed

Missing Data After Sync

Issue

What to Do

Transactions are missing

1. Check that "Sync Transactions" is enabled in your sync settings. 2. Verify the transactions have a status of Open or Paid — voided and deleted transactions are marked as Canceled and may not appear in default views. 3. Check if the transaction was created after the last sync — trigger a new sync or wait for the nightly sync

Organizations are missing

Ensure your field mapping is configured (e.g., Classes → Organizations) and that the Classes/Departments exist in your accounting system. If using "Specific IDs" selection mode, check that the new entries have been added to your selection

Transactions show no organization

The transaction's line items are missing the Class/Department/custom field in your accounting system. Add the appropriate field to those transactions in your ERP, then re-sync

Funding sources are missing

Ensure funding source mapping is configured and that organizations have been synced first. Funding sources depend on organizations — if org sync is disabled or hasn't run yet, funding sources can't be created

Vendor/merchant info is missing

The vendor may not exist in your accounting system, may have been deleted, or may not have synced yet. Vendors are fetched at the start of each transaction sync batch. The merchant will appear on the next sync if the vendor exists

New Classes/Departments not syncing

If you're using "Specific IDs" selection mode, new entries in your ERP won't auto-sync. You'll need to add them to your selection. Switch to an "All parents" or "All children" mode for automatic tracking

Bill payments/credits not showing

Bill payments and credit memos are synced as part of the bill sync process. If the parent bill synced but payments didn't, trigger a manual sync. If the bill was recently modified in your ERP, the payments may sync on the next run

Bank deposit amounts don't match

Bank deposits with linked invoice payments use a clearing entry (Undeposited Funds → Bank) instead of recording revenue. This prevents double-counting when the invoice was already recorded separately. The amounts are correct — the clearing entry just looks different from a standard deposit

Journal entry has transactions for some lines but not others

Only journal entry lines that touch a bank account generate financial transactions. Non-bank lines (e.g., expense-to-revenue entries) are captured in the journal entry but don't create separate transactions

NetSuite custom transactions not syncing

Custom transaction types (Cash Sales, Checks, etc.) must be explicitly enabled in your tenant configuration. Contact support to verify your custom_suiteql_types setting

Sync Errors

Issue

What to Do

"Sync already in progress"

A previous sync is still running. Only one sync can run at a time per tenant. Wait for it to complete before starting another. If you believe the previous sync is stuck, contact support

Sync completes with warnings

Review the warnings — they typically indicate records that were skipped (e.g., zero-amount transactions, missing account mappings). These are usually expected and safe to ignore. If you see unexpected warnings, check the specific records in your accounting system

Sync fails entirely

1. Check that your accounting connection is healthy (Settings > Accounting Integration). 2. If unhealthy, reconnect and re-authenticate. 3. If healthy but sync still fails, the issue may be transient — try again. 4. If the problem persists, contact support with the sync job ID

Sync takes a long time

Large data sets (thousands of transactions) take longer. Transaction types sync in parallel, but the overall sync waits for all stages to complete. Initial syncs are typically slower than subsequent ones since later syncs only process changes

Some records synced but others failed

ImpactGraph processes records individually — if one record fails, the rest continue. Check the sync results for skipped item counts and warnings. The failed records will be retried on the next sync


FAQ

General

Can I sync with multiple accounting systems? No, each ImpactGraph tenant connects to one accounting system at a time.

Can I disconnect and reconnect? Yes. Go to Settings > Accounting Integration to disconnect. Your previously synced data remains in ImpactGraph. Reconnecting will resume syncing from where you left off.

What happens if I switch accounting systems (e.g., QBO to NetSuite)? You'll need to disconnect from your current system and connect the new one. Your existing ImpactGraph data from the old system will remain, but new syncs will pull from the new system. Contact the ImpactGraph team before switching to ensure your field mappings are reconfigured.

How often does nightly sync run? Daily at 2:00 AM UTC, when enabled for your account. Contact support to enable or disable nightly sync.

Data & Accuracy

Will syncing overwrite my manual edits in ImpactGraph? For merchant/vendor records, ImpactGraph uses progressive enrichment: empty fields are filled in from your accounting system, but fields you've manually edited are never overwritten. For transaction data, synced values from your accounting system take precedence.

Why do I see more journal entries in ImpactGraph than transactions in my accounting system? Each accounting transaction (bill, expense, invoice, etc.) generates one or more journal entries and potentially one or more financial transactions. For example, a bill creates an accrual journal entry (recording the liability), and each payment on that bill creates an additional cash journal entry. This is standard double-entry accounting — ImpactGraph is showing the full picture.

Why does a single bill/expense create multiple journal entries? If a bill or expense has line items tagged to different organizations (Classes/Departments), ImpactGraph creates a separate journal entry for each organization. This ensures each org's financials are self-contained.

Why don't credit memos show up as transactions? Credit memos represent accounting adjustments (reversals of accrued amounts), not cash movements. They appear as journal entries but don't generate financial transactions because no money actually moved.

A transaction is "Canceled" in ImpactGraph but not voided in my accounting system — why? ImpactGraph maps both "Voided" and "Deleted" statuses to "Canceled." If the transaction was deleted (not voided) in your accounting system, it still shows as Canceled in ImpactGraph.

Vendors & Merchants

Why do I see duplicate merchants for the same vendor? If the same vendor appears across multiple organizations, ImpactGraph creates a separate merchant record per organization. This is by design — it enables org-level merchant reporting and allows each organization to independently manage their merchant details.

I updated a vendor's address in my accounting system but it didn't change in ImpactGraph — why? Progressive enrichment only fills in empty fields. If the merchant's address was already set in ImpactGraph (either manually or from a previous sync), the new value won't overwrite it. To pick up the new address, clear the field in ImpactGraph first, then re-sync.

Sync Behavior

Can I sync just one transaction type (e.g., only bills)? Not currently. The "Sync Transactions" toggle controls all transaction types together. They sync in parallel for performance.

What's the difference between "Manual sync" and "Nightly sync"? They run the same process. Manual sync is triggered by clicking "Sync Now" in the UI. Nightly sync runs automatically at 2:00 AM UTC. Both follow the same sync order and respect your sync settings.

Does ImpactGraph push data back to my accounting system? When you create new organizations, funding sources, or custom objects in ImpactGraph, those are created in your accounting system (e.g., as new Classes or Customers). Transaction data flows one way: from your accounting system into ImpactGraph.

What happens during a sync if my accounting system is temporarily unavailable? The sync will fail for any data it can't fetch. Records that were successfully fetched before the outage may still be processed. The next sync (manual or nightly) will pick up anything that was missed.

Bills & Invoices

I voided a payment on a bill. Why does the payment still show in ImpactGraph? This is a known limitation. Payment deletions and voids may not fully propagate. Recommended workaround: contact support to clean up orphaned payment entries, or trigger a full re-sync.

I deleted a bill that had payments. Now I have orphaned payment records — what do I do? This is expected behavior with the current sync. Best practice going forward: always void payments on a bill before deleting the bill itself. For existing orphans, contact support to clean them up.

A bill was partially paid, then the amount changed. Why don't the numbers match? Modifying payment amounts after initial sync is a known limitation. The safest approach: void the original payment, then create a new payment with the correct amount. This ensures ImpactGraph picks up the change cleanly on the next sync.

Did this answer your question?