Shopify
Sync Shopify orders, refunds, and inventory with Zivvy /v1/sales-orders and /v1/stock-entries.
The snag
Shopify orders live outside the finance system, so inventory decrements and revenue recognition happen twice.
How Zivvy helps
The ecommerce-integrations add-on maps every Shopify orders/create into /v1/sales-orders and mirrors inventory back to Shopify from /v1/items.
Before Zivvy
Handoffs go missing, owners are unclear, audits get painful.
What you get
- Shopify order → /v1/sales-orders with tax + shipping breakout
- Inventory two-way sync between /v1/items and Shopify variants
- Refunds create /v1/sales-invoices credit notes
Workflow stream
Common uses
01
Shopify orders/create → /v1/sales-orders draft
02
Shopify refunds/create → /v1/sales-invoices credit note
03
Zivvy stock-entries.submitted → Shopify inventory_level update
Integration code
Open API referenceCreate sales order from Shopify
curl -X POST https://integrate.zivvy.xyz/v1/sales-orders \
-H "Authorization: Bearer $ZIVVY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customer": "Shopify Guest",
"external_id": "shopify-order-#1042",
"items": [
{ "item_code": "SKU-001", "qty": 2, "rate": 39.00 }
],
"taxes": [{ "rate": 8.875, "account_head": "Sales Tax - US" }]
}'Shopify webhook handler
import { zivvy } from "./zivvy-client";
export async function onShopifyOrder(order) {
await zivvy.salesOrders.create({
external_id: `shopify-${order.id}`,
customer: order.email,
items: order.line_items.map(li => ({
item_code: li.sku,
qty: li.quantity,
rate: Number(li.price)
}))
});
}API endpoints
Events emitted
HMAC-SHA256 signed webhooks, retried for 24 hours.
- sales-orders.submitted
- sales-invoices.submitted
- items.updated
- stock-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.