CSV, QuickBooks, webhooks and the warehouse feed
A batch as a CSV with the mapped codes; QuickBooks Online through the same batch machinery; signed webhooks for posted, recorded, approved and paid events; the nightly line-level CSV for a warehouse.
CSV. Any batch downloads as one sheet — date, journal, line, our account, the mapped code and name, debit, credit, memo, narration, hotel — the same shape for every target that imports from a sheet. QuickBooks Online. Set the realm id and the OAuth client and refresh token; pull the chart; a journals batch becomes JournalEntries (our journal number as DocNumber, the Class per hotel when you map one), a documents batch becomes Invoices, Payments, Credit Memos and Bills. Customers and vendors are found by name or created. Webhooks. Give a URL (https) and a signing secret, tick the events — *journal.posted*, *receipt.recorded*, *bill.approved*, *payment.paid*, *export.accepted / rejected*, *posting.applied / rejected*. Each delivery is signed X-Asar-Signature: sha256=HMAC(secret, body) and carries an id; deliver at least once, retried five times with a longer wait; a receiver de-duplicates on the id. Warehouse. *Download lines since…* is every ledger line of the entity with its journal, as CSV; the same call by API (/api/gl/warehouse?entity=&since=) is what a nightly job pulls into a bucket.