The moment it happens
Invoice new customers straight from your order form
Each order or job request becomes a QuickBooks customer and an invoice, sent by QuickBooks, with a confirmation to you.
- Runs
- The moment it happens
- Apps
- QuickBooks
- AI
- Not needed
- Access
- com.intuit.quickbooks.accounting (read+write)
Send this to your assistant
Create a ClickRuntime automation: give me a link my order form can post to. Find the customer in QuickBooks by email or create them, raise an invoice for the item and amount, send it from QuickBooks and email me a confirmation.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A web form, a booking tool or an online store collects an order, and then someone has to retype it into QuickBooks: find the customer, create them if they are new, build an invoice with the right items, and send it. Done by hand, each one takes minutes, spelling errors create duplicate customers, and invoices go out a day late.
When a new order, job or form submission arrives, ClickRuntime looks up the customer in QuickBooks by email address, creates them if they do not exist, creates the invoice with the line items from the request, and has QuickBooks email it to the customer. You get a confirmation email with the invoice number, so you know it went out.
It suits service businesses and small shops that bill per job and want invoicing to follow the order rather than the admin schedule.
What you get out of it
Invoices go out while the customer is engaged
An invoice that arrives minutes after an order gets paid faster than one sent on Friday. Billing close to the moment of purchase shortens the gap between doing the work and having the money.
Duplicate customers are avoided
The customer is looked up by email before anything is created. That keeps one record per person, so their invoice history, balances and statements stay together instead of splitting across spellings.
Typing errors disappear
Line items and amounts travel straight from the request into QuickBooks. A wrong quantity or a transposed digit in an amount is the most common invoicing mistake, and re-keying is where it comes from.
Your admin time goes to exceptions
If the order comes in cleanly, nobody touches it. You look at the confirmation email and spend your effort on odd orders, refunds and questions that need judgment. Routine orders stay routine.
The books match what you sold
Every order becomes an invoice, so revenue in QuickBooks reflects reality at month end. There are no forgotten jobs sitting in an email folder that were never billed. Revenue is complete, not estimated.
How it works
What happens, step by step
When your order form or another tool sends ClickRuntime a new order, the automation starts.
It looks for the customer in QuickBooks by email and adds them if they are new.
It creates the invoice and QuickBooks emails it to the customer.
You get a confirmation email with the invoice number, the amount, where it was sent and the due date.
Before it runs live
- Connect QuickBooks
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Slack
- Combine it with other QuickBooks steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, notify
REALM_ID = "1234567890"
API = f"https://quickbooks.api.intuit.com/v3/company/{REALM_ID}"
def qb(method, path, **kw):
headers = {"Authorization": f"Bearer {credentials.connection('quickbooks', 'company')}", "Accept": "application/json"}
resp = http.request(method, f"{API}{path}", headers=headers, params={"minorversion": 73, **kw.pop("params", {})}, **kw)
resp.raise_for_status()
return resp.json()
def query(sql):
return qb("GET", "/query", params={"query": sql})["QueryResponse"]
@on_event
def handle(event):
data = event.json
email = data["email"].replace("'", "\\'")
found = query(f"select * from Customer where PrimaryEmailAddr = '{email}'").get("Customer")
customer = found[0] if found else qb("POST", "/customer", json={
"DisplayName": data.get("name") or data["email"], "PrimaryEmailAddr": {"Address": data["email"]}})["Customer"]
invoice = qb("POST", "/invoice", json={
"CustomerRef": {"value": customer["Id"]}, "BillEmail": {"Address": data["email"]},
"Line": [{"Amount": float(data["amount"]), "DetailType": "SalesItemLineDetail", "Description": data["item"],
"SalesItemLineDetail": {"ItemRef": {"value": "1"}}}]})["Invoice"] # "1" = Services item
qb("POST", f"/invoice/{invoice['Id']}/send", params={"sendTo": data["email"]})
notify.email_me(f"Invoice {invoice['DocNumber']} sent to {customer['DisplayName']}",
f"{data['item']}: ${float(data['amount']):,.2f}\nSent to {data['email']}, due {invoice['DueDate']}")
return {"invoice": invoice["DocNumber"], "new_customer": not found}FAQ
Common questions
What happens if the customer already exists with a different spelling of their name?
Can invoices be created but held for review before sending?
Which fields do I need in the incoming request?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Turn quote requests into QuickBooks estimates
Every quote request or recorded sale becomes an estimate or sales receipt, and you get its number by email.
See how it worksPost to Slack when a customer pays
The moment a payment is recorded, Slack shows who paid and how much.
See how it worksSee every new invoice in Slack
Each invoice created in QuickBooks shows up in Slack with customer, amount and due date.
See how it worksKeep exploring
Set up “Invoice new customers straight from your order form” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.