[QODBC Online] Using FQSaveToCache Correctly with Parent and Child Tables
Posted by William - QODBC Support on 29 September 2026 09:18 AM

[QODBC Online] Using FQSaveToCache Correctly with Parent and Child Tables

Problem Description:

When using QODBC Online to insert records into QuickBooks Online tables, queries may fail silently - or appear to succeed on some rows but fail on others - when the FQSaveToCache field is used incorrectly. This commonly occurs after migrating from QuickBooks Desktop (where FQSaveToCache behavior differs) to QuickBooks Online via QODBC Online.

Affected products: QODBC Online, QuickBooks Online
Expected outcome: Insert queries succeed for all intended records by using FQSaveToCache only on child/line-item tables, not on parent tables.

Symptoms:

  • Insert queries into parent tables (e.g., Bill, Invoice, VendorCredit) fail or produce no visible result in QuickBooks Online.
  • A batch of mixed insert queries appears to succeed for some rows but not others - the child table inserts work while the parent table insert silently fails.
  • The QODBC trace log shows the INSERT statement was sent, but no corresponding record appears in QuickBooks Online.

Cause:

In QODBC Online, the FQSaveToCache field is only valid on child (line-item) tables, not on parent tables.

QuickBooks Online uses a parent-child data model for transactions. Parent tables (e.g., Bill, Invoice, SalesReceipt, PurchaseOrder) hold the header information, while child tables (e.g., BillExpenseLine, InvoiceLine, SalesReceiptLine) hold the line-item detail. The FQSaveToCache field tells QuickBooks to queue the record for later processing and should only be used on child tables when building a multi-line transaction.

Using FQSaveToCache on a parent table is invalid in QODBC Online and causes the insert to fail silently - the query does not generate an error message but no record is created.

Resolution:

  1. Identify the table(s) where FQSaveToCache is being used on parent tables. Common parent tables include: Bill, Invoice, SalesReceipt, PurchaseOrder, JournalEntry, Estimate, ReceivePayment, etc.
  2. Remove FQSaveToCache from INSERT statements targeting parent tables. Only keep it on child/line-item table inserts within a multi-line transaction build.
  3. Restructure your queries in the correct order:

Correct Query Pattern (Multi-Line Transaction Build):

When inserting a multi-line transaction and using FQSaveToCache to queue the lines before committing the parent:

-- Child/line-item rows with FQSaveToCache
INSERT INTO "BillExpenseLine" ("ExpenseLineAccountRefListID", "ExpenseLineAmount", "ExpenseLineMemo", "FQSaveToCache") VALUES ('57', 21488.80, 'Current Purchases', 1)

-- Parent row WITHOUT FQSaveToCache (this commits the transaction)
INSERT INTO "Bill" ("VendorRefListID", "APAccountRefListID", "TxnDate", "RefNumber") VALUES ('2909', '37', {d'2024-12-06'}, '120624-3')

Single-Line Transaction (Simple Insert):

If you are inserting a single line-item transaction, FQSaveToCache is not needed at all on either table:

INSERT INTO "Bill" ("VendorRefListID", "APAccountRefListID", "TxnDate", "RefNumber") VALUES ('2909', '37', {d'2024-12-06'}, '120624-3')

Common Parent Tables:

Do not use FQSaveToCache on these tables:

TableDescription
Bill Vendor bill header
Invoice Customer invoice header
SalesReceipt Sales receipt header
PurchaseOrder Vendor purchase order header
JournalEntry Journal entry header
Estimate Customer estimate header
ReceivePayment Payment receipt header
CreditMemo Credit memo header

Example Scenarios:

Scenario 1 - Desktop code migrated to Online:

A company migrated from QuickBooks Desktop to QuickBooks Online and used existing QODBC code that included FQSaveToCache on all INSERT statements. Bill inserts silently failed in the Online environment because FQSaveToCache is not valid on parent tables in QODBC Online. Removing it from the parent table insert resolved the issue.

Scenario 2 - Multi-line build:

A user builds a multi-line bill by inserting expense lines first (with FQSaveToCache=1), then inserts the Bill header. The expense line insert works correctly because FQSaveToCache is valid on child tables. The Bill insert fails if FQSaveToCache is included - remove it from the Bill statement only.

Additional Notes:

  • FQSaveToCache on child tables: When using FQSaveToCache=1 on a child table, all subsequent line-item inserts are queued until the parent record is inserted (which commits the entire transaction).
  • Differences from Desktop: In QuickBooks Desktop via QODBC Desktop, FQSaveToCache behavior may differ. Always test queries against the target environment.
  • Debugging tips: Enable the QODBC trace log to see which INSERT statements are being sent. If the parent table insert appears in the trace but no record shows up in QuickBooks Online, check for FQSaveToCache on the parent statement.

Understanding QODBC Online Data Layouts QuickBooks Online Table Hierarchy Reference

Keywords:

FQSaveToCache Parent Table Child Table Insert Fail Bill Invoice VendorCredit QODBC Online QuickBooks Online SQL Insert Line Item Transaction Build
(0 vote(s))
Helpful
Not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
CAPTCHA Verification 
 
Please complete the captcha below (we use this to prevent automated submissions).