Private preview of the new site. Not live.

Sync with QuickBooks

Doing Work doesn't connect to QuickBooks itself. The shop's agent does the sync, on the schedule the shop picks. Daily is a good default.

Each run

  • Call sync.changes with the next_cursor you saved last time. The first run can start from updated_since. Page until has_more is false, then save the last next_cursor.
  • Each row is one invoice, payment, refund or customer with its current details, so you never replay history.
  • If external_refs has a quickbooks id, update that QuickBooks record. If not, look for a match, create one if there is none, then call sync.setRef with the QuickBooks id.
  • A record can show up again in a later run. The saved id makes that safe: running the same sync twice changes nothing.
  • To catch anything missed, call sync.changes with system=quickbooks and unsynced=true. sync.findRefs goes from a QuickBooks id back to the Doing Work record.

Match bank deposits

List payouts with payouts.list and read each with payouts.get. It lists every payment and refund in the payout with the processor fee, the Doing Work fee and the net. The nets add up to the deposit. Record both fees as expenses so the deposit, the invoices and the fees line up. The payout.paid event tells you when a new payout lands.

Owner or office only. Amounts need the see_prices permission.