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.
New submission on your "Order add-ons" form
Find the customer and create an invoice item in Stripe for each requested add-on
One-directional. A submission triggers the action — nothing is written back into your form.
Extra work is the easiest money to lose. A client asks for something mid-project, the team does it, and by invoice day nobody can agree what was added or what it was worth.
Agencies and freelancers put a change request form in front of that conversation. Each submission carrying a cost attaches an invoice item to the client's existing Stripe customer, where it waits as a pending line until the next invoice is raised — written down while the detail is still fresh.
Setting it up
- 1
Publish the add-ons form and tell clients to use the email address on their account. Find Customer matches on that email and nothing else, so a personal address sends the search looking for someone who does not exist.
- 2
Use conditional logic so Additional Cost Estimate (if applicable) only appears when the budget-impact question is answered Yes. A blank cost field on a form that always shows it invites zero-value invoice items.
- 3
In Zapier, set the formformform trigger to New Submission, select the add-ons form, and pull a sample that has a real cost figure in it.
- 4
Add a Zapier filter that continues only when "Does this change impact the project budget?" is Yes, so timeline-only changes are recorded in the responses list and never reach billing.
- 5
Add Stripe's Find Customer action searching on Email Address, and leave the create-if-missing option off. A failed search is a signal that the client is not set up yet, not an invitation to open a second account for them.
- 6
Add a Formatter step to turn Additional Cost Estimate (if applicable) into a whole number of the smallest currency unit, stripping any symbol and multiplying by 100.
- 7
Add Create Invoice Item against the found customer ID, combining Type of Change and Requested Change Description into the description so the line explains itself on the invoice, and set the currency to match their existing invoices.
- 8
Run a test change request, check it appears under the customer's upcoming invoice in Stripe, then switch the Zap on.
What maps where
Using the Project Scope Change Request 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 Customer in Stripe |
| Requested Change Description | Description on the invoice item |
| Additional Cost Estimate (if applicable) | Amount on the invoice item, in the smallest currency unit |
| Type of Change | Prefix on the invoice item description |
| Project Name | Invoice item metadata, so the line reads against the right project |
Variations worth knowing
Split the Zap with a Zapier path on the cost figure. Anything under your threshold goes straight to Create Invoice Item; anything above stops for review, so a mistyped estimate cannot quietly become a four-figure line on a client's invoice. The form stays the same in both cases.
Clients who are not on a subscription have no next invoice for the item to attach to. Add a Create Invoice step after the item, left as a draft, so the change can be billed on its own once the work is signed off rather than waiting for a cycle that never comes.
If something isn't arriving
The search matches the email on the Stripe customer exactly, and clients often fill the form in from whichever inbox they have open. Pre-fill the email in the form URL you send them, or keep a short list of account emails and check the failed runs in Zapier weekly.
A pending invoice item waits until an invoice exists for that customer. Subscription clients pick items up at the next billing cycle automatically; everyone else needs an invoice raised, either by adding a Create Invoice step or by drafting one in Stripe.
Frequently asked questions
Can the client approve the extra cost on the form?
They can agree to it in writing — a checkbox capturing acceptance of your change terms is an ordinary form field. It is a record of agreement, not a signature product and not a payment, so the actual charge still happens on the Stripe invoice.
Does the client see a running total of add-ons?
Not on the form. Nothing flows back from Stripe into a submission, so the place to show a running total is Stripe's upcoming invoice or the hosted invoice page, either of which you can send the client a link to at any point.
What currency does the invoice item use?
Whatever you set on the Create Invoice Item step, and it has to match the currency of the invoice it joins. Stripe will not mix currencies on one invoice, so a client billed in euros needs a euro item even if the form collected the figure without a symbol.
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.
- 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.
- 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.
- 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