Connect Harlo to QuickBooks Online
Each time you invoice a load in Harlo, QuickBooks Online gets the same invoice: the customer, the lines, the dates and the load number. Payments can follow.
You'll need
- A Harlo admin login
- QuickBooks Online
- A paid Zapier plan (QuickBooks Online and Webhooks by Zapier are premium apps)
Before you start
In QuickBooks, create one product or service for your freight, for example Freight (Sales, Products and services, New, Service), with the income account you use for linehaul. Every Harlo line is posted against it. If you want linehaul, fuel and accessorials on separate accounts, create one per Harlo line type (Linehaul, Fuel Surcharge, Detention...) with exactly those names.
Send new invoices to QuickBooks
- Make a Harlo API key. In Harlo, open Settings, API keys, choose Create API key, name it QuickBooks via Zapier, and copy it. You'll paste it in a moment; Harlo shows it only once.
- Start a Zap in Zapier and set the trigger:Choose Test trigger. You should see your most recent Harlo invoices.
App Webhooks by Zapier Trigger event Retrieve Poll URL https://harlo-api-dev.pages.dev/v1/invoices?limit=25Key dataDeduplication Key idHeaders Authorizationin the left box,Bearer hk_…(the word Bearer, a space, your key) in the right. - Find the customer. Add QuickBooks Online, Find Customer. Search by display name with Customer Name, and tick Create QuickBooks Online Customer if it doesn't exist yet, mapping Customer Name to Display Name and Customer Billing Email to Email.
- Create the invoice. Add QuickBooks Online, Create Invoice and map:
Zapier turns Harlo's list of lines into one QuickBooks line each.Customer The ID from the Find Customer step Invoice date Invoice Date Due date Due Date Invoice number Number (if custom transaction numbers are on in QuickBooks) Line items: Product/Service Freight (or Lines Type, if you made one per type) Line items: Description Lines Description Line items: Amount Lines Amount Message on invoice Load Load Number, your ref Load Customer Reference - Test, then turn the Zap on.Check the test invoice in QuickBooks, delete it if you don't want it, and publish.
Mark invoices paid when Harlo records a payment
If you record customer payments in Harlo, a second Zap keeps QuickBooks in step:
- Trigger:
App Webhooks by Zapier Trigger event Retrieve Poll URL https://harlo-api-dev.pages.dev/v1/payments?limit=25Key dataDeduplication Key idHeaders Authorizationin the left box,Bearer hk_…(the word Bearer, a space, your key) in the right. - QuickBooks Online, Find Invoice by invoice number, with Invoice Number.
- QuickBooks Online, Create Payment for that invoice's customer, with Amount, Received Date as the payment date and Reference as the reference number, applied to the invoice you found.
Record each payment in one place only: if you also receive it in QuickBooks, skip this Zap.
Attach the POD (optional)
Customers who pay against paperwork want the proof of delivery. In the invoice Zap, after Create Invoice add Webhooks by Zapier, GET to https://harlo-api-dev.pages.dev/v1/documents?type=load_pod&limit=1&load_id= followed by Load ID, with the same Authorization header. Then a second GET to https://harlo-api-dev.pages.dev/v1/documents/ followed by the document's Data ID; its Download Url is the file. Finish with QuickBooks Online, Attach File(s) or Note on the new invoice, using that URL. The link works for 5 minutes, which is plenty within one Zap run.
If something's off
- The test shows no invoices
- Create one in Harlo (Financial tab of a delivered load, with the POD uploaded), then test again. A 401 means the header is wrong: it must read
Bearer hk_…. - Duplicate customers in QuickBooks
- Find Customer matches on display name exactly. Rename the customer in Harlo or QuickBooks so they match. Or put the QuickBooks customer's display name in Harlo, on the customer's Profile tab under Billing, Accounting System ID, and search on Customer Accounting Id instead.
- Old invoices didn't come across
- That's by design: the Zap starts with invoices created after it's turned on. Import older ones once from a CSV export.
- When you turn the Zap on, Zapier notes the records already there and starts only for new ones. To bring older records across, see Spreadsheets and CSV for a one-time export.
- Webhooks by Zapier is a premium app: it needs a paid Zapier plan. How often it checks depends on the plan.
- Field names in Zapier match the API. Nested fields show with spaces, like Customer Name or Load Number.