What Baltimore’s food truck trade actually looks like
Start with the number that frames everything else, and start with its caveat, because for this trade the caveat is half the story. County Business Patterns counts establishments with paid employees. It does not count the owner-operator who drives, cooks, serves and washes down alone, and in mobile food that is most of the market. So the figures below are not a census of food trucks in Maryland. They are a census of food trucks that run payroll, which is a different and much smaller thing, and the gap between the two is exactly why this vertical is priced and sold the way it is.
With that said: in 2023 the Bureau counted 178 establishments in NAICS 722330, Mobile Food Services, across Maryland, employing 536 people with $14,961,000 of annual payroll. That is 3.01 employees and $27,912.31 of payroll per person. Baltimore County has the largest cluster at 36 establishments. Baltimore City has 19, employing 36 people with $1,253,000 of payroll — 10.7% of the state’s establishments, 6.7% of its mobile food employment and 8.4% of its mobile food payroll.
| Jurisdiction | Establishments | Employees | Annual payroll | Employees per establishment |
|---|---|---|---|---|
| Baltimore County | 36 | 96 | $3,652,000 | 2.67 |
| Montgomery | 24 | 87 | $2,118,000 | 3.62 |
| Prince George’s | 19 | 70 | $2,036,000 | 3.68 |
| Baltimore City | 19 | 36 | $1,253,000 | 1.89 |
| Anne Arundel | 16 | 32 | $830,000 | 2.00 |
| Howard | 12 | 43 | $798,000 | 3.58 |
| Harford | 11 | 55 | $1,408,000 | 5.00 |
| Maryland, all counties | 178 | 536 | $14,961,000 | 3.01 |
Baltimore City is last on the right-hand column among the seven jurisdictions in the region with ten or more establishments. Harford has five employees per mobile food business and the City has 1.89, which is a 2.6× spread in average size between two places forty minutes apart. Payroll per employee runs the other way — the City pays $34,805.56 per person against Harford’s $25,600.00 — which is roughly what you would expect if the City’s trucks are smaller, more owner-driven and more likely to be paying a cook rather than a counter shift.
The ratio that explains the ordinance
Now put the mobile side next to the fixed side, in the same city, in the same dataset, in the same year. This is the comparison that makes sense of everything the ordinance does.
| Sector | NAICS | Establishments | Employees | Per mobile food business |
|---|---|---|---|---|
| Limited-service restaurants | 722513 | 632 | 6,306 | 33.3 |
| Full-service restaurants | 722511 | 424 | 8,798 | 22.3 |
| Grocery stores and supermarkets | 445110 | 231 | 3,897 | 12.2 |
| Caterers | 722320 | 34 | 383 | 1.8 |
| Mobile food services | 722330 | 19 | 36 | — |
| Restaurants only, both kinds | — | 1,056 | 15,104 | 55.6 |
| All four fixed sectors above | — | 1,321 | 19,384 | 69.5 |
Statewide the imbalance is starker still. Maryland’s full-service and limited-service restaurants report $4,570,963,000 of annual payroll between them. Mobile food services report $14,961,000. The mobile side is 0.327% of the fixed side — about one third of one percent. I want to be careful with that number, because it flatters the argument I am about to make and it should not be allowed to do all the work: the mobile figure excludes every sole trader, and payroll is not revenue. But the order of magnitude is not in doubt, and it is the honest backdrop to a set of rules whose stated purpose, as Maryland’s highest court put it, is protecting the economic vibrancy of the city’s commercial districts.
Here is why that ratio is a software problem and not just a political one. The rule I will spend most of this article on asks a truck to check itself against every nearby business that sells the same sort of thing. In Baltimore City there are 19 businesses being asked the question and somewhere north of 1,056 businesses that could supply the answer. The regulated party is outnumbered 55.6 to one by the set it has to evaluate itself against, and that set has no published index of what each member primarily sells.
Being fair to the platforms first
Before I take anything apart, I want to concede the strongest version of the other side, because on this vertical it is genuinely strong and I have watched a lot of people waste money ignoring it.
A food truck is, from a point-of-sale perspective, close to the easiest retail problem there is. One service point. A short menu that changes rarely. Almost no inventory depth to model. No table management, no coursing, no split checks worth speaking of, no reservations. Card-present tickets, a queue, a busy ninety minutes, and then it is over. The commodity platforms are extremely good at exactly this, they are cheap, they work offline when the cell signal drops behind a building, and they hand you a card reader that fits in an apron pocket. If you run one truck and you are choosing between Square and a bespoke till, choose Square. I am not going to pretend otherwise to sell you a project.
The same goes for the parts around the till. Online ordering that takes a pre-order and prints it in the window is a solved problem. Loyalty is a solved problem. So is a basic website with your schedule on it. If your next fifty hours of work are best spent on any of those, buy them, and skip to the section on what the ordinance asks — because that is the part where the market genuinely stops.
What the software actually costs
On 10 September 2026 I went through the published pricing pages rather than the comparison sites, because the comparison sites are wrong about this category in ways that are easy to check. Three of the aggregator articles I read that morning quoted Square’s in-person rate as 2.6% plus 10 cents and Square Plus as $60 a month. Square’s own page says 2.6% plus 15 cents and $49. If a number matters to your decision, get it from the vendor.
Three published ladders
Square publishes the most complete price list in the category and deserves credit for it. Three tiers, every processing rate on the page, every add-on priced separately, no contact us where a number should be.
| Vendor / tier | Monthly software | Card present | Online | Published unit |
|---|---|---|---|---|
| Square Free | $0.00 | 2.6% + 15¢ | 3.3% + 30¢ | per location |
| Square Plus | $49.00 | 2.5% + 15¢ | 2.9% + 30¢ | per location |
| Square Premium | $149.00 | 2.4% + 15¢ | 2.9% + 30¢ | per location |
| Square KDS | $30.00 / $20.00 | — | — | per device |
| Toast Starter Kit | $0.00 | not published | not published | 1 location, up to 2 terminals |
| Toast Point of Sale | $69.00 | not published | not published | per month |
| Toast POS + Payroll | $69.00 + $9.00 | not published | not published | per employee per month |
| Clover quick-service Starter | $135.00 × 36 | 2.3% + 10¢ | not published | 36-month term |
| Clover quick-service Starter | $849.00 + $89.95 | 2.3% + 10¢ | not published | up front plus monthly |
Two things in that table are worth saying out loud. The first is a point in Clover’s favor and against my own instincts: 2.3% plus 10 cents is the lowest card-present rate any of the three publishes, on the cheapest tier, with no volume commitment. On a truck doing a lot of small tickets that difference is real money, and I will do the arithmetic in a moment. The second is that Toast, one of the largest restaurant platforms in the United States, publishes a comparison chart with a row labeled “Simple, flat rate” and a checkmark in it. The rate itself is a feature, not a number.
Clover publishes the same system twice, and the two prices are not the same
This one is unusual enough to be worth a table of its own, because Clover has done something most vendors avoid: it has put both payment routes for an identical system side by side on the same page, in the same card, with no comparison drawn. “$135/mo for 36 months, or $849 + $89.95/mo.” Same hardware, same Restaurant Growth software plan, same card rate.
| Route | Up front | Monthly | × 36 months | Three-year total |
|---|---|---|---|---|
| Financed, 36-month term | $0.00 | $135.00 | $4,860.00 | $4,860.00 |
| Pay for the hardware, then subscribe | $849.00 | $89.95 | $3,238.20 | $4,087.20 |
| Difference | — | $45.05 | — | $772.80 |
The financed route costs $772.80 more over the term, which is 18.9% on top of the other route’s total. That is not a scandal and it is not hidden — it is the ordinary price of not having $849 in the bank in month one, and for a truck in its first season that may well be the right trade. But it is a number that nobody computes, on a page where both inputs are printed eight inches apart, and a truck signing a three-year term should have seen it.
The tier that costs more than the tier below it
Here is the arithmetic that decides which Square tier a food truck should be on, and it comes out somewhere most people do not expect. The per-transaction 15 cents is identical across all three tiers, so it cancels; the only thing your subscription buys is a tenth of a percentage point per step.
| Upgrade | Extra per year | Rate saving | Break-even card volume | Per trading day | Covers per day |
|---|---|---|---|---|---|
| Free → Plus | $588.00 | 0.1 pt | $588,000 | $2,352.00 | 168 |
| Free → Premium | $1,788.00 | 0.2 pt | $894,000 | $3,576.00 | 255 |
| Plus → Premium | $1,200.00 | 0.1 pt | $1,200,000 | $4,800.00 | 343 |
A truck has to serve 168 people a day, every trading day, for 250 days before the $49 tier is worth having on the card rate alone. Put a real number through it. Take a good year for a single truck — $250,000 of card volume at a $14.00 average ticket, which is 17,857 transactions. On Square Free that costs $6,500.00 in percentage plus $2,678.55 in per-transaction fees, or $9,178.55. On Square Plus it costs $6,250.00 plus the same $2,678.55, or $8,928.55, and then you add the $588.00 subscription, and you arrive at $9,516.55. The paid tier is $338.00 more expensive than the free one at a volume most single trucks would be delighted with.
Run the same $250,000 through Clover’s Starter rate and it costs $5,750.00 plus $1,785.70, or $7,535.70. Amortize the cheaper of Clover’s two routes over its 36 months and the software runs $1,362.40 a year, for an all-in $8,898.10 — $280.45 a year less than Square Free, box included. I did not expect that when I started and it is worth stating plainly: on a high-transaction, low-ticket business, ten cents beats fifteen cents, and the lowest sticker price in the category is not the lowest total.
There is a caveat I will not skip. Square Free requires no term. Clover’s cheaper route requires $849 on day one and its other route locks you in for three years. If your truck might not exist in eighteen months — and a lot of them do not — the flexible, slightly more expensive option is the correct one, and the $280.45 is the price of an exit.
The platforms built for this trade publish nothing at all
Every vertical I have written about in this series has a small number of specialist vendors who understand the trade better than the generalists do, and the pattern is always the same: the deeper the product understanding, the less likely there is a price on the website. Mobile food is the most extreme case I have found.
Best Food Trucks describes itself on its own site as “the nation’s largest food truck booking & ordering platform.” Its /pricing path returns “This page could not be found”, and so does /food-truck-owners. Street Food Finder sits behind a Cloudflare bot challenge that will not serve a page to anything but a human browser, so whatever it charges is not readable from outside. truckster.com returned no response at all — not a 404, not a redirect, no connection. Three of the best-known names in the category, and between them not one published figure.
I want to be even-handed about why. Booking platforms take a cut of a booking, and a cut is awkward to publish because it depends on who the customer is and who introduced them. That is a legitimate commercial reason, not a trick. But the consequence for an operator is concrete: the only prices you can compare before you commit are the ones set by companies that have never thought about your ordinance, and the companies that do think about your trade will only tell you what they charge after you have told them about your business.
The meter charges per location. A truck does not have one.
This is the sentence that made me want to write the article. On Square’s pricing page, in the row headed “Locations”, the explanatory text reads:
With Square Plus and Square Premium, the monthly fee applies to each location you run.
It is a perfectly reasonable commercial rule and I have no complaint about it. It is also, applied to this trade, a category error with a price attached. The defining property of a food truck is that it does not have a location. It has a sequence of locations — a lunch stop, an office park, a brewery lot on Thursday evening, a festival on Saturday — each occupied for an hour or three, none of them owned, several of them contingent on a permission, and in Baltimore some of them illegal for reasons that have nothing to do with the truck and everything to do with what the building across the street sells.
So the meter counts the one thing the business does not have, and it counts it as a scalar. The billing system says one. The ordinance says the number is whatever your GPS trail says it is. Three meters, three units of account: the point of sale bills per location, the payroll module bills per employee, and the City bills per license class and per vehicle — and the vehicle’s permitted geography is printed on a piece of laminated plastic that hangs in the window.
The part no national platform models
Baltimore rewrote its street vending law in Ordinance 14‑237, which took effect on 28 February 2015 and lives at Article 15, Subtitle 17 of the City Code. Ordinance 22‑124 and Ordinance 25‑013 have since amended a good deal of it, and the licensing power now sits with the Department of Consumer Protection and Business Licensing. It is a short subtitle. Part III, headed “Prohibited Conduct”, runs from §17‑30 to §17‑39 and contains nine operative sections. Every one of them is, in software terms, a spatial or temporal predicate over a proposed stop. Not one of them is a field in any point of sale on the market.
The same number, measured from two entirely different things
Start with the famous one. Here is §17‑33 in full, as it currently reads:
A mobile vendor may not park a vendor truck within 300 feet of any retail business establishment that is primarily engaged in selling the same type of food product, other merchandise, or service as that offered by the mobile vendor.
Note the words other merchandise, or service. This is usually reported as a food rule and it is not one; a truck selling screen-printed shirts is barred from parking near a clothing shop on exactly the same terms. Note also what the circle is centered on: someone else’s building, selected by a test about what that someone else primarily sells.
Now here is §17‑35, which almost nobody talks about and which is, for a working truck, considerably harder:
In a residential area, no street vendor may stand or park his or her vehicle: (1) for more than 15 minutes at a given location, except as authorized by subsection (b) of this section; or (2) within 300 feet of any location at which the vehicle stood or parked during the preceding 48 hours.
The same number. A completely different center. This circle is drawn around your own past. Every residential stop your truck makes creates a 300‑foot exclusion zone that follows the vehicle for two days and then evaporates. The set of forbidden places is generated by the vehicle’s own history, is different for every truck in the city, changes hour by hour, and is knowable only from a location log that the vehicle is not keeping.
I have built retail systems for fifteen years and I cannot think of another rule shaped like this one. Compliance rules normally point at an external fact — a license, a label, a threshold, a date. This one points at you, an hour ago. And it composes with the fifteen-minute limit in the same subsection to produce something genuinely awkward: a residential ice-cream-style route is legal only if it never doubles back within two days, which is a constraint on the route, not on any individual stop. You cannot check it one stop at a time. You have to check the itinerary.
Nothing on the market records where a truck stood. A point of sale records what was sold and when. Some of them will stamp a transaction with a rough location if the tablet has GPS and permission, but that is a byproduct of a payment, not a log of a stop — it records the moments money changed hands, not arrival, not departure, not the ninety minutes in between, and not the stop where nobody bought anything, which is still a stop for the purposes of §17‑35(a)(2).
Two units, one city, and the conversion is in a footnote
Four other sections of Part III draw exclusion zones too. None of them uses feet.
A mobile vendor may not park a vendor truck within 2 blocks of a mobile vending zone.
No street vendor may operate within 2 blocks of a City market designated in City Code Article 16, § 1-2 {“Scope of article”}.
From 7 a.m. to 8 p.m., no street vendor may stand or park her or his vendor vehicle within 2 blocks of the grounds of: (1) any building used as a public or private kindergarten, elementary school, or secondary school; or (2) any public transit stop serving a kindergarten, elementary school, or secondary school.
Except as provided in subsection (b) of this section, a street vendor may not sell any food product, other merchandise, or service within 2 blocks of the perimeter of any farmers’ market authorized by the Commissioner of Housing and Community Development when the farmers’ market is in operation.
So one ordinance measures the same physical city in feet in two sections and in blocks in four. A block is not a distance. It is a topological count over a street network, and in Baltimore it varies from the long runs of Fells Point to the short ones downtown. No mapping API accepts it. Every geofencing library on earth takes meters or feet and returns a circle or a polygon; not one of them takes “two blocks”.
There is a conversion, and its provenance is remarkable. It is not in the ordinance. It is in a footnote of the Court of Appeals of Maryland’s 2020 opinion upholding the 300‑foot rule, immediately after the court quotes §17‑33:
Three hundred feet is approximately the length of a typical City block.
Read that with the four sections above. If a typical block is about 300 feet, then two blocks is about 600 feet, and the school, City market, farmers’ market and vending-zone exclusions are each roughly twice the radius of the celebrated 300‑foot rule. Doubling a radius quadruples an area: a 300‑foot circle covers about 282,743 square feet, or 6.49 acres; a 600‑foot circle covers about 1,130,973 square feet, or 25.96 acres. The rule that generated a five-year constitutional lawsuit is the smallest exclusion in Part III, by a factor of four in area, and the larger ones are expressed in a unit that cannot be typed into a map.
| Section | What it restricts | Unit | Approx. radius | Approx. area |
|---|---|---|---|---|
| §17‑30(b) | Trash removal on leaving a stop | feet | 10 ft | 314 sq ft |
| §17‑32 | Proximity to a mobile vending zone | blocks | ~600 ft | ~25.96 acres |
| §17‑33 | Proximity to a retailer selling the same type | feet | 300 ft | 6.49 acres |
| §17‑34 | Selling without a commissary logbook | document | — | — |
| §17‑35(a)(1) | Time at one residential location | minutes | 15 min | — |
| §17‑35(a)(2) | Proximity to your own stop in the last 48 hours | feet + hours | 300 ft / 48 h | 6.49 acres each |
| §17‑36 | Operating between midnight and 6 a.m. | clock hours | — | — |
| §17‑37 | Proximity to a City market | blocks | ~600 ft | ~25.96 acres |
| §17‑38 | Proximity to a school or a school transit stop, 7 a.m.–8 p.m. | blocks + clock hours | ~600 ft | ~25.96 acres |
| §17‑39 | Proximity to a farmers’ market while in operation | blocks + a live schedule | ~600 ft | ~25.96 acres |
The words the ordinance does not define
The 300‑foot rule was litigated for five years. Two food trucks, a pizza truck and a barbecue truck, argued that it violated Article 24 of the Maryland Declaration of Rights. The Circuit Court for Baltimore City rejected the Article 24 challenge but enjoined enforcement on 19 February 2018 on the separate ground that the rule was unconstitutionally vague. The Court of Special Appeals agreed on the merits and reversed the injunction in 2019. The Court of Appeals affirmed that judgment in 2020, holding that the rule survives rational basis review and is not impermissibly vague on its face.
The rule is therefore valid. That is settled and I am not relitigating it. What interests me is a sentence the Court wrote while describing the ordinance, which is not a holding at all, just a plain statement of fact:
The term “food product” means “any item used as food, drink, confectionary, or condiment for human consumption, whether simple or compound.” Id. § 17-1(c). The phrases “primarily engaged in” and “same type” are not defined in the Ordinance.
A rule can be constitutionally sound and still be uncomputable, and this is what that looks like. To evaluate §17‑33 for one parking spot you need three things. You need the set of retail business establishments whose premises fall within 300 feet — and the Circuit Court, construing the section, said the measurement runs from the closest point of the space in the building occupied by the restaurant, or of the food court the restaurant sits in, rather than the closest point of the building, to the closest point of the truck. That construction came in the judgment that was later reversed, so treat it as a description of the physical question rather than as settled law — but the physical question is the same either way, and it is the hard part. That is a leased-suite polygon, not an address. Every commercial geocoder in the world will give you a point for “400 E Pratt St”. None of them will give you the outline of the unit that a particular tenant occupies inside it.
Second, you need to know what each of those establishments is primarily engaged in selling. Not what its license category says, not what its NAICS code says — what it primarily sells, undefined. Third, you need to decide whether that is the same type as what you sell, also undefined, on a day when you have put a special on.
The record in that case shows what compliance actually costs a human being. The Court describes one of the plaintiffs preparing to operate in Hampden and Federal Hill by going through the menus of the brick-and-mortar restaurants in both neighborhoods, one at a time, and concluding from the prevalence of places selling Italian sandwiches and pizza that he could not operate in either. That is a manual spatial join against a hand-built menu index, performed by a man who wanted to sell sandwiches. It is also, described precisely, a piece of software that nobody has written.
The geofence whose center is a bus stop
Of the four block-based rules, §17‑38 is the one I would put at the top of a build list, because its second limb has a property the others do not. Read it again: two blocks from the grounds of a school, or two blocks from any public transit stop serving a kindergarten, elementary school, or secondary school, between 7 a.m. and 8 p.m.
School buildings are a finite, mapped, publicly known set. Transit stops are also mapped and published. But the intersection — the subset of transit stops that serve a school — is not a published dataset anywhere I could find, and the verb is doing enormous work. Does a city bus stop outside a high school serve it? Does the stop two streets away that most of the students actually use? Does a stop on a route that a school bus also runs along? The ordinance does not say, and unlike the school buildings themselves, the answer is not a matter of looking at a map.
There is a related provision on the other side of the same question. §17‑5(a)(3) says no mobile vending zone may be designated within 2 blocks of the grounds of any building used as a public or private kindergarten, elementary school, or secondary school. So the school buffer binds the City when it draws zones and binds the vendor when it parks — but the vendor’s version has the extra transit-stop limb and the City’s does not. The two rules that look like the same rule are not the same rule, and the difference is the harder half.
Nine prohibitions, and a counter that adds them all together
Now the enforcement machinery, which is where the ordinance stops being an inconvenience and starts being a business risk. §17‑42 first:
A person who violates any provision of this subtitle or of a rule or regulation adopted under this subtitle is guilty of a misdemeanor and, on conviction, is subject to a penalty of $500 for each offense.
Five hundred dollars is survivable. The next section is not:
On a street vendor’s 3rd violation of any provision of Part III of this subtitle within any 1-year period, the Department must revoke that street vendor’s license.
Read the words any provision of Part III against the table above. The three violations do not have to be related. A trash citation under §17‑30(b) in October, a sixteen-minute residential stop under §17‑35(a)(1) in March, and a bus stop nobody realized served a school under §17‑38 in July are three violations of three unrelated rules, and the third one ends the business. Must revoke — not may. And §17‑44(c) adds that a revoked licensee may not apply for a new license until at least 1 year from the date of revocation.
Then subsection (d) of the same section, as most recently amended by Ordinance 25‑013, which changes the risk profile completely:
The Department’s issuance of a denial, suspension, or revocation of a license is effective immediately, and any operations previously allowed by the denied, suspended, or revoked license must cease immediately and may not resume until the Board of Municipal and Zoning Appeals issues a written decision reversing the Department’s decision.
An appeal does not stay the shutdown. The truck stops on the day of the decision and stays stopped until a written reversal arrives.
So the single most consequential number in a Baltimore food truck’s life is a count of citations inside a rolling 365‑day window across nine heterogeneous rules, and the operator has no way of knowing what that count currently is. It is not on any statement. It is not in the point of sale. It arrives as separate pieces of paper from separate enforcement paths — §17‑41 allows an environmental citation under Article 1, Subtitle 40, or a civil citation under Subtitle 41, in addition to any other civil or criminal remedy — and it decays silently as old citations pass their first anniversary. This is a running aggregate over a rolling window. It is about forty lines of code, and it is the number the business actually turns on.
Twenty-five feet, including the generator
Two more provisions that put physical facts about the vehicle into the license itself. First, a hardware specification in a licensing statute:
The Department may not issue a new or renewal license for a mobile vendor to operate out of any vehicle with a total operating space that is longer than 25 feet, including any generator, hitch, trailer, or other motor vehicle attachment.
Twenty-five feet is not the length of the truck. It is the length of the operating space, and the section names three things that count toward it which a vehicle registration would not: the generator, the hitch, the trailer. A fleet table that stores vehicle_length_ft has stored the wrong quantity. The field you need is total operating space including attachments, and it changes when you tow something.
Second, the badge. §17‑24 requires the Department to issue an identification badge for every license, made of laminated plastic or another durable substance, bearing six things: the vendor’s name and address; the type of merchandise or service the license is issued for; the location or area for which the license is issued; the days or times to which the license is limited; the expiry date; and an identifying number matching the license. It must be prominently displayed while vending.
Two of those six fields are the truck’s permitted geography and its permitted schedule — the exact two dimensions the ordinance regulates — and they exist as printing on a piece of plastic hanging in the window. There is no API. There is no export. If you want them in a system, somebody types them in.
| Field on the badge | In a typical POS? | What it actually governs |
|---|---|---|
| Vendor’s name and address | Yes, as the business record | Identity |
| Type of merchandise or service licensed | Partly, as a category | The comparison set under §17‑33 |
| Location or area the license is issued for | No | Where the truck may legally trade |
| Days or times the license is limited to | No | When the truck may legally trade |
| Expiry date | No | A 30-day renewal deadline under §17‑19(b)(2) |
| Identifying number matching the license | No | The key every citation is filed against |
While we are on deadlines: §17‑19 makes a license expire on the first anniversary of its effective date and requires the renewal application, in the Department’s form, with the annual fee, at least 30 days before the current license expires. A truck that renews on the expiry date has missed the deadline by a month. And §17‑20 gives temporary licenses a term of 4 days, renewable once for one additional 4-day period, with any further renewal requiring departmental approval after consultation with affected businesses, residents and community organizations. Eight days, and then it becomes a conversation.
Four classes, two axes, and only one price that moves
The last piece is the fee schedule, and it contains a small structural oddity worth a paragraph. §17‑21 lets the Board of Estimates set the fees and says they may vary based on the license class, vendor type, or location at which a vendor is authorized to operate. Here is what the City currently publishes.
| Class | Vendor type | Where | Annual fee | First year with the $25 application fee |
|---|---|---|---|---|
| A | Food vendors | Downtown | $375 | $400 |
| B | Food vendors | Outside downtown | $75 | $100 |
| C | Merchant vendors | Downtown | $75 | $100 |
| D | Merchant vendors | Outside downtown | $75 | $100 |
Two axes, four cells, and only one of them is priced differently. A merchant vendor pays $75 downtown and $75 outside it; location is free. A food vendor pays $375 downtown and $75 outside it, which is five times as much for the same activity, a difference of $300 a year, decided entirely by which side of a boundary the license is issued for.
And that boundary is worth knowing precisely, because $300 turns on it. Article 15 does define a “Downtown area” — but it does so in Subtitle 19, which governs newspaper vending boxes, and that subtitle’s definitions open with the words whenever the following words and phrases are used in this subtitle. The definition is expressly scoped to newspaper boxes. Subtitle 17 does not define downtown at all. So the fee class that costs five times more than its neighbor turns on a term the licensing subtitle leaves to the schedule that uses it. That is not a defect — fee schedules are allowed to say what they mean — but it is one more place where the answer your software needs is not in the document your software could read.
One more, and it is the quietest of the nine. §17‑34:
A mobile vendor may not sell any food product without keeping a detailed logbook noting the vendor’s daily use of its supporting commissary. … The logbook must: (1) be in the form the Department of Consumer Protection and Business Licensing requires; and (2) contain all the information required by the rules and regulations adopted under this subtitle. … The logbook must be made available for review to any City inspector or enforcement officer upon request.
A daily record, in a prescribed form, produced on demand at the curb, and a violation of it counts toward the three that end the license. Every truck I have met keeps this on paper in the glovebox, because the alternative is to build it, and nobody sells it.
The e-commerce half: a pickup slot is a legal question
Everything above is about the street. The online side of a food truck looks, at first glance, like the easiest e-commerce build in the world — a short menu, a pre-order, a time slot, a card. It is not, and the reason is the same reason the street side is hard.
What a pre-order actually asks
Every checkout flow ever built assumes one of two things. Either the goods travel to the customer, in which case the system needs a shipping address, or the customer travels to the goods, in which case the system needs a store. Shopify, Square Online, Toast’s digital storefront and every plugin in between are built on that fork. A food truck fits neither branch. The customer travels to the goods and the goods are moving.
What a truck actually needs to offer at checkout is a (place, window) pair: Thursday, 12:15–13:30, the plaza off Light Street. And in Baltimore, whether that pair may be offered at all is a function of the nine predicates in Part III. If the plaza is within 300 feet of a sandwich shop, the slot is not sellable. If it is within two blocks of a farmers’ market that operates on Thursdays, it is sellable on Tuesday and not on Thursday, because §17‑39 only bites when the farmers’ market is in operation. If the truck stood there on Tuesday and the plaza is residential, §17‑35(a)(2) rules out Wednesday and Thursday but allows Friday.
Which means: the ordinance is not a compliance module bolted onto the ordering system. It is the availability engine. The same query that decides whether a slot appears on the page is the query that decides whether the truck can lawfully be there, and it has to run before a customer is allowed to pay for something. This is the single strongest argument for a custom build in this vertical, and I have never seen a platform that could be configured into it, because the platforms model availability as opening hours attached to a store record and the answer here is a function of four things the store record does not contain.
There is a smaller but real second problem underneath it. A pre-order creates a promise to be somewhere. If the truck is moved on — and trucks are moved on, by police, by construction, by a special event permit that arrived after you booked the pitch — the system holds forty paid orders pointing at a place the truck is no longer allowed to occupy. What should happen is that the orders travel with the vehicle and the customers are told, once, where it went. What actually happens is a flurry of Instagram posts. A location field on an order, mutable after payment, with a notification attached, is not a hard feature; it simply does not exist in a product whose data model says an order belongs to a store.
The second product line, and the date it changes
The other half of a truck’s online store is usually not food to eat now. It is the jar: the hot sauce, the spice blend, the pickles, the thing customers ask to buy after they have eaten. It ships, it does not spoil, and it is the only part of the business with a margin that does not depend on standing in a car park. It is also governed by an entirely separate body of law from the truck, and the boundary is worth understanding before you switch on shipping.
If the jars are produced in your licensed commissary, ordinary food establishment rules apply and this section is not about you. If they are produced in a residential kitchen, Maryland’s cottage food regime applies, and its central definition is unusual in a way that matters for an online store. Health‑General §21–301(b–2):
“Cottage food product” means a nonhazardous food, as specified in regulations adopted by the Department, that is sold in the State in accordance with § 21–330.1 of this subtitle and regulations adopted by the Department: (1) Directly to a consumer from a residence, at a farmer’s market, at a public event, by personal delivery, or by mail delivery; or (2) To a retail food store, including a grocery store, or a food cooperative.
Note where the words sold in the State sit. They are not in a separate provision saying a cottage food business may not sell out of state. They are inside the definition of what a cottage food product is. And by mail delivery is one of the listed channels, so mail is contemplated — but the definition it sits inside is geographically bounded. Whether an out-of-state order therefore falls outside the definition entirely, rather than merely breaking a rule, is a question I would put to counsel before flipping a shipping profile, and I am flagging it rather than answering it. What is not in doubt is the practical shape: a field on your checkout page — the shipping state — sits directly upstream of the product’s regulatory classification. Shopify and Square Online will both let you restrict shipping by region. Neither will tell you why you should.
The second thing that sits upstream is the money, and it moves in three weeks. §21–301(b–1) defines a cottage food business as one that produces or packages in a residential kitchen, sells in accordance with §21–330.1, and:
(3) Has annual revenues from the sale of cottage food products in an amount not exceeding [$50,000] $100,000.
The brackets are the General Assembly’s own drafting convention: bracketed matter is deleted, capitals are added. That is House Bill 535 of the 2026 session, sponsored by Delegates Arentz, Ghrist, Jacobs, T. Morgan and Reilly, passed 136–0 in the House on 26 February 2026 and 42–0 in the Senate on 13 April 2026, signed as Chapter 320 on 28 April 2026, effective 1 October 2026. As I write this it is 21 days away, and it doubles the ceiling.
Look at the shape of that ceiling, because it is not a penalty threshold. It is an identity threshold. A business is a cottage food business only while its revenues do not exceed the number; above it, the exemption in §21–330.1(b) from being licensed by the Department simply does not describe you any more. So the cap is not a fine you risk. It is the boundary of a legal category, and your e-commerce store’s running total is the thing that crosses it. Note also that the statute says “annual revenues” without saying which twelve months, which is a real modeling question for anyone near the line in the weeks either side of 1 October.
Then the label, which is where the online store gets a job nobody assigned it. §21–330.1(c) requires every cottage food product to be prepackaged with a label carrying the business name and address (or name, phone and a Department-issued identification number), the product name, the ingredients in descending order of the amount of each ingredient by weight, the net weight or net volume, allergen information to federal standard, and nutritional information if any nutritional claim is made. Plus this, exactly:
The following statement printed in 10 point or larger type in a color that provides a clear contrast to the background of the label: “Made by a cottage food business that is not subject to Maryland’s food safety regulations.”
A type size and a contrast requirement, in a health statute. And then the part that turns one product into two: subsection (c)(2)(iii) adds two further fields for a cottage food product offered for sale at a retail food store — the phone number and e-mail address of the business, and the date the cottage food product was made.
| Field | Direct to consumer | At a retail food store |
|---|---|---|
| Business name and address, or name, phone and Department ID number | Required | Required |
| Product name | Required | Required |
| Ingredients in descending order by weight | Required | Required |
| Net weight or net volume | Required | Required |
| Allergen information to federal standard | Required | Required |
| Nutritional information, if a claim is made | Conditional | Conditional |
| The 10-point contrasting statement | Required | Required |
| Phone number and e-mail address | — | Required |
| The date the product was made | — | Required |
So the channel is a label input. One SKU, one recipe, one jar, and the set of things that must be printed on it depends on whether it leaves through your own checkout or through the corner shop on Falls Road. If you sell both ways — and the whole point of adding a retail line is to sell both ways — you need two label templates keyed to the destination, and one of them carries a made-on date, which means it is a per-batch field, not a per-product one. Every e-commerce platform in existence models labels as an image you upload once.
One last note on why this is worth getting right rather than approximately right. §21–1214(a)(2) expressly exempts a violation of §21–330.1 from the criminal penalties that apply elsewhere in the subtitle — a genuine and deliberate softening. But subsection (b)(1) leaves a civil penalty not exceeding $5,000 in place, and subsection (c) says each day on which a violation occurs is a separate violation. A product page is up every day. Thirty days of a wrongly labeled listing is thirty violations, and the statutory maximum on that arithmetic is $150,000. I am quoting a ceiling, not a forecast; nobody is going to fine a sauce maker $150,000. The point is structural: this is one of the few compliance obligations whose exposure grows with uptime, and uptime is the one thing an online store is designed to maximize.
The one geolocation feature that works here computes a constant
I want to close this half with the neatest inversion I found. Sales tax on a mobile business is the classic hard problem — in most states the rate depends on where the sale happened, and every mobile point of sale advertises location-based rate lookup as a headline feature. In Maryland, the sales and use tax is 6% statewide, and the State does not permit counties or municipalities to add a local rate. There are no county additions, no city surcharges and no ZIP-code lookups.
So on a Baltimore truck the geolocation feature you are sold resolves, every time, to the same number. Meanwhile the location questions that actually change the answer — how far to the nearest retailer primarily engaged in selling what you sell, how far to a transit stop serving a school, how far to where you yourself stood on Tuesday — are on nobody’s roadmap. The GPS is on. It is just answering the wrong question.
Since we are on tax, one disclosure that applies to our own invoice as much as to anyone’s: since 1 July 2025 Maryland taxes data and information technology services and software publishing at 3% under Tax‑General §11–101(m)(14) and (15). Prepared food sold from a truck is taxed at the ordinary 6%. If you buy software from us, the software is taxed at half the rate of the sandwich.
What custom software actually costs
We publish four fixed prices and we do not move them per client. A Prototype Sprint is $3,500: a discovery call and a real, deployed, clickable prototype. An Online Store starts at $6,000. A Custom App or internal tool starts at $12,000, and so does an Operations System. You own the code and the infrastructure at the end of it.
Now let me do the comparison honestly, because on this vertical it does not flatter us and pretending otherwise would be insulting. Here are the two realistic subscription stacks a Baltimore truck might actually run, built only from published floors.
| Stack | Components | Per month | Per year |
|---|---|---|---|
| A — what most single trucks run | Square Free | $0.00 | $0.00 |
| B — the grown-up Square stack | Square Plus $49.00 + Square KDS $30.00 per device | $79.00 | $948.00 |
| C — the Toast stack with payroll | Toast Point of Sale $69.00 + $9.00 × 2 employees | $87.00 | $1,044.00 |
| D — a system that checks a stop against Part III | — | not sold | not sold |
| Package | Fixed price | Months of Stack B ($948.00/yr) | Months of Stack C ($1,044.00/yr) |
|---|---|---|---|
| Prototype Sprint | $3,500 | 44.3 | 40.2 |
| Online Store | from $6,000 | 75.9 | 69.0 |
| Custom App | from $12,000 | 151.9 | 137.9 |
| Operations System | from $12,000 | 151.9 | 137.9 |
Those are long numbers and I am not going to dress them up. On most of the verticals I have written about in this series, the subscription stack is expensive enough that a custom build pays for itself in two or three years on cost alone. On food trucks it does not. The commodity platforms are so cheap here, and a truck’s till needs are so modest, that you will never make back $12,000 by escaping a $79 bill. If someone tells you otherwise, check their arithmetic.
Which means the case for building has to rest entirely on the other side of the ledger: not the cost you avoid, but the thing you can do that you currently cannot. For a Baltimore truck that is a short and specific list — knowing where you may park, knowing what number your violation counter is on, keeping the logbook §17‑34 requires, and selling a pre-order slot you are certain you can honor. If none of those is costing you real money, keep your $0 a month and go and cook. I mean that.
What we would actually build for a Baltimore food truck
The shape of the system follows from everything above, and the first thing to say about it is what it is not. It is not a point of sale. Keep Square, keep Toast, keep Clover, keep whatever is already taking money at the window. Nothing I have described needs to touch a card.
What it is, is a record of stops rather than a record of sales — and that single change of primary key is most of the value. A stop has a location, an arrival time, a departure time, a license it was made under, and a set of predicates it either satisfied or did not. Once that record exists, four things fall out of it that nobody can currently do.
The first is a pre-flight check on a proposed pitch. You give it a point on a map and a time window, and it evaluates the nine sections of Part III against it: the 300 feet under §17‑33, the two blocks under §17‑32, §17‑37, §17‑38 and §17‑39, the midnight-to-six bar under §17‑36, and the fifteen-minute and 48-hour residential rules under §17‑35. Some of those it can answer definitively from open data — school buildings, City markets, the streets themselves. Some of them it can only answer with a maintained local list, and the honest way to build it is to make that explicit: green where the ordinance is satisfiable from data, amber where a human has to look, red where it plainly fails. A tool that says I do not know, and here is exactly why is far more useful than one that guesses, and it is the difference between something a truck will trust and something it will switch off in week three.
The second is the violation counter. Citations in, dated, categorized by section, aggregated over a rolling 365 days, with the count and the date the oldest one falls out of the window shown on the same screen as everything else. Two is a warning. Under §17‑44(b) three is the end, and under §17‑44(d) the appeal does not buy you a single trading day. This is a small feature and it is the one I would build first.
The third is the commissary logbook from §17‑34 — daily, in the form the Department requires, and producible on a phone at the curb when an inspector asks, which is the actual requirement in the actual moment it matters. If the Department’s form changes, the template changes, and nobody has to buy a new notebook.
The fourth is the pre-order page whose availability comes from the first three. Slots are generated from the schedule, filtered through the pre-flight check, and published only where the ordinance permits. Orders carry a location that can be moved after payment, with a message to every affected customer when it is. And if you run the jar line, the same system holds the label fields, knows which template a batch is destined for, carries the made-on date for the retail channel, and keeps the running revenue total against a ceiling that changes on 1 October 2026.
That is a $12,000 Operations System with an Online Store hanging off it, or a $3,500 Prototype Sprint if you want to see the pre-flight check working against your own three favorite pitches before you commit to anything. It is deliberately not an attempt to replace the till, and it would be a worse product if it were.
Build, buy, or leave it alone
I have written some version of this section thirty times now, and this is the vertical where I most want to steer people away from a project. The commodity tools genuinely fit the till side of this trade. The gap is narrow, specific, and real — and if the gap is not currently costing you anything, the correct decision is to spend nothing. So here is the honest test, and it is the only list in this article:
- Buy, and stop reading. One truck, a fixed set of pitches you have run for years, no residential route, no pre-orders, no packaged line, and no citations. Square Free costs nothing and does the job. Nothing below applies to you.
- Buy, but check the rate. High transaction count and a low average ticket — coffee, tacos, scoops. Ten cents versus fifteen cents per transaction is worth more to you than any subscription tier, and at $250,000 of card volume Clover’s Starter rate came out $280.45 a year ahead of Square Free including the box. Do that arithmetic with your own ticket average before anything else.
- Build the counter, and only the counter. If you have taken two citations in the last twelve months, the thing you need is a $500 spreadsheet discipline or a small tool that tells you what number you are on and when it decays. Everything else can wait.
- Build properly. Two or more trucks, a residential or roaming route where §17‑35(a)(2) actually bites, pre-orders you have had to cancel, a packaged line approaching the cottage food ceiling, or a license you have already had suspended. At that point the ordinance is a daily operating constraint, not a background risk, and there is nothing to buy.
- Leave it alone. If the honest answer is that the truck is a side business and the paperwork is somebody’s Sunday evening, no software fixes that, and a project would just be a more expensive Sunday evening.
Who we are
We are a two-founder studio in Baltimore. We build custom software at a fixed price, we work directly with the people who write the code, and you own everything at the end. We have written this series about one Baltimore trade at a time — restaurants, caterers, specialty food retail, seafood markets and forty more — because the interesting part of a small business is almost never the till. It is the specific, local, badly-documented rule that decides what the till is even allowed to record.
If any of the above sounds like your Tuesday, book a call. If none of it does, we would genuinely rather you kept your money.
Common questions from Baltimore food truck operators
What is Baltimore’s 300-foot rule for food trucks?
Baltimore City Code Article 15, §17‑33 says a mobile vendor may not park a vendor truck within 300 feet of any retail business establishment that is primarily engaged in selling the same type of food product, other merchandise, or service as that offered by the mobile vendor. The Court of Appeals of Maryland upheld it in 2020 in Pizza di Joey, LLC v. Mayor and City Council of Baltimore, holding that it is rationally related to the City’s legitimate interest in the economic vibrancy of its commercial districts and that it is not impermissibly vague on its face. The same opinion records that the phrases “primarily engaged in” and “same type” are not defined in the ordinance, which is why the rule is easy to state and hard to compute: it asks you to compare your menu with the menu of every retail food business within a 300-foot circle, and nobody publishes that list.
How much does food truck POS software cost in 2026?
On 10 September 2026 Square published $0 a month for Square Free, $49 a month per location for Square Plus and $149 a month per location for Square Premium, with card-present processing at 2.6% + 15¢, 2.5% + 15¢ and 2.4% + 15¢ and online payments at 3.3% + 30¢ on Free and 2.9% + 30¢ on the paid tiers. Toast published a $0 Starter Kit for one location and up to two terminals, $69 a month for Point of Sale, custom pricing for Build Your Own, and no processing rate at all. Clover’s quick-service Starter system was published two ways on the same page — $135 a month for 36 months, or $849 up front plus $89.95 a month — with card-present processing at 2.3% + 10¢. The three platforms built specifically for food trucks published no prices at all.
Is Square Plus worth it for a food truck?
Only above a volume most single trucks never reach. Square Plus costs $49 a month, which is $588 a year, and it buys a card-present rate of 2.5% instead of 2.6% — a tenth of a percentage point, because the 15¢ per transaction is identical on every tier. That means the upgrade pays for itself at $588,000 a year of card-present sales, which over a 250-day trading year is $2,352.00 a day, or about 168 covers a day at a $14.00 average ticket. Run a realistic year through it instead: at $250,000 of card volume and a $14.00 ticket, Square Free costs $9,178.55 in processing and Square Plus costs $8,928.55 in processing plus $588.00 of subscription, or $9,516.55. The paid tier is $338.00 more expensive than the free one.
How many food trucks are there in Baltimore?
County Business Patterns for 2023 counts 19 mobile food services establishments with paid employees in Baltimore City, employing 36 people with $1,253,000 of annual payroll, and 178 across Maryland with 536 employees and $14,961,000 of payroll. Baltimore County has the largest cluster in the state at 36 establishments. Those figures count only businesses that run payroll, and most food trucks do not, so the number of trucks actually on the street is a large multiple of 19. The employer count is still the useful one for comparison: the same dataset counts 632 limited-service and 424 full-service restaurants in Baltimore City, which is 1,056 establishments, or 55.6 restaurants for every mobile food business with employees.
Can a food truck lose its license in Baltimore for parking in the wrong place?
Yes, and the mechanism is a counter rather than a single offense. §17‑42 makes a violation of any provision of the street vendor subtitle a misdemeanor carrying a penalty of $500 for each offense. §17‑44(b) says that on a street vendor’s third violation of any provision of Part III within any one-year period the Department must revoke that vendor’s license, and §17‑44(c) bars a new application for at least one year from the date of revocation. Part III contains nine separate prohibitions — trash, distance from vending zones, the 300-foot rule, the commissary logbook, residential parking, night hours, City markets, schools and farmers’ markets — so three entirely unrelated violations produce the same mandatory result. And under §17‑44(d), a revocation takes effect immediately and operations may not resume until the Board of Municipal and Zoning Appeals issues a written decision reversing it.
Does a Maryland food truck have to charge different sales tax in different counties?
No. Maryland levies a single statewide sales and use tax of 6% and does not permit counties or municipalities to add a local rate, so there are no county additions, no city surcharges and no ZIP-code lookups. This matters more for a mobile business than a fixed one, because location-based tax lookup is the one geolocation feature every mobile point of sale ships, and in Maryland it computes a number that never changes. The location questions that do change the answer for a Baltimore truck are the ones in the vending ordinance, and no platform models those.
Can a food truck sell packaged products like sauces online in Maryland?
It depends which regime the product is made under. Produced in a licensed food establishment such as your commissary, ordinary food establishment rules apply. Produced in a residential kitchen, Maryland’s cottage food regime applies, and Health‑General §21–301(b–2) defines a cottage food product as a nonhazardous food that is sold in the State, directly to a consumer from a residence, at a farmer’s market, at a public event, by personal delivery or by mail delivery, or to a retail food store. The geographic limit sits inside the definition of the product rather than in a separate restriction, which is worth taking to counsel before you switch on out-of-state shipping. The revenue ceiling is also moving: House Bill 535 of 2026, Chapter 320, signed 28 April 2026 and effective 1 October 2026, raises the maximum annual revenue for a cottage food business from $50,000 to $100,000.
Is it worth building custom software for a food truck?
Not to replace the till, and we will say so plainly. Square Free is genuinely free, Toast’s Starter Kit is genuinely $0 a month, and Clover’s card rate is genuinely lower than Square’s, so for taking money at a service window the market has solved the problem better than a bespoke build would. A custom system earns its place on the things nobody sells at any price: a record of where the truck actually stood and for how long, a check of a proposed stop against the nine prohibitions in Part III before you commit to it, a running count of violations inside a rolling one-year window, the commissary logbook §17‑34 requires in the form the Department requires, and a pre-order page that will not offer a pickup slot the ordinance would not allow. Our Prototype Sprint is $3,500 and an operations system starts at $12,000.