Accounting and ERP
QuickBooks Online and Desktop, Xero, NetSuite, Sage Intacct, Sage 100 and 300, Acumatica, Dynamics 365 Business Central, Odoo, and SAP Business One.
Platform · platform & data
An integration is not a connector. A connector moves records; an integration keeps two systems agreeing about the same facts through schema drift, outages, retries, and the day somebody edits a record in the other system by hand. Most integration projects buy the first and are billed for the second.
What it does
QuickBooks Online and Desktop, Xero, NetSuite, Sage Intacct, Sage 100 and 300, Acumatica, Dynamics 365 Business Central, Odoo, and SAP Business One.
Plaid, direct bank feeds, Stripe, Adyen, Modern Treasury, Mercury. Charges, refunds, disputes, fees, and payouts read separately rather than as net deposits.
Gusto, Rippling, ADP, Paylocity, TriNet, and Deel — with the department and project dimensions preserved rather than collapsed into a single journal line.
Salesforce, HubSpot, Pipedrive, Close, and Marketo, mapped so the customer in the CRM and the customer in the ledger are the same object rather than two records with similar names.
Shopify, Amazon, WooCommerce, Chargebee, Recurly, and Zuora, with settlement reconciled to deposits rather than assumed.
Jira, Asana, Linear, Monday, ClickUp, Harvest, plus Snowflake, BigQuery, and object storage for anything downstream.
Any competent engineer can call an API and write the results somewhere. What fails, months later and quietly, is everything around it: an API version deprecates, a webhook is missed during a deploy, somebody edits a record directly in the source, a retry double-writes, a field that was always populated starts arriving null.
None of those raise an error. They produce a slow divergence that surfaces at close, when somebody notices that the number here does not match the number there and nobody can say when it started.
Every connector runs a daily reconciliation independent of the sync itself: counts, control totals, and spot-checked records compared between source and graph. A mismatch raises an alert with the records attached rather than waiting to be discovered.
That check is deliberately not built from the same code as the sync. A reconciliation that shares its assumptions with the process it is checking will confirm those assumptions rather than test them.
Every write carries an idempotency key derived from the source record and its version, so a retried delivery updates rather than duplicates. Duplicate transactions from a retried webhook are one of the most common integration defects we are called in to clean up, and they are tedious to unwind after the fact because the duplicates are individually valid.
QuickBooks Desktop has no cloud API. Extraction runs through the SDK against a company file on a machine somebody maintains, and it is roughly three times the elapsed work of the online edition — which is why we quote it separately rather than pretending the two are the same job.
Older on-premise systems and anything reached through a database read replica or a nightly file drop are scoped case by case. We will say in the first conversation which of those yours is, because discovering it in week six is how integration projects go over.
Limits
Some are file-based, some are screen-scraped, some are genuinely closed. We will tell you which yours is before you buy rather than after.
Bidirectional writes need an authoritative side per field. Where a customer wants two-way on a field with no clear owner, we recommend against it and say why.
Several accounting APIs are slow enough that a full historical extract takes days. We plan around that rather than promising an overnight backfill.
Questions
We will confirm what connects, what needs building, and what we would leave alone.