Skip to content
Tally

Every object in the packageon one tree

The data model behind Tally for QuickBooks, generated from the managed package metadata. Salesforce objects on top, QuickBooks mirrors beneath them, documents and their line items in the middle, reference lists below and the plumbing at the bottom.

objects
32
fields
624
master-detail links
7
lookups
40
self-hierarchies
4
platform events
2

The treewith every field

Each card shows the fields that matter most. Open one to see every field it ships with, their types and what they point at.

Open any object to see every field it ships with.
01Salesforce CoreStandard CRM objects, extended with a few packaged fields

Contact

Standard
Contact · 5 fields
  • QuickBooksRefId__ctext
  • Primary_Billing_Contact__ccheckbox

Account

Standard
Account · 2 fields — untouched — no packaged fields

    Opportunity Line Item

    Standard
    OpportunityLineItem · 1 field
    • QuickBooks_Taxable__ccheckbox

    Product

    Standard
    Product2 · 18 fields
    • QuickBooksRefId__ctext
    • QBO_Sync_Status__ctext · formula
    • Last_Synced__cdatetime
    Points to
    Vendor
    02Identity MirrorsCustomers, vendors and saved payment methods, kept in sync with QuickBooks

    QBO Payment Option

    Custom
    Payment_Option__c · 24 fields
    • Quickbooks_Card_Id__ctext
    • Account_Number__cencrypted
    • Tokenization_Status__cpicklist
    saved cards and bank accounts
    Points to
    Contact, Account

    QBO Customer

    Custom
    QBO_Customer__c · 33 fields
    • QuickBooksRefId__cext id
    • SyncToken__ctext
    • Display_Name__ctext
    self-lookup: Parent_Customer__cbill-with-parent
    Points to
    Account

    Vendor

    Custom
    Vendor__c · 54 fields
    • Id__cext id
    • Balance__cnumber
    • Vendor1099__ccheckbox
    full QBO vendor mirror
    03Transaction DocumentsEstimates, invoices, sales receipts and purchase orders

    QBO Estimate

    Custom
    QBO_Estimate__c · 40 fields
    • QBO_RefId__ctext
    • SubTotal__cΣ roll-up
    • Status__cpicklist
    converts to Invoice__cparent object + record id
    Points to
    QBO Customer
    Owns
    QBO Estimate Item
    Converts
    QBO Invoice

    QBO Invoice

    Custom
    Invoice__c · 77 fields — the hub
    • Invoice_Id__ctext
    • SubTotal__cΣ roll-up
    • Amount_Paid__ccurrency
    • Payment_Status__ctext
    self-lookup: Parent_Invoice__crecurring schedule fields
    Points to
    Account, Contact, QBO Customer, QBO Payment Option
    Owns
    QBO Invoice Item, QBO Payment
    Converts
    QBO Estimate

    QBO Sales Receipt

    Custom
    QBO_Sales_Receipt__c · 36 fields
    • QBO_Ref_Id__ctext
    • Sub_Total__cΣ roll-up
    • Payment_Method__ctext
    sale + payment in one
    Points to
    QBO Customer
    Owns
    QBO Sales Receipt Item

    QBO Purchase Order

    Custom
    QBO_Purchase_Order__c · 38 fields
    • QuickBook_RefId__cext id
    • Status__cpicklist
    • Total_Amount__cnumber
    money going out, not in
    Points to
    QBO Customer, Vendor
    Owns
    PO Line Item
    04Line Items & MoneyMaster-detail children: delete the parent and they go with it

    QBO Estimate Item

    Custom
    QBO_Estimate_Item__c · 9 fields
    • Amount__ccurrency · formula
    • Rate__ccurrency
    • Quantity__cnumber
    Points to
    QBO Estimate

    QBO Invoice Item

    Custom
    Invoice_Item__c · 14 fields
    • QBO_Line_Id__cext id
    • Amount__ccurrency · formula
    Points to
    QBO Invoice

    QBO Payment

    Custom
    QBO_Payment__c · 10 fields
    • Amount__ccurrency
    • Status__cpicklist
    Points to
    QBO Invoice

    QBO Sales Receipt Item

    Custom
    QBO_Sales_Receipt_Item__c · 11 fields
    • Amount__ccurrency · formula
    • Quantity__cnumber
    Points to
    QBO Sales Receipt

    PO Line Item

    Custom
    QBO_Purchase_Order_Line_Item__c · 15 fields
    • Type__cpicklist
    • Amount__cnumber
    Points to
    QBO Purchase Order
    05Reference BooksQuickBooks lists synced into Salesforce

    QBO Account

    Custom
    QBO_Account__c · 13 fields
    • AccountType__cpicklist
    self-lookup: ParentRef__cchart of accounts

    QBO Class

    Custom
    QBO_Class__c · 9 fields
    • FullyQualifiedName__ctext
    self-lookup: Parent_Class__c

    QBO Tax Code

    Custom
    TaxCode__c · 9 fields
    • Total_Tax_Value__cΣ roll-up
    Owns
    QBO Tax Rate

    QBO Tax Rate

    Custom
    TaxRate__c · 7 fields
    • Tax_Value__cnumber
    Points to
    QBO Tax Code

    Payment Method

    Custom
    PaymentMethod__c · 6 fields
    • Id__cext id
    Cash · Check · Credit Card

    QBO Custom Field

    Custom
    QBO_Custom_Field__c · 7 fields
    • Entity__cmultipicklist
    Custom Fields API definitions
    Owns
    Custom Field Value

    Custom Field Value

    Custom
    QBO_Custom_Field_for_Invoice__c · 9 fields — junction — one row per doc × field
    • Value__ctext
    • Label__ctext · formula
    Points to
    QBO Custom Field
    06Plumbing, with no hard linksAuth, configuration, logs and events hold no foreign keys that could lock, cascade or block a transaction.

    QBO API Token

    Custom
    API_Token__c · 60 fields

    OAuth access + refresh tokens, realm id, and a mirror of QBO company preferences.

    Configurations

    Setting
    Quick_Book_Configurations__c · 32 fields

    Endpoints, defaults and feature switches: product sync direction, sales receipt sync, the Custom Fields API, card and ACH options.

    Configuration

    Metadata
    Quick_Book_Configuration_New__mdt · 9 fields

    Package-shipped defaults: client id and secret, auth, token and callback URLs.

    Customer Sync Settings

    Setting
    QBO_Customer_Sync_Settings__c · 27 fields

    One checkbox per attribute — field-by-field control over what syncs on a customer.

    Trigger Switch

    Setting
    Trigger_Setting_Switch__c · 1 fields

    One row per trigger, by name, with an IsActive box: turn a trigger off without a deploy.

    QBO Log

    Custom
    Log__c · 24 fields

    Correlation id, direction, payloads, stack trace and duration. Record ids are stored as text, so a log can be written even when its record is gone.

    Action On OLI

    Event
    ActionOnOLI__e · 2 fields

    A platform event that carries an opportunity id and the action that triggered it.

    Populate Invoice Products

    Event
    Populate_QBO_Invoice_Products__e · 13 fields

    The invoice and purchase order product tables subscribe to it: product lines published here appear on the open form.

    Six decisionsbehind the shape

    Each pattern answers a constraint of keeping two systems in sync when both of them think they own the data.

    01

    Mirror QuickBooks, leave CRM objects alone

    Each QuickBooks entity gets its own __c object instead of being packed into Account or Opportunity. Account ships with no packaged fields. Each mirror stores the QuickBooks id of its record, and several also keep the SyncToken__c version stamp QuickBooks requires on every update.

    02

    Master-detail where money rolls up

    Four line-item objects, payments, tax rates and custom field values hang on master-detail. The subtotals on invoices, estimates and sales receipts are roll-up summaries the platform computes, and deleting a document deletes its lines with it.

    03

    Lookups where records outlive each other

    Documents reference customers, tax codes and products through lookups. Retiring a class or deleting a product does not take the invoices that used it along with it. Ownership is kept for lines only.

    04

    A parent pointer that works on any object

    Invoices, estimates, sales receipts and purchase orders store the parent object name and record id as text (for example Parent_Object__c and Parent_Record_ID__c) instead of a hard lookup. That is what lets a document start from an opportunity, a work order or a custom object without the package depending on objects your org may not have.

    05

    QuickBooks' own trees survive the trip

    QuickBooks nests sub-customers, sub-classes and sub-accounts. Their mirrors carry a self-lookup (Parent_Customer__c, Parent_Class__c, ParentRef__c), and Parent_Invoice__c links each recurring invoice to the invoice it was generated from.

    06

    Plumbing holds no foreign keys

    Tokens, configuration, logs and events carry no lookups. Log__c stores record ids as text, so a failed sync can still be logged after its record is gone. Custom settings and metadata sit outside the data model entirely.

    Invoices from any Salesforce recordon a data model you can read