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_cursoryou saved last time. The first run can start fromupdated_since. Page untilhas_moreis false, then save the lastnext_cursor. - Each row is one invoice, payment, refund or customer with its current details, so you never replay history.
- If
external_refshas aquickbooksid, 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=quickbooksandunsynced=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.