QuickBooks Desktop and Tipalti integration
QuickBooks Desktop handles accounts payable and check writing on Windows. Tipalti automates invoice collection, vendor compliance, and mass payments globally. Connecting the two keeps your vendor master aligned, eliminates manual bill entry, and gives Tipalti real-time visibility into payment status in QuickBooks. Invoices Tipalti collects post into QuickBooks as bills, vendor onboarding flows back to Tipalti, and bill payments sync back so Tipalti knows when a check clears.
What moves between them
Invoices flow from Tipalti into QuickBooks Desktop as bills on every invoice_updated webhook, mapped to the correct vendor and GL account. Tipalti vendor (payee) records sync into QuickBooks vendors on payee_details_changed events so the vendor master stays aligned. Bill payment records flow from QuickBooks back into Tipalti after ml-connector detects a new bill payment via polling, updating the payment status so Tipalti shows when a check has cleared. The cycle repeats on a polling interval you configure, typically 5-15 minutes.
How ml-connector handles it
ml-connector stores both the QuickBooks QBWC credentials and the Tipalti SOAP and REST API credentials encrypted. On the QuickBooks side, it holds a persistent SOAP session, refreshing the session token when the handshake expires, and polls QuickBooks for new bill payments on a schedule that matches your AP review cycle. When a Tipalti webhook arrives (invoice_updated or payee_details_changed), ml-connector translates the event into a QBXML bill or vendor request, passing the current session token to QuickBooks. Before writing a bill, it re-queries the vendor to get the latest EditSequence version counter (required by QuickBooks to prevent concurrent edit conflicts), then constructs and sends the QBXML BillAdd or ModifyBill request. After posting a bill payment in QuickBooks, ml-connector reads the bill payment record to extract the check number and posting date, then calls Tipalti's REST payment endpoint to mark the payment as submitted. Webhook signatures are verified with HMAC-SHA256 before processing. All records carry a full audit trail, so if a Tipalti webhook is missed or a QuickBooks request times out (the QBWC timeout is approximately 60 seconds), the transaction can be replayed.
A real-world example
A mid-sized distributor runs QuickBooks Desktop for AP and check writing, and uses Tipalti to collect invoices from 200+ suppliers globally and manage vendor tax compliance. Before the integration, the AP team downloaded invoices from Tipalti twice daily, manually entered each as a bill in QuickBooks, then later matched the check against the original invoice in both systems. Tipalti had no visibility into when a check actually posted, so vendor inquiries had to be manually tracked. With QuickBooks Desktop and Tipalti connected, each invoice Tipalti collects creates a bill in QuickBooks automatically on the correct vendor account. When the AP team writes and prints a check in QuickBooks, the bill payment syncs back to Tipalti, showing the vendor when payment was issued. The manual entry step is eliminated, and both systems stay in sync.
What you can do
- Sync Tipalti invoices into QuickBooks Desktop as bills, mapped to vendors and GL accounts, on every invoice event.
- Keep vendor records aligned between Tipalti and QuickBooks by syncing payee details into vendor accounts.
- Post bill payments from QuickBooks back to Tipalti so the platform knows when a check has cleared.
- Manage QBWC session tokens, version counters, and EditSequence handling to prevent concurrent edit conflicts in QuickBooks.
- Verify Tipalti webhook signatures and retry failed bill entries with a full audit trail for every transaction.
Questions
- How does ml-connector handle the QuickBooks QBWC session token?
- ml-connector maintains a persistent SOAP session with your QBWC service and stores the session token encrypted. When the token expires or a request returns an authentication error, it re-runs the SOAP authenticate() handshake to request a new token. Because QBWC operates sequentially and requires a fresh EditSequence before every write, ml-connector queries the current vendor record just before updating a bill to get the latest version counter and prevent edit conflicts.
- What happens when a Tipalti invoice arrives but the vendor does not exist in QuickBooks yet?
- ml-connector checks the vendor (payee) name against QuickBooks before creating a bill. If the vendor does not exist, it either waits for the vendor to sync from a separate payee_details_changed webhook, or it can be configured to create a basic vendor record with the payee name and default GL account. The bill entry is then retried once the vendor is in place.
- Can ml-connector sync purchase orders from Tipalti to QuickBooks?
- Yes. If a purchase order exists in Tipalti and is linked to an invoice, ml-connector can detect it via Tipalti webhook and create or update a matching purchase order in QuickBooks. The PO header and line items are mapped to QuickBooks item and account dimensions, and the line totals are compared against the invoice total to flag any discrepancies in the audit trail.
Related integrations
More QuickBooks Desktop integrations
Other systems that connect to Tipalti
Connect QuickBooks Desktop and Tipalti
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started