Skip to content
DevelopersGet an API key

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

  1. 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.
  2. Start a Zap in Zapier and set the trigger:
    AppWebhooks by Zapier
    Trigger eventRetrieve Poll
    URLhttps://harlo-api-dev.pages.dev/v1/invoices?limit=25
    Keydata
    Deduplication Keyid
    HeadersAuthorization in the left box, Bearer hk_… (the word Bearer, a space, your key) in the right.
    Choose Test trigger. You should see your most recent Harlo invoices.
  3. 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.
  4. Create the invoice. Add QuickBooks Online, Create Invoice and map:
    CustomerThe ID from the Find Customer step
    Invoice dateInvoice Date
    Due dateDue Date
    Invoice numberNumber (if custom transaction numbers are on in QuickBooks)
    Line items: Product/ServiceFreight (or Lines Type, if you made one per type)
    Line items: DescriptionLines Description
    Line items: AmountLines Amount
    Message on invoiceLoad Load Number, your ref Load Customer Reference
    Zapier turns Harlo's list of lines into one QuickBooks line each.
  5. 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:

  1. Trigger:
    AppWebhooks by Zapier
    Trigger eventRetrieve Poll
    URLhttps://harlo-api-dev.pages.dev/v1/payments?limit=25
    Keydata
    Deduplication Keyid
    HeadersAuthorization in the left box, Bearer hk_… (the word Bearer, a space, your key) in the right.
  2. QuickBooks Online, Find Invoice by invoice number, with Invoice Number.
  3. 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.
NextWave