QuickBooks Trigger¶
Overview¶
The QuickBooks Trigger starts a workflow each time a customer payment is recorded in your QuickBooks Online company, whether someone enters it by hand, matches it from the bank feed, or the customer pays online. Each payment starts the workflow once, with the amount, the invoice it pays and the customer available to the steps that follow.
It can also wait for the invoice instead of the payment: An invoice is paid in full starts the workflow once per invoice, when the last of it is paid.
When to use this trigger:
- Mark the matching invoice as paid in BaseCloud when it is paid in QuickBooks.
- Tell the account manager the moment a customer pays.
- Thank the customer, or start their onboarding, once their first invoice is paid in full.
flowchart TD
A[Customer payment recorded in QuickBooks] --> B[Trigger starts the workflow]
B --> C[Find the BaseCloud invoice it pays]
C --> D{Invoice found?}
D -->|Yes| E[Mark it as paid]
D -->|No| F[Workflow note for a person to check]
Connecting QuickBooks¶
The trigger uses the same QuickBooks connection as the QuickBooks task. Pick it under QuickBooks account, or choose + New Connection to connect QuickBooks. Each connection is one QuickBooks company: you choose the company when you sign in to Intuit. See App connections.
If QuickBooks asks you to sign in again, use Reconnect
QuickBooks ends a connection after 100 days without use, or when access is removed in QuickBooks. The connection then shows as Not Authorised under Settings → App Connections. Click Reconnect on that same connection. Reconnecting keeps the workflow's place, so every payment recorded while it was waiting still starts the workflow.
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 |
|---|---|---|---|---|
| Start this workflow when | trigger_event |
select | payment_received |
Options: A customer payment is recorded · An invoice is paid in full |
| QuickBooks account | app_connection_id |
app-connection | – | |
| Only payments of at least (optional) | min_amount |
number | – | |
| Only when the reference contains (optional) | reference_contains |
text | – |
Only when the reference contains checks the payment's reference number and the numbers of the invoices it pays; capital letters do not matter.
How it behaves¶
- It checks QuickBooks about every 10 minutes, and within a few minutes when QuickBooks lets BaseCloud know a payment or an invoice changed.
- Each payment starts the workflow once. Editing a payment in QuickBooks later does not start it again. With An invoice is paid in full, each invoice starts it once.
- One payment can pay several invoices. QuickBooks lets a customer pay more than one invoice at once. With
A customer payment is recorded, the workflow runs once: the first invoice is named, and
invoice_numberslists them all. With An invoice is paid in full, it runs once for each invoice the payment settles. - Only payments on invoices. A payment that is not applied to any invoice (a deposit or credit kept on the customer's account) is left out, and so is a voided payment.
- Nothing dated before the day you first switch it on is picked up.
- It catches up on what it missed. If the workflow is switched off for a while, or the connection needs reconnecting, the workflow runs for every payment recorded in the meantime as soon as it can read QuickBooks again — about 100 payments every few minutes.
- An invoice settled without a payment is not picked up. An invoice cleared with a credit memo has no payment of its own, so An invoice is paid in full does not start for it.
- Changing the company or what starts the workflow starts it afresh from now. Picking another connection to the same company does not.
Output Fields¶
| Field | Description |
|---|---|
amount |
The payment's amount, for example 1250.5. With An invoice is paid in full, the part of the payment that went to this invoice. |
payment_total |
The whole payment, across every invoice it pays. |
unapplied_amount |
Any part of the payment not applied to an invoice. |
currency |
The currency code, for example USD. |
payment_date |
The date of the payment in QuickBooks, as YYYY-MM-DD. |
reference |
The payment's reference number, for example a check number. |
payment_method |
How it was paid, when QuickBooks records it, for example Check. |
deposit_account_name |
The account it was paid into, for example Checking or Undeposited Funds. |
invoice_number |
The (first) invoice's number, for example 1042. Use this to find the invoice in BaseCloud. |
invoice_numbers |
Every invoice the payment pays. |
invoice_count |
How many invoices the payment pays. |
invoice_total |
The invoice's total. |
invoice_balance |
How much is still owed on the invoice. 0 once it is paid in full. |
invoice_fully_paid |
true when the invoice is now paid in full. |
invoice_date |
The invoice's date. |
invoice_due_date |
The invoice's due date. |
customer_name |
The customer. |
customer_email |
The invoice's email address, when it has one. |
payment_id |
The payment's ID in QuickBooks. |
invoice_id |
The (first) invoice's ID in QuickBooks. Use it in a QuickBooks task. |
customer_id |
The customer's ID in QuickBooks. |
deposit_account_id |
The deposit account's ID in QuickBooks. |
trigger_event |
payment_received or invoice_paid. |
session_id |
The payment's ID, as a stable key for each payment. |
app_connection_id |
The QuickBooks connection the payment came from. |
{{task_ID_run_text}} |
QuickBooks trigger executed successfully. |
Testing¶
In the trigger's Input panel, select Load my payments to bring in the latest payments in the company that match the trigger's settings. Pick one and run the rest of the workflow on it. Before QuickBooks is connected, add a test record with nothing in it to get a made-up payment shaped exactly like a real one.
Related¶
- QuickBooks task — create and read customers, invoices, estimates and payments.
- Xero Trigger — the same trigger for Xero.
- BaseCloud Accounting — mark the BaseCloud invoice as paid.