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
Navigate to Settings > Accounting Integration
Click Connect Accounting System — a secure popup will appear
Select your accounting platform (QuickBooks Online or NetSuite)
Log in and authorize ImpactGraph to access your data
Once connected, ImpactGraph automatically imports your Chart of Accounts
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:
You'll complete a brief questionnaire about how you track organizations, funding sources, and programs in your accounting system.
The ImpactGraph team configures your mappings based on your responses.
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:
Chart of Accounts and Organizations — synced first, in parallel
Funding Sources — depends on organizations being synced
Coding Dimensions — depends on organizations
All Transactions — expenses, bills, invoices, journal entries, deposits, transfers, sales receipts — synced in parallel
Custom Transactions — NetSuite only, after standard transactions
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 |
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.
