How Accounting Setup Validation Works
Source: company.rb, company_accounting_setting.rb
- The system determines which accounting integration is active using a priority order: Xero > MYOB > QBO > Sage > Sage AUS — the first one with a valid ID wins
- Xero setup validation is the most comprehensive: it requires account mappings for ALL product types, payment account mappings, tax type mappings, rounding account, plus Stripe and TillPayments accounts if those payment integrations are enabled
- Branch stores that share an accounting connection must have a store prefix configured for ALL integration types, not just the active one
- Store prefix must be unique within a branch group; the branch owner company cannot set a store prefix (it uses the base prefix)
- QBO setup has a unique additional requirement: a zero tax ID must be configured (used for tax-exempt transactions)
Support scenarios
- "Setup validation says accounts are missing but I've configured everything" → Check if Stripe or TillPayments is enabled — Xero validation requires additional account mappings for each enabled payment integration. Also verify ALL product types have mappings, not just commonly used ones.
- "I can't set a store prefix on the branch owner" → By design, branch owner companies cannot set a store prefix. Only branch store companies need a prefix. The owner uses the default invoice numbering.
- "Store prefix validation is failing" → The prefix must be unique within the branch group. Check if another branch store is already using the same prefix. Also verify that store prefix is set for ALL integration types, not just the active accounting package.
- "QBO setup says I'm missing a zero tax ID" → QBO requires a specific zero tax rate to be configured for tax-exempt transactions. Go to QBO settings and map a zero-rate tax code.