QuickBooks
Pull QuickBooks invoices and payments into /v1/sales-invoices and /v1/payment-entries.
The snag
Finance teams double-key invoices between QuickBooks and their operating system, and cash reporting is always a week behind.
How Zivvy helps
OAuth into QuickBooks Online, poll the Invoice and Payment endpoints, and upsert into /v1/sales-invoices and /v1/payment-entries.
Before Zivvy
Handoffs go missing, owners are unclear, audits get painful.
What you get
- Pull QuickBooks invoices → /v1/sales-invoices
- Payments landing in QuickBooks mirror to /v1/payment-entries
- COA + tax codes mapped one-time during setup
Workflow stream
Common uses
01
QuickBooks Invoice → /v1/sales-invoices with tax breakout
02
QuickBooks Payment → /v1/payment-entries reconciled
03
Journal entries synced to /v1/journal-entries
Integration code
Open API referenceImport a QuickBooks invoice
curl -X POST https://integrate.zivvy.xyz/v1/sales-invoices \
-H "Authorization: Bearer $ZIVVY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": "Acme Corp",
"external_id": "qbo-inv-101",
"posting_date": "2026-07-24",
"items": [{ "item_code": "SVC-CONS", "qty": 4, "rate": 250 }]
}'Poll QBO and upsert
import { getQBO, getZivvy } from "./clients";
export async function syncInvoices(sinceISO) {
const qbo = await getQBO();
const zv = getZivvy();
const invoices = await qbo.query(
`select * from Invoice where MetaData.LastUpdatedTime > '${sinceISO}'`
);
for (const inv of invoices.QueryResponse.Invoice) {
await zv.salesInvoices.upsert({
external_id: `qbo-${inv.Id}`,
customer: inv.CustomerRef.name,
posting_date: inv.TxnDate,
items: inv.Line
.filter(l => l.DetailType === "SalesItemLineDetail")
.map(l => ({
item_code: l.SalesItemLineDetail.ItemRef.name,
qty: l.SalesItemLineDetail.Qty,
rate: l.SalesItemLineDetail.UnitPrice
}))
});
}
}API endpoints
Events emitted
HMAC-SHA256 signed webhooks, retried for 24 hours.
- sales-invoices.submitted
- payment-entries.paid
- journal-entries.submitted
0
free seats forever
0
card required to start
1
workspace for the workflow
Questions
Ready to try it?
Free plan. Two seats. No card.