Skip to content

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.

Paste it into your assistant. It tells you what it will send or change before it runs live.

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

  1. When your order form or another tool sends ClickRuntime a new order, the automation starts.

  2. It looks for the customer in QuickBooks by email and adds them if they are new.

  3. It creates the invoice and QuickBooks emails it to the customer.

  4. 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

RunsThe moment it happens
Invoice new customers straight from your order formjust nowSucceeded
Email · Invoice sentInvoice 1043 sent to Northwind Traders Website audit: $1,500.00 · Sent to ap@northwind.example, due 2026-11-18

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
create_customer_and_invoice_from_an_incoming_request_then_send_it.pyexample
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?
The match is on the email address, which is more stable than a name. If the email matches an existing customer, that record is used and the invoice attaches to it. A new email creates a new customer even if the name looks familiar.
Can invoices be created but held for review before sending?
Yes. The send step can be removed so the invoice is created as a draft-style record that you review, then send from QuickBooks yourself. Some businesses do this for large or unusual orders and let routine ones go out directly.
Which fields do I need in the incoming request?
At minimum a customer email and the items or amounts to bill. Name, address and notes are added to the customer and invoice when present. QuickBooks needs each line item to match a product or service you have set up, or use a generic one.
What permissions does it need?
com.intuit.quickbooks.accounting (read+write). Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

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.