---
title: Jotform for wholesale order forms
Metadescription: Jotform builds a capable wholesale order form, but conditional logic cannot change product list prices and buyers cannot see what they ordered last week.
author: Dan Edwards
author_role: Founder
author_url: https://danedwardsdeveloper.com
author_linkedin: https://www.linkedin.com/in/dan-edwards-developer
published: 2026-08-26
updated: 2026-09-27
---

Token estimate: ~3,300

# Jotform for wholesale order forms

Jotform builds a good wholesale order form - a product list with quantities, conditional logic, calculations, a PDF invoice on submit and a table holding every order that arrived. The limits sit on the other side of the submit button. A customer cannot see their own trade prices before they order, cannot look up what they bought last week, and cannot reorder it. Collecting an order is not running one, and Jotform is a collection tool.

By **[Dan Edwards](https://wholesalehandler.com/about)**, Founder.

## A Jotform order form collects an order properly

Most of the reasons a wholesaler picks Jotform hold up. The Product List element takes products with quantities, categories and per-option pricing. Conditional logic shows and hides fields based on what the buyer selects. Calculation widgets total a basket. Form Calculation feeds a User Defined Amount into Stripe, Square, PayPal or Authorize.Net, so the buyer can pay on submission. Jotform Tables holds every order as a row the merchant can sort and filter. An autoresponder email confirms the order back to the buyer.

The form itself is not the weak part.

## Conditional logic cannot change a price in the Product List

The constraint is easy to miss until the form is half built, and it decides whether Jotform can carry a wholesale operation at all.

Jotform support states it plainly and repeatedly: prices inside the Product List element cannot be driven by a condition. Conditional logic works on every other field, including showing and hiding fields based on which product was chosen. It does not work on the price values themselves. So the usual wholesale requirement - this restaurant pays one rate, that distributor pays another - has no direct expression.

Two workarounds exist, and both cost something.

1.  **Ordinary choice fields plus a hidden calculation.** Rebuild the catalogue out of single-choice elements carrying calculation values, sum them in a Form Calculation widget, hide the widget, and point a User Defined Amount payment field at it. This works, and it throws away the Product List: no product images, no per-product quantity stepper, no line-item breakdown on the submission.
2.  **One form per price list.** Build a separate form for each rate, and route buyers to the right URL. This keeps the Product List intact and is the route Jotform's own support suggests most often.

The second is the practical answer for a wholesaler, and it has a knock-on. [What a wholesale price list is](https://wholesalehandler.com/articles/what-is-a-wholesale-price-list) covers why a wholesaler ends up with several rather than one, and [how to charge different prices to different wholesale customers](https://wholesalehandler.com/articles/how-to-charge-different-prices-to-different-wholesale-customers) covers the ways that assignment is usually structured.

## One form per price list meets the form count

A Jotform form holds exactly one Product List element. A second shows as "in use" - the stated reason is that a form accepts one payment integration and one currency. So a price list and a form are one to one, and the form count on the plan becomes the price-list count for the business.

Jotform's paid tiers allow 25, 50 and 100 forms. Those are generous numbers for a business running three or four rate cards. They are not generous once each customer is on bespoke terms, and every other form the business runs - a supplier enquiry, a delivery feedback form, an application - draws from the same pool.

The catalogue is duplicated across those forms too. A price change on a product is edited once per form, by hand, with no check that the forms agree afterwards.

## A buyer cannot look up what they ordered last week

Jotform has one supported route for a respondent returning to a submission: the `{edit_link}` tag in the autoresponder email. The link is generated per submission and carries that submission's ID, so it cannot be published as a standing link on the buyer's side. It reaches one order, the one the email was about.

There is no view where a buyer signs in and sees their own order history. The request - search by email, pull up what I ordered before, send it again - has been raised with Jotform support, and the answer is the edit link. Jotform Tables adds a **Request Update** button the merchant fires manually at one row.

For a wholesale buyer, pulling up the last order is the whole job. A produce buyer orders the same core list two or three times a week and wants last week's order back on screen with the quantities already filled in. [What a wholesale customer portal is](https://wholesalehandler.com/articles/wholesale-customer-portal) covers the surface that job needs.

Form access can be locked down, at a cost to the buyer. A Private Form is reachable only by invited assignees, who must sign in - creating a free Jotform account if they have none. Company Access restricts a form to one email domain. Password protection needs no account but issues the same password to everyone, so it separates no one customer from another.

## The submission meter counts the thing a wholesaler does most often

A form tool is priced for forms that are filled in occasionally: an application, a booking, a survey response. Wholesale ordering is the opposite shape. Forty accounts ordering twice a week is roughly 350 submissions a month, every month, and the number grows with the customer book rather than with anything the merchant chose.

Four meters run at once on a Jotform plan, and whichever fills first sets the tier.

| Meter | What it counts |
| --- | --- |
| Monthly submissions | Every order across every form |
| Payment submissions | Only orders that completed a payment |
| Total stored submissions | The lifetime archive, separate from the monthly count |
| Monthly form views | Every page load, whether or not it becomes an order |

The payment-submission meter is the tightest of the four by an order of magnitude, and it is the one a wholesaler taking card payment lands on. When it fills, payment-enabled forms stop accepting payment until the cycle resets or the account upgrades.

Every Jotform plan below Enterprise carries a single user. A second person in the office needs their own subscription or the shared password to the first, and roles with per-form access are an Enterprise feature.

## Jotform does produce an invoice PDF, and not a ledger

Jotform generates invoice PDFs automatically for payment forms that sell products, from a template the merchant designs, attached to the notification or autoresponder email. The PDF Editor turns any form into a custom document, which is how a packing slip gets built.

What sits behind the paperwork is the gap. Each PDF is one document per submission, generated and sent, with no record of it afterwards. Nothing consolidates a week of deliveries onto one invoice. Nothing carries a numbered series, an outstanding balance, a due date, or a paid and unpaid status. Nothing answers what a customer owes across their last six orders. The document is produced; the accounts receivable is not.

The same split runs through the delivery paperwork. [Packing slip vs invoice in wholesale](https://wholesalehandler.com/articles/packing-slip-vs-invoice-wholesale) covers what each document carries and why the slip must not show prices.

[Google Forms for wholesale orders](https://wholesalehandler.com/articles/google-forms-for-wholesale-orders) makes this argument against a thinner tool, and Jotform answers most of its objections: real product fields, real calculations, real payment, a real invoice PDF. Every one of those answers lands on the collecting side, which was not where the problem was. [Using Airtable to manage wholesale orders](https://wholesalehandler.com/articles/can-i-use-airtable-to-manage-wholesale-orders) covers the same split from the database end, where the record-keeping is strong and the buyer-facing surface is what is missing.

## What Wholesale Handler does once the order arrives

Wholesale Handler is an ordering portal rather than a form builder, so the split falls out differently.

| Job | Jotform | Wholesale Handler |
| --- | --- | --- |
| Customer sees their own prices | One form per rate card | One price list per customer |
| Reorder last week's order | Not available to the buyer | Order again from any past order |
| Ordering deadlines | Manual open and close | A cutoff per delivery day |
| Consolidated invoice | One PDF per submission | Processed orders collate per customer |

Prices are a percentage of a default list, so a rate card is a number rather than a duplicated catalogue, and changing a default price offers to recalculate every list derived from it. Each customer is assigned exactly one list at the database level, so no customer can be left unpriced. A price that changed in the last thirty days shows struck through beside the new one while the buyer is ordering.

Every delivery day carries its own cutoff, set as lead time, so Monday can close on Friday while Thursday stays open until the night before. Minimum spend, delivery charge and accepted delivery days sit on an order profile that customers are assigned to in bulk. Standing orders repeat weekly through four-weekly, place themselves at the cutoff, and can be paused or skipped for one delivery from the reminder email.

On the merchant side, every order for a date totals by product into a production schedule with a printable tick sheet, and packing slips print per order or per selection with no prices on them. Selecting processed orders collates them into one draft invoice per customer, reusing a customer's open draft rather than raising a second, and finalising emails the PDF.

A flat monthly fee covers the account, with no per-order, per-submission, per-user or commission charge, and it is free up to 3 customers with no card. Order volume changes nothing about the bill.

## Limits worth knowing before switching

-   **Wholesale Handler caps an account at 50 customers and 500 products.** Above that it is the wrong tool, and a form builder on an Enterprise plan may be the better fit.
-   **Invoices do not raise themselves on a schedule.** A merchant selects the processed orders and creates the draft. The collation and the emailed PDF are automatic from that point; the trigger is not.
-   **A customer cannot download their own invoice PDF.** They receive the emailed copy.
-   **Wholesale Handler builds nothing but wholesale ordering.** Jotform builds any form at all - applications, surveys, signed documents, registrations. A business that needs those as well as ordering needs both tools or a different one.
-   **Jotform costs less at low volume**, and its free tier covers a small monthly submission count outright. A grower with six accounts ordering once a month has no cost case for switching.

## Q&A

**Q: Can a Jotform form close itself at an ordering cutoff?**
A: Partly. Form Status disables a form on a specific date and time, at a submission limit, or whichever comes first, and shows a custom message to anyone arriving after that. It cannot schedule itself to reopen, which remains an open feature request. So a one-off deadline is covered, and a weekly ordering cutoff means enabling the form by hand every week.

**Q: Does Jotform track stock on a wholesale order form?**
A: Through the Inventory widget, which holds an available quantity per item and blocks selection once it runs out. It accepts whole numbers only and allows one dropdown each, so items at different prices need a widget apiece. The Product List field shows no remaining stock at all.

**Q: Can Jotform place a repeating wholesale order automatically?**
A: No. Jotform has no auto-repeat submission. Stripe Sell Subscriptions bills a customer on a schedule without them refilling the form, but that is recurring billing rather than a recurring order, because no line items are chosen for each cycle. The other route Jotform suggests is a reminder email prompting the customer to submit again by hand.

**Q: How many products can one Jotform order form carry?**
A: Two ceilings apply. A form holds one Product List element, and categories inside it are the only grouping available. Separately, fields per form are capped by plan, from one hundred on the free tier to one thousand on the highest standard plan. That second ceiling matters most where the per-customer pricing workaround has been used, since it rebuilds every product as an ordinary field rather than a product list row.

**Q: How does a wholesale customer get access to Wholesale Handler?**
A: The merchant invites them, and the invitation carries the price list they will buy from, so a customer arrives already assigned. Assignment is required at the database level rather than optional, which is what makes it impossible for a customer to reach the order form unpriced.
