QuickBooks Online and ShipBob integration
QuickBooks Online tracks your accounting records and general ledger. ShipBob fulfills orders and ships them from its warehouses. When you ship an order through ShipBob, ml-connector captures the shipment event, pulls the order and fulfillment cost details, and posts a journal entry into QuickBooks Online so your revenue and fulfillment expenses are recorded in the same cycle. No manual data entry, no missed shipments, and your books stay current as orders ship.
What moves between them
ShipBob shipment events flow into QuickBooks Online. When a ShipBob order ships, ml-connector receives the shipment webhook, retrieves the order details including items and fulfillment charges, and posts a Journal Entry into QuickBooks Online with Line Items for revenue (linked to the Invoice if already created) and fulfillment costs (linked to a Fulfillment Expense Account). Returns and refunds from ShipBob also post as offsetting Journal Entries to keep accounting accurate. The flow is unidirectional from ShipBob to QuickBooks Online.
How ml-connector handles it
ml-connector registers a webhook endpoint with ShipBob and listens for shipment events. When order.shipped or order.shipment.delivered fires, ml-connector looks up the order and shipment details from ShipBob, matches the order to the corresponding Invoice in QuickBooks Online (by invoice number or custom field), and constructs a Journal Entry with the correct accounts. Revenue Line Items post to the account mapped from the QuickBooks Online Customer, while fulfillment charges post to a pre-configured Fulfillment Expense Account. Webhook signatures are verified with HMAC-SHA256 before processing. ShipBob's shipbob_channel_id header is included on all outbound requests, and oauth access tokens are refreshed when they expire within 15 minutes. Journal Entry SyncToken concurrency control is managed per QuickBooks Online requirements so duplicate shipment events do not create duplicate postings.
A real-world example
A mid-market e-commerce brand sells through multiple channels - their own store, marketplaces, and wholesale. They run QuickBooks Online for accounting and use ShipBob to consolidate fulfillment across regional warehouses. Before the integration, fulfillment and accounting were out of sync for days. Orders would ship from ShipBob, but revenue and fulfillment costs did not post to the general ledger until the finance team manually exported ShipBob billing reports and re-entered the data into QuickBooks Online at month-end. Cash flow reporting was always stale. With ShipBob and QuickBooks Online connected, every shipment posts a journal entry in real time. Revenue and fulfillment costs are recorded when orders ship, not days later. The finance team uses current data for cash flow forecasting and month-end close is faster because the ledger is already up to date.
What you can do
- Post ShipBob shipment events as Journal Entries in QuickBooks Online, recording revenue and fulfillment costs in the correct accounting periods.
- Match ShipBob orders to QuickBooks Online Invoices by order number and link Line Items to customer revenue accounts.
- Map fulfillment charges and return refunds to designated Expense and Revenue accounts in QuickBooks Online.
- Verify ShipBob webhook signatures using HMAC-SHA256 and refresh OAuth tokens automatically before expiry.
- Maintain a complete audit trail of all shipment-to-journal postings with replay capability on failure.
Questions
- Which direction does data move between QuickBooks Online and ShipBob?
- Shipment and fulfillment data flows from ShipBob into QuickBooks Online only. ml-connector listens to ShipBob shipment webhooks and posts Journal Entries and Line Items into QuickBooks Online. QuickBooks Online does not push changes back to ShipBob.
- How does ml-connector match ShipBob orders to QuickBooks Online Invoices?
- ml-connector matches by order number (or a custom field you configure) and looks up the corresponding QuickBooks Online Invoice by Customer and order ID. If the Invoice exists, revenue Line Items link to it. If the order pre-dates the Invoice creation, ml-connector can post the Journal Entry to Undeposited Funds or another holding account and link it later when you reconcile.
- What happens if a ShipBob webhook arrives more than once for the same shipment?
- ml-connector stores the ShipBob shipment ID and order number as unique identifiers, so duplicate webhooks are detected and skipped. QuickBooks Online SyncToken concurrency control prevents duplicate Journal Entries even if a retry occurs.
Related integrations
More QuickBooks Online integrations
Other systems that connect to ShipBob
Connect QuickBooks Online and ShipBob
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started