QuickBooks Desktop and Ramp integration
QuickBooks Desktop is where you keep your books; Ramp is where your team buys and approves. Connecting them keeps your expense records in sync without manual re-entry. Bills approved in Ramp flow into QuickBooks Desktop automatically, matched to the right vendors and GL accounts. Vendor records stay aligned between the two systems, and you have one complete audit trail from request to cash out.
What moves between them
Bills and approved expenses flow from Ramp into QuickBooks Desktop. When a bill is marked paid or a corporate card transaction clears in Ramp, ml-connector fetches the bill or transaction, maps the Ramp vendor to the matching QuickBooks vendor, maps line-item amounts to the correct GL accounts, and pushes a bill or journal entry into QuickBooks via SOAP. Vendor records created in Ramp are synchronized to QuickBooks so bill matching works correctly. The sync is triggered by Ramp webhooks (real-time on bill/transaction events) but does not push data back to Ramp; QuickBooks is write-only in this direction.
How ml-connector handles it
ml-connector receives Ramp webhook events (bills, transactions, vendors) via HTTPS with HMAC-SHA256 signature verification. For each bill or transaction, it queries Ramp's REST API to fetch full details using the OAuth token, mapping vendor names and GL department codes to QuickBooks vendor and account names. It then establishes a SOAP session with QBWC by calling authenticate() with the customer's username and password, obtaining a session ticket valid for that request batch. For each bill, ml-connector constructs a QBXML BillAdd or JournalEntryAdd request, executes it over SOAP, then logs the result to the audit trail. If the vendor or GL account does not exist in QuickBooks, ml-connector defers the bill and alerts the customer to add the mapping. Because QuickBooks has no idempotency key and EditSequence changes on every modification, ml-connector records the Ramp transaction ID with every entry and polls QuickBooks periodically to detect duplicate sends and prevent double-posting. QBXML requests timeout at approximately 60 seconds, so large batch imports are split into page-sized chunks. The Web Connector operates sequentially on the customer's Windows machine, so there is no parallel request support; ml-connector queues bills and sends them one per SOAP call to avoid overload.
A real-world example
A mid-sized professional services firm runs QuickBooks Desktop on Windows with 60 to 80 employees. They use Ramp for corporate card spend and bill approval, but previously printed Ramp reports weekly and manually entered bills into QuickBooks, a process that took the accounting team 2 to 3 hours per week and introduced data-entry errors. With QuickBooks Desktop and Ramp connected, approved bills and card transactions flow into the books automatically on the day they clear. Vendors are pre-mapped once, line items land on the correct cost centers and GL accounts, and the weekly re-entry task is eliminated. Month-end close now starts with all expenses already recorded and reconciled.
What you can do
- Automatically post approved Ramp bills and corporate card transactions into QuickBooks Desktop on the matching GL accounts and cost centers.
- Keep vendor records synchronized between Ramp and QuickBooks so bills match to the right payees.
- Map Ramp line-item GL codes to QuickBooks chart-of-accounts entries so expenses land in the correct departments and cost centers.
- Authenticate with Ramp via OAuth 2.0 Client Credentials and QuickBooks Desktop via SOAP session tokens, handling token refresh automatically.
- Detect duplicate sends and prevent double-posting by tracking Ramp transaction IDs and polling QuickBooks to verify each entry before moving to the next.
Questions
- Does ml-connector push data back to Ramp from QuickBooks Desktop?
- No. The sync is one-way: bills and expenses flow from Ramp into QuickBooks Desktop. Vendor records are synchronized in both directions so matching works correctly, but QuickBooks modifications are not sent back to Ramp. Ramp remains the source of truth for bill approvals and corporate card transactions.
- How does ml-connector handle the QBWC agent and session tokens?
- ml-connector communicates with QBWC via SOAP at the URL the customer specifies. QBWC provides credentials (username, password), and ml-connector calls authenticate() to get a session ticket. That ticket is valid only for the current polling window and for the batch of requests queued by ml-connector. If authentication fails, the bill is deferred and logged so you can troubleshoot the QBWC configuration.
- What happens if a vendor or GL account in Ramp does not exist in QuickBooks Desktop?
- ml-connector checks for the vendor and GL account before posting. If either is missing, it defers the bill, logs the discrepancy to the audit trail, and sends an alert. The customer adds the mapping in the ml-connector admin panel, and the bill is automatically retried on the next sync cycle without manual re-entry.
Related integrations
More QuickBooks Desktop integrations
Other systems that connect to Ramp
Connect QuickBooks Desktop and Ramp
Free to use. Add your credentials, ping your real systems, and see if we fit.
Get started