Draft an invoice from every quote request
Every quote request finds or creates the client in Stripe, adds an invoice item for the scope, and leaves a draft invoice to review.
New submission on your "Request a quote" form
Find or create the customer, add an invoice item, then create a draft invoice in Stripe
One-directional. A submission triggers the action — nothing is written back into your form.
Quote requests arrive carrying almost everything an invoice needs — who is asking, what they want, roughly what they expect to spend — and then get retyped into Stripe by hand a week later.
Consultancies and agencies use this to close that gap. The Zap finds or creates the client, attaches an invoice item for the scope, and leaves a draft sitting in Stripe. Nothing goes out on its own: finance opens the draft, corrects the figure once the scope is agreed, and presses send.
Setting it up
- 1
Publish your quote request form with Email Address required. It is the only value the Stripe customer search can match on, so a missing email means a duplicate client record every time.
- 2
In Zapier, set up the formformform trigger on New Submission, select the quote form, and load a real submission — the amount handling in the later steps needs live sample text to test against.
- 3
Add Stripe's Find or Create Customer action and search on Email Address. On the create side, map Full Name to Name and Company or Organization to Description so a new client record is recognisable in the Customers list.
- 4
Insert a Zapier Formatter step between the customer and the invoice item. Estimated Budget arrives as text such as "£4,000": strip the symbol and commas, then multiply by 100, because Stripe takes amounts in the smallest currency unit as a whole number.
- 5
Add Create Invoice Item, point Customer at the ID returned by the find-or-create step, use Service Type as the description and the Formatter output as the amount.
- 6
Add Create Invoice against the same customer and leave it as a draft. Do not add a finalise or send step — the whole point is that a human reads the scope before the client sees a figure.
- 7
Map Project Description into the invoice memo so the person reviewing the draft can see what was actually asked for without opening the responses list.
- 8
Test with one quote, open Invoices then Drafts in Stripe, confirm the line item and its amount, then turn the Zap on.
What maps where
Using the Quote Request Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.
| Form field | Stripe |
|---|---|
| Email Address | Search key for Find or Create Customer in Stripe |
| Full Name | Name on the Stripe customer when one has to be created |
| Company or Organization | Description on the Stripe customer |
| Service Type | Description on the invoice item |
| Estimated Budget | Amount on the invoice item, converted to the smallest currency unit |
| Project Description | Memo on the draft invoice |
Variations worth knowing
Feed Project Timeline through a Zapier Formatter lookup table that turns each answer into a number of days, then map the result to Days Until Due on the Create Invoice step. A rush job drafts with a short window, a next-quarter project drafts with a long one, and nobody edits dates by hand.
Add a filter on Estimated Budget so only requests at or above your minimum engagement reach the invoicing steps. Below that line the submission still sits in the responses list to be answered by email, which stops your draft invoice queue filling with jobs you were never going to take.
If something isn't arriving
Stripe rejects anything that is not a whole number in the smallest currency unit, so "£4,000" fails and "4000" bills forty pounds. Check the Formatter is stripping the symbol and comma and multiplying by 100. If Estimated Budget is a range rather than a figure, map a zero amount and let finance set the real one.
Create Invoice sweeps up pending invoice items for that customer, so the item has to exist first and sit against the same customer ID. Check the step order, and check both steps reference the ID from the find-or-create action rather than two different lookups.
Frequently asked questions
Does the client get emailed the invoice automatically?
Not while it is a draft. Stripe only sends once someone finalises the invoice, which stays a deliberate click in the dashboard. That is why this recipe stops at the draft — the scope and the figure both need a human read before a client sees them.
Can the form take a deposit at the same time?
Yes. Add products and priced options to the form, then collect payment through secure hosted checkout with Stripe, PayPal, or Square. Payment status is tracked alongside the response.
What if the client is already in Stripe?
Find or Create Customer matches on the email you search with, so an existing client is reused and the invoice item lands on their existing record. A different email — personal instead of work — reads as a new client and creates a second customer.
Related automations
- Apply an early-bird discount to conference registrants
Every conference registration creates a Stripe customer with the early-bird coupon already applied to their account.
- Bill extra work on the client's next invoice
A costed change request attaches an invoice item to the client's existing Stripe customer, so extra work lands on their next invoice.
- Create a customer record when an account is opened
Each account signup creates a Stripe customer carrying the business name, billing email and address, ready before the first invoice.
- Set up a monthly donor for recurring giving
A monthly pledge creates the Stripe customer and starts a recurring subscription at the amount the donor committed to.
- Start a subscription when someone picks a plan
The plan someone chooses on the form becomes a Stripe subscription on the matching recurring price, with the customer created first.
- Add counter signups to your Customer Directory
A signup at the till or on your site becomes a Square customer profile straight away, spelled the way the customer typed it.
Build the form first
The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.
Start free