Skip to content

QuickBooks

Overview

The QuickBooks task works in your QuickBooks Online company from a workflow. It can:

  • Invoices — create one (and email it from QuickBooks), change one, find one or a list, email it, or void it.
  • Payments — record a customer's payment against an invoice.
  • Estimates — create one, or find one.
  • Customers — create one, change one, find one or a list.

When to use this task:

  • Raise the QuickBooks invoice when a deal is won in BaseCloud.
  • Add a new client to QuickBooks as a customer the moment they sign up.
  • Record the payment in QuickBooks when a customer pays through BaseCloud.
  • Send a list of overdue invoices to the account manager every Monday.

Connecting QuickBooks

Pick the company under QuickBooks account, or choose + New Connection to connect one. Each connection is one QuickBooks company. See App connections.

Configuration

Builder fields

The Field column is the label as it appears in the task builder; Key is the name the value is stored under and referenced by.

Field Key Type Default Notes
What to do action select create_invoice Options: Create an invoice · Change an invoice · Find an invoice · Find invoices · Email an invoice · Void an invoice · Record a payment on an invoice · Create an estimate · Find an estimate · Create a customer · Change a customer · Find a customer · Find customers
QuickBooks account app_connection_id app-connection –
Customer ID customer_id text – Only shown when action is update_customer, get_customer
Customer ID (optional) customer_id text – Only shown when action is create_invoice, create_estimate
Only this customer’s invoices (optional) customer_id text – Only shown when action is get_invoices
Customer name customer_name text – Only shown when action is create_customer, update_customer, get_customer, create_invoice, create_estimate
Company name company_name text – Only shown when action is create_customer, update_customer
First name first_name text – Only shown when action is create_customer, update_customer
Last name last_name text – Only shown when action is create_customer, update_customer
Email address email text – Only shown when action is create_customer, update_customer, get_customer, create_invoice, update_invoice, create_estimate
Phone phone text – Only shown when action is create_customer, update_customer
Mobile mobile text – Only shown when action is create_customer, update_customer
Street address address_line1 text – Only shown when action is create_customer, update_customer
City address_city text – Only shown when action is create_customer, update_customer
State or province address_state text – Only shown when action is create_customer, update_customer
ZIP or postal code address_postal_code text – Only shown when action is create_customer, update_customer
Country address_country text – Only shown when action is create_customer, update_customer
Notes notes textarea – Only shown when action is create_customer, update_customer
Name contains (optional) name_contains text – Only shown when action is get_customers
Include inactive customers include_inactive checkbox 0 Only shown when action is get_customers
Invoice ID invoice_id text – Only shown when action is update_invoice, get_invoice, send_invoice, void_invoice, record_payment
Invoice number invoice_number text – Only shown when action is update_invoice, get_invoice, send_invoice, void_invoice, record_payment
Invoice number (optional) invoice_number text – Only shown when action is create_invoice
Estimate number (optional) invoice_number text – Only shown when action is create_estimate
Estimate ID estimate_id text – Only shown when action is get_estimate
Estimate number estimate_number text – Only shown when action is get_estimate
Invoice date (optional) invoice_date text – Only shown when action is create_invoice, update_invoice
Estimate date (optional) invoice_date text – Only shown when action is create_estimate
Due date (optional) due_date text – Only shown when action is create_invoice, update_invoice
Valid until (optional) expiration_date text – Only shown when action is create_estimate
Products or services line_items text – Only shown when action is create_invoice, update_invoice, create_estimate
Descriptions line_descriptions text – Only shown when action is create_invoice, update_invoice, create_estimate
Quantities line_quantities text – Only shown when action is create_invoice, update_invoice, create_estimate
Prices line_prices text – Only shown when action is create_invoice, update_invoice, create_estimate
Tax codes (optional) line_tax_codes text – Only shown when action is create_invoice, update_invoice, create_estimate
Prices are tax_calculation select default Options: As QuickBooks is set up · Before tax · Including tax · Not taxed. Only shown when action is create_invoice, update_invoice, create_estimate
Discount % (optional) discount_percent text – Only shown when action is create_invoice, update_invoice, create_estimate
Message to the customer (optional) customer_memo textarea – Only shown when action is create_invoice, update_invoice, create_estimate
Note for your team (optional) private_note textarea – Only shown when action is create_invoice, update_invoice, create_estimate
Email it to the customer from QuickBooks send_after checkbox 0 Only shown when action is create_invoice
Send to (optional) send_to text – Only shown when action is send_invoice
Only invoices with something still owing unpaid_only checkbox 0 Only shown when action is get_invoices
Dated from (optional) date_from text – Only shown when action is get_invoices
Dated up to (optional) date_to text – Only shown when action is get_invoices
Order order select newest Options: Newest first · Oldest first · Due soonest first · Due latest first · Highest total first · Most owing first. Only shown when action is get_invoices
Amount (optional) payment_amount text – Only shown when action is record_payment
Payment date (optional) payment_date text – Only shown when action is record_payment
Reference (optional) payment_reference text – Only shown when action is record_payment
Deposit to account ID (optional) deposit_account_id text – Only shown when action is record_payment

Which other fields show depends on What to do.

Invoice lines

Products or services, Descriptions, Quantities, Prices and Tax codes each take one value per line. For more than one line, put a | between the values, in the same order in each box:

Box Value
Products or services Design|Hosting
Descriptions Homepage redesign|Monthly hosting
Quantities 1|12
Prices 500|25
  • A product or service is found by its name, or its SKU, exactly as it is in QuickBooks. Leave it empty to use Services, which every QuickBooks company has.
  • Quantities left empty are 1.
  • Tax codes: in the US, TAX for a taxable line and NON for one that is not; QuickBooks works out the sales tax. Outside the US, the tax code's ID in QuickBooks, and Prices are says whether prices include tax. One tax code is used for every line.
  • Discount % comes off the whole invoice. Discounts must be switched on in QuickBooks first (Settings › Account and settings › Sales).
  • When changing an invoice, filling in any line box replaces all of its lines. Leave them all empty to keep the lines as they are.

Dates

Write dates year-month-day, like 2026-11-04, so they can never be read the wrong way round. A date in another format stops the task with a message saying so; a Date Formatter task can change it first. An empty invoice date is today; an empty due date follows the customer's payment terms.

The customer on an invoice or estimate

Give the Customer ID, or just the Customer name. With only a name, the customer is found by name, and added to QuickBooks when there is none yet — so a workflow can raise the first invoice for a brand-new client.

How it behaves

  • A search that finds nothing is not an error. Find a customer, Find an invoice and Find an estimate carry on with found set to false, so an If task can decide what happens next.
  • Creating a customer whose name is taken returns that customer. No two customers in QuickBooks can share a name, so a workflow that runs twice for the same person gets the existing customer, with existing set to true.
  • An invoice number that already exists stops the task, rather than making a second invoice with it.
  • Emailing straight after creating. When Email it to the customer from QuickBooks is ticked and the email cannot be sent, the invoice is still created; the run says why the email failed, in send_error.
  • Recording a payment takes everything still owing unless an Amount is given, and refuses more than is owed. Without a Deposit to account ID, QuickBooks puts it in Undeposited Funds.
  • Voiding keeps the invoice in QuickBooks, with its number, at zero.
  • Test runs are real. Running the task to test it creates and changes records in QuickBooks, as a live run does. Use a QuickBooks sandbox company to try things out.

Output Fields

Field Description
found true when the record was created, changed or found.
invoice_id, invoice_number The invoice's ID and number in QuickBooks.
invoice_date, due_date The invoice's dates.
total, tax, balance, amount_paid The invoice's total, its tax, what is still owed, and what has been paid.
status Paid, Partly paid, Overdue, Unpaid or Voided.
email_status Whether QuickBooks has emailed it, for example EmailSent.
lines An invoice's or estimate's product and service lines, one entry each: item, description, quantity, unit_price, amount, tax_code, tax_rate. Use it in a Loop.
line_descriptions, line_quantities, line_unit_prices, line_tax_rates, line_items The same lines with a | between them, in the order the BaseCloud Accounting task takes them — see Copy an invoice into BaseCloud.
line_count How many lines.
discount_amount, discount_percent A discount on the whole invoice, if it has one.
customer_memo The message to the customer on the invoice.
customer_id, customer_name The customer.
display_name, email, phone, mobile, company_name A customer's details (customer actions).
existing Create a customer: true when the name was already taken and that customer is returned.
customers, invoices, count Find customers / Find invoices: the list, and how many.
total_balance Find invoices: what is still owed across the list.
truncated true when a list was too long to keep whole. Narrow it.
payment_id, payment_amount, payment_date Record a payment: the payment made.
estimate_id, estimate_number, expiration_date, estimate_status An estimate's details.
quickbooks Everything QuickBooks sent back about the record.
{{task_ID_run_text}} What the task did, for example Invoice 1042 created in QuickBooks.

Copy an invoice into BaseCloud

Find an invoice and Find invoices return each invoice's lines, so a workflow can bring existing QuickBooks invoices into BaseCloud — for example when a new client joins, with all their invoices so far.

  1. QuickBooks → Find invoices, with Only this customer's invoices set to the customer's QuickBooks ID.
  2. A Loop over invoices.
  3. Inside it, a BaseCloud Accounting task that creates an invoice, with its line boxes set to the loop item's values:

    BaseCloud Accounting box QuickBooks value
    Item Description(s) line_descriptions
    Item Quantity(ies) line_quantities
    Unit Cost(s) line_unit_prices
    Tax Rate(s) line_tax_rates (a percentage, such as 8.25)
    Item Code(s) line_items

Good to know:

  • Tax. QuickBooks keeps tax on the invoice, not on each line. Each taxed line gets the invoice's own rate (its tax divided by what its taxed lines come to), which is exact when all of them are taxed at the same rate. When prices include tax, unit prices are given without it, as BaseCloud's are.
  • Bundles are opened up into the products inside them. A discount on the whole invoice is not a line: it is in discount_amount.
  • A | inside a description becomes /, so it cannot split the line in two.
  • The invoice is new in BaseCloud: it gets BaseCloud's next number, and a paid QuickBooks invoice (status is Paid) has to be marked paid in BaseCloud too.