ml-connector
QuickBooks OnlineBasware

QuickBooks Online and Basware integration

QuickBooks Online tracks the general ledger and vendor transactions for a business. Basware automates the full invoice lifecycle from receipt through payment and archive. Connecting them keeps your AP records synchronized and your vendor master aligned across both systems. Invoices received in Basware post into QuickBooks Online with the correct accounts and cost allocations, and new vendors created in one system appear in the other without manual entry.

How QuickBooks Online works

QuickBooks Online exposes vendors, customers, employees, accounts, departments, classes, bills, purchase orders, and journal entries through its REST API (Accounting API v3) at a tenant-specific realm ID. OAuth 2.0 with a 1-hour access token and auto-rotating refresh token handles authentication. QuickBooks Online supports webhooks on Create, Update, Delete, and Merge events for most transaction and master entities, and also provides a CDC (Change Data Capture) endpoint with 30-day history for pull-based sync. Webhook payloads contain only the entity ID and name, so ml-connector must fetch the full record via GET. Refresh tokens rotate every 24-26 hours and expire after five years, forcing re-authorization if the token chain breaks.

How Basware works

Basware provides REST APIs for AP automation, covering invoices, purchase orders, vendors, accounts, and dimensions across regional deployments (EU, US, AU, CA). OAuth2 client credentials and HTTP Basic Auth (for the Network API) secure the endpoints. Basware webhooks fire on P2P API events (accountingDocuments, exportedPurchaseOrders, exportedContracts), but the Network and Data Access APIs are pull-only and require polling. Webhook signatures are verified with HMAC-SHA256. Every Network API request must carry a unique X-BW-REQUEST-ID header. OAuth2 tokens default to 1-hour validity. Manual vendor edits in the Basware UI are overwritten on the next API import, so edits must be made via API to persist.

What moves between them

Accounting documents flow primarily from Basware into QuickBooks Online. When Basware receives an invoice, ml-connector posts it into QuickBooks Online as a Bill or Journal Entry, mapped to the matching department and GL account. Purchase orders and vendor records flow in both directions: new vendors created in Basware are registered in QuickBooks Online, and vendor changes in QuickBooks Online are pulled back to keep master data synchronized. Cost allocation and account dimensions are aligned bidirectionally so AP line items post to valid QuickBooks Online accounts and departments. The sync runs on a schedule tied to your invoice approval and payment cycles.

How ml-connector handles it

ml-connector stores both OAuth2 credential sets encrypted and manages the QuickBooks Online refresh token rotation, re-requesting a new token before the current one expires so the sync never breaks mid-cycle. It accepts the regional Basware endpoint (EU, US, AU, CA) per customer and validates it at configuration time. Basware webhooks include an HMAC-SHA256 signature in the X-BWAPI-Signature-256 header; ml-connector validates the signature on every push. For pull-only endpoints (Network and Data Access APIs), ml-connector polls on a schedule and includes the required X-BW-REQUEST-ID header (a unique UUID v4) on every request. QuickBooks Online webhook payloads require a second fetch to retrieve full record details; ml-connector batches these to reduce API calls. Accounts and departments are mapped first so every invoice line lands on a valid QuickBooks Online dimension. Because manual vendor edits in Basware revert on the next import, ml-connector enforces a last-write-wins strategy: edits via API take precedence, and UI edits are re-synced on the next cycle. Basware does not initiate outbound payments, so payment confirmations flow back through paymentResponses webhooks into Basware to keep transaction status current.

A real-world example

A mid-market professional services firm processes invoices through Basware for vendor approval and three-way matching, then moves approved invoices into QuickBooks Online for GL posting and payment scheduling. Before the integration, the accounting team exported invoice registers from Basware weekly and manually entered the GL account and department for each invoice into QuickBooks Online, which created a 3-4 day delay and often introduced GL mismatches. With QuickBooks Online and Basware connected, each approved invoice flows automatically into the correct department and account, the vendor master stays synchronized across both systems, and the accounting team moves the posting step to the payment approval workflow instead. Month-end close now starts with all invoices already posted and reconciled to vendors.

What you can do

  • Sync invoices and bills from Basware into QuickBooks Online with automatic GL account and department allocation.
  • Keep vendor master data synchronized in both directions so new vendors are registered automatically.
  • Validate and map cost dimensions and account structures so AP line items post to valid QuickBooks Online accounts.
  • Bridge QuickBooks Online refresh token rotation and Basware regional OAuth2 credentials so authentication never breaks mid-sync.
  • Poll Basware Network and Data Access APIs on a configurable schedule while receiving push notifications from P2P webhooks.

Questions

Which direction does invoice data move between QuickBooks Online and Basware?
Invoices flow primarily from Basware into QuickBooks Online as bills or journal entries, mapped to the correct department and GL account. Vendor master data and cost allocations flow in both directions so the two systems remain synchronized. Payment confirmations flow back from QuickBooks Online to Basware via paymentResponses webhooks.
How does ml-connector handle QuickBooks Online's refresh token rotation and Basware's regional deployments?
ml-connector stores both credential sets encrypted and monitors the QuickBooks Online refresh token expiry, requesting a new one before the current token expires to prevent sync failures. It accepts the regional Basware endpoint (EU, US, AU, CA) at setup time and routes all requests to the correct region. Both OAuth2 chains are validated at configuration time.
What happens when vendor data is edited in the Basware UI instead of via API?
Manual vendor edits in the Basware UI are overwritten on the next API import, so ml-connector enforces a last-write-wins strategy: API edits take precedence and are preserved across syncs, while UI edits are re-synced on the next cycle. This ensures the authoritative vendor source is always the API, not manual changes.

Related integrations

Connect QuickBooks Online and Basware

Free to use. Add your credentials, ping your real systems, and see if we fit.

Get started