Skip to main content
QuickBooks is where money is counted. The engine writes customers, items and invoices into it, and reads each invoice’s totals back to check they agree. Nobody types an invoice into QuickBooks by hand.

What QuickBooks holds, and who writes it

The invoice number in QuickBooks is our INV number, so the two are always the same document.

Payments

QuickBooks does not call the engine, and nothing here goes looking through QuickBooks for payments. A payment made on the pay page is posted into QuickBooks by the processor, and recorded here by the engine at the same time; the engine does the rest of the paperwork from its own record. See How payments work. A payment the office types into QuickBooks by hand reaches nothing else, and the nightly check finds the difference.

Rules worth knowing

  • A payment must be applied to an invoice. A payment with no invoice is flagged for a person and nothing else happens.
  • The method shown in Zoho says how the customer paid: Credit Card for a card, ACH for a bank transfer. The CRM’s list also holds Cash, Cheque and e-Transfer for payments taken another way.
  • A void in QuickBooks is recognised by its zeroed amounts and the “Voided” note QuickBooks writes; QuickBooks puts no status on an invoice.
  • Every night the monitor compares each live invoice’s total here, in QuickBooks and in Zoho, and its balance where the pay page keeps the accounting, and holds a condition open in Sentry for any that differ by more than two cents. See Monitor checks and How the monitor works.

Where the keys live

The QuickBooks connection is an app authorised once by the owner. Its client id and secret sit in the functions’ secret group; its refresh token rotates on every use and is kept in the engine’s own token table, never in a page or a repo. See Environments and secrets.