Skip to main content
Docs
What's new

Product updates

The latest improvements to DISTRYB — new features, upgrades, and fixes. Come back any time via the ? menu in your dashboard.

Jump to a date

Sep 13, 2026

Added

Running more than one location? On Team, each person now has a locations line under their name. Pick the stores they work at and they see only those — everywhere at once: the shelf, stock counts, the location switcher in their sidebar, message threads for that store, and who can be handed a table order.

  • Nobody is restricted until you say so. Leave it as All locations, which is what everyone has today, and nothing changes for them.
  • No re-invite, no signing out, no new invitation link. Every page they open from then on is scoped to the stores you picked; a tab they already had open picks it up when they next load a page.
  • Owners work everywhere and are not offered the setting. You can also set it on someone you have invited but who has not signed in yet — it is waiting for them when they join.
  • Picking nothing puts someone back on every location.

Fixed

Anyone you invite now lands on one of your locations the moment they sign in. Before this, only the account that created the company was tied to a store: an invited employee or manager opened the dashboard with the location picker on “Select…”, and My Catalog and My Inventory read as if the shelf were empty — at shops with thousands of rows on it.

  • Your shelf, your stock and your saved lists all open on your primary location, and the picker switches between the rest.
  • Floor staff can now actually read the shelf they were given access to, and ask for a change on a row.
  • Store settings open for your managers, not just for you.

Nothing about who can see what has changed: a teammate still only ever reaches the company they belong to, and only the permissions their role holds.

Every row a shelf import created was marked shipping, whatever your shop actually does. That is not a label: a listing counts as shippable to shoppers only when it says shipping, so an import quietly set your whole shelf up to claim mail order — the one way most retailers are not permitted to sell.

Imported rows now take your own answer — the one you gave at signup, or the first time you added a bottle by hand — and fall back to pickup when you have not given one. Set it once and every later import follows it.

Rows already on your shelf have been corrected the same way. Anything you had listed was left exactly as you set it.

The Category column on My Inventory was blank on every row. It was reading a field that page stopped loading, for speed, a while back — and your register's own department was sitting on each row the whole time, unused. It now shows what your register calls the item: Bourbon, Domestic Beer, Wine, RTD. Sorting by the column sorts by the same thing it shows.

Nothing to re-import. On the first shelf we checked, 5,873 of 5,909 rows already carried a department.

Also: the channel allocation card no longer appears for people who cannot change it. Every control on it saves through a permission floor staff do not hold, so it was a card of live inputs and a Save button that could only fail, on a page headed Read-only.

Sep 12, 2026

Added

Retailers now choose how they keep stock: in DISTRYB, or somewhere else — your own register or inventory system — with DISTRYB used for ordering, invoices and online sales.

It matters because DISTRYB can only see the sales that happen through it. A store that sells online here and rings up the rest at the counter has stock in DISTRYB that only ever goes *up* with deliveries. Treating that number as the truth got two things wrong: the stock watcher warned about "unexplained" stock that had simply sold at the till, and online availability could overstate what was on the shelf.

So it asks. Until you answer, your checklist carries Tell us how you track inventory, and DISTRYB does not treat its stock numbers as yours. Choose Track my inventory in DISTRYB and they are — the watcher checks them and online availability trusts them. Choose I track inventory somewhere else and the numbers here are a reference; the watcher leaves them alone.

You can change it any time under Company → How you track inventory. Connecting your POS is coming; when it lands, a connected register counts as tracking in DISTRYB, and the guide at Docs → Tracking your inventory walks through it.

Floor Staff (bartenders, servers, pickers) now see your shelf. A shop's floor gets My Catalog and My Inventory; everyone else's gets Inventory. Read-only: no editors, no cost, no margin — the same rows you see, minus the money.

What they get instead is Request change on every row. A picker who counts 8 where the shelf says 12, a server who spots a wrong shelf price, anyone who thinks a bottle should be listed or pulled — they say what it should be and why, and it lands on a new page, Change Requests, under your catalog.

You (or anyone with the Manage inventory permission) approve or decline each one. Approving applies the change — the count is set, the price is set, the item is listed — through exactly the checks your own edit goes through, so an on-premise-only bottle still can't be talked onto a take-home storefront. Declining sends your note back. Both sides are notified, and the sidebar badges the queue while something is waiting.

Two things your floor can no longer open. The Bottl.Service Partnership view is the money side of the partnership — your earnings, the sales tax you owe, what passes to Bottl.Service — and it is now for owners and finance roles only; before, a staff member saw a locked page captioned "No partnership activity". Affiliates, Campaigns, Promotions and the org-wide Change Log are likewise off the floor's sidebar: each one spends your margin, and the routes behind them already refused a floor account.

The Partnership report itself also reads faster: it now reads only your own seller-of-record orders for the dates you pick, rather than the whole platform's order history on every visit, and it tells you when a period has more orders than one report shows.

Messages now reaches people, not only businesses. Search a name and you find them; open a business and you can message the company, one of its locations, or a named person on its team.

The difference between those is who else can read it, so it is worth being plain. A message to a business goes to the company: anyone there who handles messages sees it, and the thread survives whoever happens to answer leaving. A message to a person is private — just the two of you. No company is in the room, including your own and theirs. Want a third person? Tick two names and start a group, and everyone in it can see who else is there. There is no in-between where a thread is "for" one person but readable by their colleagues.

An ongoing private conversation can be continued with more people. Use Add people and choose what travels with it: nothing, the last 50 messages, or the last 200. The original conversation stays exactly as it was — this starts a new one rather than rewriting the old — and everyone in the original is told what you shared and who with. "Start fresh" is the default, because sharing somebody else's messages should be something you choose, not something you get by not choosing.

Reaching a person passes the same door as reaching their company. If a business only accepts messages from existing partners, naming someone who works there does not get round that, and a cold introduction costs the same reach credit — refunded, as always, the moment they reply.

Private threads have their own Private section in the sidebar, and say so in the header.

Letting guests pick their bourbon is a good feature and a miserable setup. For every cocktail you had to choose which bottles it could be poured with, find each one in your catalogue, and invent an upcharge for all of them — thirty numbers before anyone could order a drink.

Ask PLUG to do it. "Set up our cocktails." It reads your actual shelf, works out which classics you can make from what's in stock, and comes back with a menu: each drink, a price, and a spirit ladder — well, call, premium — with the upcharge already worked out. Nothing is written until you say yes, and you can change any of it.

Where the numbers come from

PLUG doesn't make prices up, and it will tell you exactly where each one came from. The price of the drink comes from what your house pour costs you, at the spirit cost a bar programme runs. An upgrade is priced on what it actually costs you to pour it instead of the well — so if Woodford costs $2.00 a pour more than your rail, that's what the upcharge is built on.

It is deliberately not your markup on the drink. The price of an Old Fashioned has to cover the labour, the ice, the garnish and the glass, and all of that is already paid for before anyone swaps the bourbon. The only difference between the two drinks is the liquor. Ask PLUG why a number is what it is and it will show you the arithmetic.

A drink you've already priced keeps your price. Run it again after you add three bottles and it will add the new options without touching what you charge.

If a bottle has no cost on file, PLUG says so instead of guessing. And if a cost looks wrong — a bottle priced at under 25c a pour usually means dollars typed into a cents box — it will tell you, because your well is the bottle every other upcharge is measured against.

Tell us what's behind the bar

There's a new Behind the bar panel on Table Ordering: lemons, mint, simple syrup, ginger beer, bitters, cream.

It looks trivial and it is the thing that makes the rest work. Limes and mint aren't stock you count, so your inventory can never tell us whether you can make a Mojito — it only knows about bottles. Tick what you keep and you'll only ever be offered drinks you can actually pour.

Haven't set it yet? We assume you keep the usual citrus, syrups and mixers, and we say so rather than quietly pretending it's your answer. It takes about thirty seconds to make it real.

It also works the other way round: the panel tells you what one ingredient would unlock. Fresh mint would add a Mojito and a Mint Julep. PLUG will say the same about bottles — one of Campari is often three more cocktails.

Your own drinks, not just the classics

The list above is the classics. Your house cocktail isn't on it, and it's usually the one you care most about.

Describe it — "smoked maple old fashioned, rye, maple instead of sugar" — and PLUG writes it up: ingredients, the build your bar reads off the ticket, a price worked out the same way as everything else, and a spirit ladder if it takes one. It checks you can actually make it before offering, and it's your drink on your menu, not something shared with every other bar.

If you name it after a classic, we'll say so. Ask for a "Negroni" and PLUG points you at the real one instead — otherwise you'd end up with two Negronis and a guest's saved usual matching neither. Want your own version? Give it your own name.

It works from a fixed list of ingredients, and that's deliberate: if PLUG could write "elderflower cordial", nothing could ever check whether a bar has it. Anything outside the list goes in the build, where your bartender reads it.

Your regulars get their usual

A guest can save a drink the way they like it — "my Old Fashioned, Woodford if you have it, double, light ice" — and it follows them to any bar on Bottl.Service.

At your bar it is priced at your prices. A saved drink carries the recipe and their preferences, never a number from somewhere else.

And if you don't stock their bottle, we pour yours and tell them so. They see "made with Buffalo Trace" before they order, not after they taste it. Same if they like doubles and you don't offer them.

They only see drinks you can actually make, which is the pantry doing its job again.

Smaller things

Name a drink whatever your menu calls it. Ask for The Ironworks instead of Old Fashioned and that's what guests see, on a drink we still know how to build.

A cocktail can't be shipped. Drinks PLUG adds are marked on-premise only, so they show on your venue menu and never on your storefront.

And a drink goes off the menu when you can't make it. Run out of every bourbon and the Old Fashioned stops being orderable, rather than taking orders the bar can't fill.

Free product could be recorded but not sent. A sample, tasting pour, comp or donation went into the Movement Log, decremented your shelf and fed your taxable-removal gallons — and then you were on your own for getting the box to the venue.

Every giveaway batch now has a ship link beside its delivery receipt, on a new page: put in the delivery address, buy the postage, print the labels.

The boxes are counted for you. Your carrier prices one label per box and sizes the boxes from what is actually in the batch — the same packing rule every order on the platform already uses. You are never asked to guess a number that the carrier is free to disagree with.

It is your carrier account. The labels are bought on the shipping connection you set up, shipping from the premises the stock actually left, with your business as the shipper of record. DISTRYB neither fronts the postage nor appears on the parcel. The recipient's name goes on the label, because an alcohol parcel needs an adult signature checked against an ID at the door.

The address locks when the money is spent. Before you buy, edit it freely. After — the carrier has already printed it, so changing it here would only describe a parcel that does not exist. Void the labels and the address opens again.

What it all cost. A new Postage on giveaways panel on the Movement Log folds to a single total, and opens to a year-by-year breakdown: how many shipments, how much postage. Labels you voided are refunded, so they are not counted.

Your delivery receipt now says what the thing actually was. It used to read "PROMOTIONAL SAMPLE" on every giveaway, including a charitable donation — which is the one thing a venue asking for proof of a donation does not want it to say. A comp now prints as a Donation Delivery Receipt, a tasting as a tasting pour, a sample as a sample.

Sep 11, 2026

Added

Your cocktails had one recipe and one price. A guest who wanted their Old Fashioned made with Woodford had to catch a server and ask, and you had no way to charge for the difference.

Now they can choose on the menu. Set up each drink once — Well, Buffalo Trace +$4, Woodford +$8 — and pick which one is the house pour. A guest who taps Add without reading gets exactly what the menu price says. A guest who wants the good stuff picks it, sees what it costs beside the name, and pays for it at checkout.

You can also offer "make it a double" at your own price, and let people add a short note — light ice, extra lime. Both are per drink, so a Negroni can take a note while a bottle of beer doesn't.

Set it up on My Catalog, on anything sold by the pour. A whole bottle has no spirit to substitute, so the control only appears where it makes sense.

As you set one up, the editor shows what a guest will see — what the drink costs as it comes, and the most it can cost. That catches the two mistakes worth catching: a drink whose only "choice" is the house pour, and a house pour priced above the menu price, which would make the cheapest way to order the drink cost more than the drink. The menu itself quotes the price of the drink as it actually comes, so a guest is never shown a number nobody pays. Changed your mind after adding it to the cart? Tap Change on the line.

The ticket tells the bar what to pour. The substitution reads in gold under the drink name, with the note under that, because a bartender working a rail of tickets is looking for what's different about this one.

A choice only shows if you have the bottle. Point each option at the product it pours from and it disappears from the menu when you run out — no more tickets for an empty bottle, and no guest paying for an upgrade they won't get.

A double counts as two drinks on your service heads-up. One glass arrives, but it's twice the alcohol, and that number is there to help someone decide whether to keep serving. Four doubles is eight drinks.

Guests can ask for a bartender by name

If you want it, a guest can request whoever's working — and it's a request, not a reassignment. The ticket says who they asked for and that anyone can run it, so nobody thinks it belongs to someone else. Tips still go to whoever actually made and carried it.

Tap "On shift" on the floor board when you start. That's what puts you on the list, and it ends when your location does — so forgetting to tap off doesn't leave you there overnight, and a bar open until 4am isn't dropped off the list at midnight either. Only you can change your own shift.

Nobody is listed without choosing to be. A person appears only if they've claimed a Bottl.Service handle and chosen to show they work with you — guests see the handle, never the name on your roster. Being at work isn't the same as agreeing to be named to strangers.

A new Media page under your organization shows every image you have set — your company logo, a photo for each location, the logo of each brand you own, the photo on each product you own or author, and a broker’s profile photo — with where each one appears. Replace, remove or copy any of them from there; each change lands exactly where you would have made it before.

Everyone on DISTRYB can now add a profile photo under Account Settings — the same square crop you know from the rest of the platform. It shows beside every message you send and on your person card when someone opens your profile from a chat, so the people you do business with see who they are talking to. Claim an @alias and you will be asked for one. Your organization’s Media page lists each teammate’s photo alongside its other images.

If you represent a distributor, your catalog showed you MSRP and nothing else — so every call ended with "let me check on price and come back to you".

It now shows the wholesale price, beside a state picker. Three-tier pricing is per destination state, so pick the state your retailer is in and you get that state's posted price for both on-premise and off-premise. It defaults to each partner's home state until you choose.

Only lines you're approved to sell carry a price. Four things it tells you instead of leaving a blank cell:

  • No licence in that state — your partner can't deliver there at all, so there's nothing to offer
  • Not priced — you're approved, but they've never set a price. That's the one worth calling them about
  • Deal not live — the partnership isn't active
  • Varies by zone — that state lets the seller price by delivery area, so confirm before you quote it as firm

The page also totals how many approved lines your partners haven't priced, and names any partner who can't ship to the state you've picked — the two things you'd otherwise only find out mid-call.

Retailers — and increasingly the AI they ask — look for suppliers before they look for a login. You can now publish a public page showing what you carry and where you're licensed to sell it, at distryb.com/supply/your-org.

It never shows your prices. Those still need an account with a captured licence. The page says so explicitly rather than just leaving them out, because a model comparing suppliers reads a missing price as "unavailable" and skips you.

Two switches, not one. Publish at all, and then — separately — whether search engines may list it. Leave the second off and the page is reachable by anyone you send the link to but stays out of search and out of our sitemap. Both are off until you turn them on, and before you do, the settings page shows you exactly what would be published, line by line, alongside a list of what never is.

Two optional trade terms. State a minimum order and your delivery days and they appear on the page. A stated minimum is then enforced at checkout — if you publish "$500 minimum", orders under it are refused, because a number a retailer is quoted should be one your checkout keeps. Leave it blank and nothing is published or enforced; set it to zero and it publishes "No minimum order", which is a commitment.

If you work with a broker, their page can carry your lines too — but only the ones you've approved, and only if you've published. Your switch governs your catalog wherever it appears.

Improved

A bottle that came in through a shelf import with a retailer's white-box photo now shows the way our own product shots do: background removed, the bottle filling the frame, on the same transparent canvas. This runs automatically for new imports, and the existing catalog has been converted. A photo the cutout was unsure about is flagged in the Master Catalog for a quick look rather than shown as-is.

Every product in the catalog now reads the same way: the brand, a hyphen, then the expression — “Black Momma - Vodka 8X Distilled”, “Kenwood - Merlot Red Wine”. The size lives in the Volume field rather than the name, so a brand’s bottles sort together and a search by brand finds all of them.

  • Adding a product — on Add Product or in a CSV import, put the brand in the Brand field and the size under Volume. Whether the name you type starts with the brand or leaves it out, it is styled to match the catalog, and the spelling you typed is kept on the product.
  • Renaming a product, or changing its brand, restyles it the same way.
  • Your shelf keeps its own labels. Inventory rows still show the name from your register export; only the catalog entry is styled.
  • Products that arrived without a brand are matched to a registered brand when their name starts with one. The rest are checked by the AI judge, which names the brand it recognises; where it is not certain, the suggestion waits for a person.

Sep 10, 2026

Added

Your bar, shop or taproom is almost certainly already in the licensed-premises registry Bottl.Service checks people into — nearly 663,000 of them — just not linked to you. Until now there was no way to say "that one is us".

Company Settings → Locations now has Link to a venue on every location. Open it and we look for licensed premises within a mile of that address and show you what we find, closest and best-matching first.

What happens when you pick one

  • If the venue's licence number is one you've given us, or one of your own premises sits within

200m of it under a matching name, it's linked straight away.

  • Otherwise it goes to our team to check, and we'll come back to you. You don't need to email

anyone — the request is already with us.

  • Adding this premises' licence number under Locations is the fastest route: it links instantly,

with nothing to wait for.

A venue we can't confirm is never linked on someone's say-so. Claiming a premises routes its check-ins, Draw credit and talent attribution to you and lets you rename it for everyone, so it isn't something we hand over to whoever asks first.

Once a location is linked, check-ins there start arriving against your business.

More of the map is on the map. Venues can only be found — or claimed — once we know where they are, and we have now placed the licensed premises in Florida, Pennsylvania, Washington, Michigan, New Jersey, Colorado and Georgia. That is roughly 130,000 more venues you can search, claim and see on the broker prospect map than last week.

Sep 9, 2026

Added

A broker's My Catalog now shows every product each partner sells, with each size marked Approved, Requested, or not yet approved — instead of only the lines already approved. A broker who thinks they could move something else presses Request on that line; you get a notification, the line shows Requested on the partnership page, and Select requested ticks them all so you can approve in one save. Granting a request clears it. Pricing and stock stay yours; the broker still sells only what you approved.

Improved

On My Inventory and My Catalog, searching a large shelf no longer pulls every row into the browser first. Type a word and the matching bottles come back from the server, capped and fast — the note under the search box tells you when a word alone matched more than it can show, so add another word to narrow. My Catalog also re-filters as you type; it used to wait for the list to reload.

Distributor and producer catalogs and inventory now open on only the products your org owns or carries, instead of scanning the whole platform catalog and filtering it on your screen. Pricing, Movements and the partnership product picker do the same.

A bottle that arrives on a shelf import now joins its brand. When the barcode record names one — Smirnoff, Barefoot, Jose Cuervo — that brand is registered on DISTRYB if it wasn't already, and the product files under it; otherwise the leading words of the name are matched against every registered brand. Brand owners see the bottles shops actually stock in their own catalog and footprint, and the Master Catalog's brand filter finds them. A branded bottle also takes the registry's house-style name, “Brand - Expression”, with the size in its own field; the spelling it arrived with is kept, and your shelf keeps your own label.

Staff can also fold a mistyped duplicate into the right product. Every shelf that carried the wrong entry follows to the right one, keeps its own label, and stops needing review when the right product already states its ABV and size.

When the AI check knows a product for certain, its strength and its bottle size are now written on the product — marked as set by AI, editable, and never over a value a person stated. When it is only fairly sure, the number appears as a suggestion in the Master Catalog with one-click accept, and staff can accept a whole page of them at once. For a bottle it does not know, or one you think is wrong, Research ABV sends it to look the product up on the web and come back with the number and the page it came from.

Shelf rows that were waiting on an ABV and a size clear automatically once the product states both, so a shop's "needs review" pile shrinks without anyone retyping numbers. Values set by AI are flagged on the RL-26 summary until a person confirms them.

Sep 8, 2026

Added

A CSV you upload is a snapshot: every sale rung on your register afterwards makes the count here a little older, and nothing said how old. Two things change that.

Say where a file's counts come from. The upload now asks whether the file is a register export or a sheet you maintain yourself. Name the register and the counts are treated as a mirror of it: Bottl.Service sells only the share of each item you allow on My Catalog, and pauses items once the count is more than a day and a half old — so a missed export can't oversell your shelf. Leave it as "typed by us" for a sheet that is genuinely yours; those counts are never paused.

A re-import touches only what the file carries. Counts refresh from the file; a price or cost it has no column for is left exactly as you set it on My Catalog. And an item the catalog registry hasn’t reviewed yet imports unlisted, waiting on Complete details, rather than going live on a guess.

Or let your register post the file itself. On the Enterprise plan, a key with write access can post your point of sale's export to the API on a schedule — nightly, from a task on the back-office PC — and the shelf stays current with nobody uploading anything. The whole file is one import in your history, undoable as one. Setup is under My Org → Developer, and the reference is at Inventory import.

When you confirm an ABV or bottle size on a barcoded item — on Complete details or in the item's review — that confirmation used to stop at your shelf. The next shop carrying the same barcode typed the same number again, and the catalog entry everyone reads stayed blank.

Now your confirmation is proposed for the catalog entry itself. A reviewer checks it before anything shared is written:

  • against the federal label when the product has one on file, a proof or percent in the product's own name, the barcode record, and what other shops confirmed for the same barcode;
  • a value that agrees with one of those is written to the catalog, with its sources kept; a value the evidence contradicts is not — your own item keeps what you set either way;
  • with nothing to check against, a single shop's confirmation is recorded as provisional: other shops see it as a suggestion marked "confirmed by another shop", never as a fact they inherit;
  • the ones the reviewer can't settle go to DISTRYB staff.

If the brand is claimed, its owner decides. Nothing is written to a claimed brand's product by this flow; the owner is told a fix was proposed, and editing the product is their answer. A brand owner can always overwrite an ABV or size on their products.

You'll see it on Complete details: an ABV already confirmed and checked in the catalog arrives pre-filled and labelled as such.

Two jobs that used to fall to you now start with an AI judge that knows products.

What isn't a drink. The line is drawn at hard goods, merchandise and food, not at alcohol: mixers, syrups, purees, cocktail bitters and garnish cherries are things a liquor store sells, and they import as drinks. Cocktail bitters keep their real strength and are taxed as the pantry item the law says they are, never as liquor. A register export always carries lines the word-check can't place — a pour spout, cups, basket shred filed under MISC. On import, an item nothing else could place is read by the judge the way a person would read it, and anything it thinks isn't a drink imports flagged — never refused, because a model can be wrong and your bottle must never vanish on its say-so. The import summary counts the flags, and on Complete details a "Not drinks?" filter gathers them so you can remove them in one click — or fill one in to keep it.

What it's really worth. Where the judge knows the product — Buffalo Trace at 45%, Crown Royal Apple at 35% — Complete details pre-fills that instead of a flat "typical for spirits," labelled so you can see it came from the judge. Use "Ask AI to check what's loaded" on any page of items to run it on demand; imports run it automatically, and shelves imported earlier are worked through in the background.

The judge suggests and flags; it never writes an ABV or size itself. You confirm on Complete details, and when a value is proposed for the shared catalog the reviewer treats the judge as one source among the label, the name and other shops — it can approve what agrees with it, but a disagreement goes to a person rather than letting a model overrule a label.

Improved

A register export always carries a few lines that aren't drinks and don't say so — cups, a lighter, gift-basket shred filed under MISC. The import keeps them on purpose: it only refuses on words a drink never uses, because refusing a real bottle by mistake is the worse error. That left you deleting them by hand, and the next import of the same file put them straight back.

On Complete details, tick the items that aren't drinks and choose "Not a drink — remove." They're deleted from that shelf, and your future imports of the same file refuse them — listed on the import summary as "removed by you as not a drink." It's your list, for your shop: it never changes what the product is for anyone else.

Changed your mind? Removed items sit under “Removed as not a drink” at the top of Complete details. Restore one and it’s back on the page straight away, with a count of 0 until your next import fills it in — and your future imports stop refusing it.

Also: an import of a file we've seen before no longer spends barcode lookups on barcodes the provider already had nothing for. That was quietly costing a few hundred lookups per re-import against your daily allowance.

Sep 7, 2026

Added

Sometimes the bar makes it, a server carries it over, and it comes straight back. Wrong drink, wrong glass, made with the well when they asked for top shelf. Until now the only button for that was a refund — which closes the ticket and hands money back to someone who would rather just have the drink they ordered.

A served ticket can now be sent back. Pick a reason on the delivered row — wrong drink, not as ordered, quality — and the bar gets a fresh ticket for the same items at no charge. The guest is told it's being made again, and that they haven't been charged twice.

It arrives as a new ticket rather than reopening the old one, and that's deliberate. The first drink really was delivered, at that time, by that server, and your service times should keep saying so. Rewinding the original would quietly improve those numbers every time something went wrong. So the original keeps its clock and its credit, the remake gets its own — a different server may well carry it — and the two are linked, marked Remade and Remake so the row tells you what happened.

Some things it won't do. It won't send back a drink that never left the bar — that one is still a refusal, and refusing unwinds the payment properly. It won't send back a ticket nobody paid for. And one paid drink buys one replacement — it won't send back a remake, it won't send the same drink back twice, and it won't send back a drink you've already refunded. A second failure is a conversation or a refund. Your staff see why, in the moment, rather than a button that fails.

Nobody is paid twice. A remake is free, so it contributes nothing to the tip totals — the tip the guest already left on the original still belongs to whoever earned it. Stock draws again for anything you count in bottles or cans, because a second drink really does leave the shelf; a pour was never counted, so remaking one changes nothing.

It goes to the right server, and it doesn't count as another drink. The replacement is assigned to whoever works that section, the same as any new ticket to that table — it should not sit in a shared pool while a guest waits a second time. And it stays out of the drinking heads-up: a party that sent one drink back drank one drink, not two, and that count is what someone acts on when deciding whether to serve another.

And a bad drink can't flatter your numbers. A remake is quick by nature, so counting it as an ordinary delivery would mean the worse a night went, the better your average read — and a server who carried the replacement would watch their own figure improve because something went wrong. Remakes stay off both averages. They still show on the board with their own time, and still count as a delivery that person made.

Items that import without a confirmed match need a bottle size and an ABV before they can be listed — those two facts feed alcohol tax, so we won't guess them for you. On a big import that meant a lot of items waiting on the same two values, one at a time.

There's now a Complete details page. Open it from the banner on My Inventory, or from the "Complete" link on any unlisted item in My Catalog.

  • Sizes and strengths are filled in already wherever we can read them, marked in gold with where they came from — your own product name (1792 Small Batch 375ML, 1792 Full Proof 125p → 62.5%), the barcode record, or what's typical for the category — and the category is your register's own department (BOURBON, CABERNET, DOMESTIC BEER), not our guess. A bourbon arrives at 40%, a beer at 5%, a table wine at 12.5% — hover to see which. A department we can't place — RTD, seltzer, MISC, sweet or fortified wine — gets no suggestion; those you set yourself.
  • Filter to a category, tick everything shown, confirm once, save. A page of bourbons is a page of 40%s.
  • Only what you can see (or have ticked) is saved. A suggestion on a row you filtered out of view is never accepted on your behalf.
  • Anything still missing a size or ABV stays on the page rather than saving half-finished, so nothing goes out with a strength nobody confirmed.
  • Bourbons no longer skipped as tobacco. The barcode provider files every drink under a bucket named “Food, Beverages & Tobacco”, and that last word was winning — 205 bottles on one shelf were refused as cigarettes on a re-import. The check now reads the part of the label that names the product, and your own department and proof marker count in the bottle's favour. Snacks and candy the provider labels as food are now refused as food, not imported as liquor.
  • Imported before September 8? Re-upload the same file once. Every item picks up its department, and any category we had guessed wrong is corrected to match — you'll see the count on the import summary.

Saving clears the item for listing. It doesn't put anything on your storefront — that stays yours to switch on in My Catalog.

Sep 6, 2026

Added

Bottle service almost always carries one, and until now you had no way to add it — guests saw tip presets and nothing else, which meant a $500 bottle depended entirely on somebody choosing 20% on their phone.

Table Ordering settings now has an automatic gratuity. Set the percentage, and choose whether it applies to every order or only to bottle service. Guests see it as a separate Gratuity line before they pay, never as a surprise on the receipt.

A tip they add on top is calculated on the drinks only. Charging a tip on a gratuity is charging twice for one thing, and a guest who works that out is right to be annoyed.

It is taxed correctly, and that is not the same everywhere. A gratuity a guest cannot remove is treated differently from a tip they choose, and the two states we operate in genuinely disagree:

  • Illinois treats a mandatory charge as part of the taxable sale, so we tax it.
  • New York exempts it only when it is separately stated, called a gratuity, and paid entirely to your staff.

That last condition is a statement about your payroll, and only you can make it — so there is a tick box for it, and it is the one thing that decides whether New York sales tax applies. Leave it unticked and we tax the gratuity. Over-collecting can be refunded; under-collecting turns up at an audit with interest attached.

It counts toward what your staff earned. The gratuity appears in Tips this service alongside voluntary tips, split the same way, so the people who made and carried the drink are credited for it. Every order also records the rate you charged and whether it was taxed, so a return can be reconciled long after you have changed the setting.

One thing we deliberately do not do: move the money. It reaches your account with everything else and you pay your people the way you always have.

Every pickup and table order already carried a six-character collection code, shown to the guest and on your queue. Nothing checked it — so a bag could still go to whoever answered to a name called out across a counter, and the order closed exactly as if someone had asked.

Now the code is required at the moment the goods change hands. Your queue and your floor board each have a field on the last step: ask the guest for the code, type it in, done. Case and dashes don't matter — type what you hear. Everything before that step is unchanged; a ticket still moves from accepted to making to ready on one tap.

When a guest can't produce it, you can still serve them. Phones die and tabs close. Tap Release without code, pick a reason — the guest has no code, or you confirmed who they were another way — and the order goes out. That release is written onto the order with your name and the time, and it shows on the card afterwards in red. A code that was checked shows quietly; the exception is the one worth seeing.

Guests get the code twice, so fewer of them turn up without it: once on the confirmation screen when they order, and again on the order itself in the Bottl.Service app, where it survives a closed tab. It stays on the order after collection too, next to the time it was picked up, so there's a shared record if anyone ever asks. Delivery and shipping orders never had a code and still don't — a courier and an address are a different problem.

Product photos on Bottl.Service sit on a dark studio backdrop with warm lighting. Until now only we could produce one, which was backwards — you hold the correct image of your own bottle.

You can now restyle the photos for products you own. Upload your bottle, and we place it on the backdrop. The bottle, its label and its fill level are left exactly as they are; only what's behind it changes. You see the result before anything is saved, because the tool is very good and occasionally wrong — a label can come back altered, and you get the last word rather than hearing it from a customer.

Send us a cut-out — a PNG with a transparent background. This is the one requirement, and it isn't fussiness. If the bottle is sitting on white, "replace the background" leaves a white rectangle floating on the dark backdrop. We check before spending anything on it and tell you straight away if the image won't work, so a wrong file costs you a moment rather than a bad result to sort out.

A photo with a transparent-looking corner isn't always a cut-out, so we look at the actual image rather than what the file claims — some exports keep a solid background inside a format that supports transparency.

Do it once and every shop gets it. The photo belongs to the product, not to any one store's listing. Every retailer carrying that bottle shows your restyled image on their storefront from then on, without either of you doing anything further.

If you serve people at tables *and* hand orders across a counter, you were watching two screens: table tickets on the floor board, to-go orders in the Order Queue. During a rush that's how one gets missed.

Both now show on the floor board. A to-go ticket sits in the same list, sorted by who has waited longest, marked TO GO so it reads at a glance. It moves through the same buttons — accept, start making, ready — and the last step asks for the collection code exactly like a table order does. Nothing about your table service changed.

Two things work differently on a to-go ticket, because they have to. You can't assign one to a server: nobody carries a takeaway anywhere, so there's no walk to credit. And refunding one is still done in the Order Queue, where the full payment history lives — the ticket links straight there.

Your service times now cover both. A table order is timed to the moment a server hands it over; a to-go order is timed to the moment the collection code is matched at the counter. Same clock, so "how long did that take" finally means the whole shop. The per-person panel still counts table service only — that's the part a named person actually carried.

The Order Queue keeps every pickup order too, including orders from your online store. The floor board shows the ones for the location you're working.

Fixed

If you imported a shelf and found far fewer items than your file had — or none at all — this is why, and it is fixed.

A row with a barcode only imported if we could identify the bottle: either it was already in our catalog, or a barcode lookup told us what it was. When neither happened, the row was counted as needing attention and nothing was saved. The import still reported success. Oddly, rows *without* a barcode were saved all along, so having a barcode was the reason an item went missing.

Every row imports now. If we can't identify a bottle, it arrives with the name, count and price from your own file, left unlisted and flagged so you can finish it when you like. Importing the same file again updates those rows rather than duplicating them.

And your bottles now join the product catalog. A barcoded item becomes an entry in the shared catalog rather than sitting only on your shelf. Two shops importing the same bottle land on the same entry, not one each — and it means a brand can claim its own products and supply the proper photo, which then shows up for every store carrying that bottle, including yours.

Nobody else can edit those entries, and a later import never overwrites one that already exists.

Your cost comes across too. If your export has a cost column, it now imports as the Cost on each row — so your inventory valuation and your margins are right from the first upload instead of reading as zero. If your file has both a cost and a retail column and we can't tell which is which, we ask you rather than guess: getting that backwards would either price your shop at what you paid or wipe out every margin. You can re-import the same file later to fill cost in on items that came in without it.

A big import is fast now, and photos arrive on their own. Looking up thousands of barcodes takes about twenty minutes no matter what — the barcode service limits how fast anyone may ask. So a large shelf no longer waits on it: your items land in a couple of minutes with the names, counts and prices from your own file, and the product photos fill in over the next hour or so without you doing anything. You'll see how many are still on their way, so a shelf that looks plain at first isn't mistaken for an import that failed. A small import still gets its photos immediately.

If a barcode lookup is unavailable, we say so. Previously it failed quietly and items just arrived bare. You'll see a note telling you how many came in without photos.

You can undo an import. My Inventory now lists your recent imports for the location you're viewing, each with an Undo. It removes the items that import added. Items it only updated keep their current counts — we didn't record what they were before, and guessing would be worse — and the confirmation tells you exactly that. Catalog entries the import created stay, since other shops may use them.

Negative stock is reported, not silently flattened. Some POS systems write an oversold item as (1.00). Those used to arrive as 0 with no mention — so your count here quietly disagreed with your POS and you had no way to know which rows. They still arrive at 0 (a shelf can't hold less than none), but the import now lists each one with the value your file carried, so the difference is explained instead of discovered.

Items we couldn't identify stay unlisted and are never given a drink type or tax category we had to guess at — those are yours to confirm before anything sells.

Sep 5, 2026

Added

Guests have been tipping on table and seat orders since the day it launched. That money has always gone straight to you — we take our fee on the drinks only, never on a tip and never on tax — but nothing on your side said who earned it. The tip landed in your Stripe balance as one undifferentiated number, and your staff had no way to see what they had made.

That is the part worth fixing, and not only for fairness. Your bartenders are the people who have to *accept* tickets. An app that hands them work they are not visibly tipped for is an app they quietly stop accepting.

Every ticket now records who took it on and who carried it. Whoever first moves a ticket off the queue is the one who accepted it; whoever taps Delivered is the one who ran it. Both are written once and never moved, so credit does not follow whoever happened to touch the ticket last. Your service history shows the pair — Dana → Mo — or a single name where one person did both.

Tips this service now appears on your orders board, broken down by person. By default a tip splits evenly between whoever made the drink and whoever carried it; you can change that split on the Table Ordering settings page. One person doing both jobs gets the whole thing.

A share nobody claimed is shown as Unassigned rather than quietly given to someone. If you see a number sitting there, it means tickets are being delivered without anyone tapping Delivered — worth knowing, and something a guess would have hidden from you.

This is a record, not a payment. The money is already in your account and you pay your people the way you always have. We are not moving tips, holding them, or taking a cut — we are telling you who earned what so you can pay it correctly.

Tonight, 7 days or 30 days — the buttons above the table switch range. Tonight is instant because it comes from the tickets already on your board; a longer range is fetched, and if it holds more tickets than we read in one go we say so rather than showing you a total that is quietly short. A shift lead can read all of it with ordinary order permissions, so nobody needs a manager login to see what they made.

Improved

Uploading your shelf to My Inventory used to require a column literally named upc, barcode, ean, gtin or sku, and another named for a stock count. Anything else came back as "CSV must have a column named upc…" with the whole file refused.

Nothing was ever wrong with those files. Cash Register Express calls its barcode column ItemNum. The only fix we could offer was "open it and rename a column" — every week, forever.

Your export is now read as it comes out of your register. ItemNum, UPC Code, upc_code, Barcode #, On Hand, Qty On Hand and their relatives all resolve on their own. Punctuation, capitals and underscores no longer change the meaning of a column.

A report is understood as well as a table. Some registers export a printed report rather than a spreadsheet — a title and a date above the columns, or the column labels and the running totals repeated on every single line. Those files were being refused, or worse, misread. They are now read correctly, including the ones with no header row at all, where the first line is already a product.

When the columns still can't be placed, we work them out from the values rather than the names — a column of 12-digit numbers is a barcode whatever it is called.

You always confirm before anything is written. This decides which column becomes your stock count, and a wrong answer would not fail loudly — it would quietly write a case size or a price into your inventory. So you get one screen showing each field, the column we picked and a real value from your file next to it. Change any of them. Nothing imports until you say so.

A deliberate omission: a cost column is never read as your retail price. Getting that wrong would reprice your whole shelf to what you paid for it.

Your own department column is read too, when your file has one. We only sell drinks, so cigarettes and gift cards are set aside rather than filed as liquor — and your department is what tells us which is which. Judging on the product name alone, a bourbon called *Cigar Batch* looks like tobacco and a carton of cigarettes named after its brand does not. You will see everything that was set aside, listed in full, so nothing goes quiet.

If you run more than one store, the import goes to the location you have selected — and the screen tells you which one before you commit it. Stock is kept per location, so a file from one shop must not land on another's shelf; switch location first if it belongs to the other store.

Only your column headers and five sample rows are ever sent for matching — never your file.

Sep 4, 2026

Added

Your operating hours have always been on your store settings page. Until now they were decoration: they showed on your storefront and nothing checked them. An order placed at 3 a.m. went through exactly like one placed at noon.

Your hours are now enforced at checkout, on both your storefront and your table orders. Outside them, an order is declined with a plain message rather than landing on a floor nobody is standing on.

Last call is its own setting. Tick *Alcohol is served at different hours* and you get a second schedule, seeded from your operating hours so the usual edit is pulling one number back rather than retyping seven rows. A kitchen open until 2 a.m. that stops pouring at 1:30 can finally say so.

A bar can now enter its real hours. Closing at 2 a.m.? Enter 2:00 AM as the closing time and we read it as the next morning — the row says *next day* so you can see we understood. That could not be expressed before at all: a window ending earlier than it started was read as zero minutes long, which is a large part of why nothing enforced these.

Your hours are read on your clock, not ours and not your customer's. This mattered more than it sounds: a shopper looking at your page from another time zone was being told you had closed hours early, or that you were still open after you had shut.

Where the state sets a limit, we hold you to it. New York caps on-premise sales at 4 a.m. and package sales at midnight, so we will not save hours past that and we will tell you which day is the problem — we never quietly trim your number down. Illinois sets no statewide hours at all: yours come from your local licence, and in Chicago package-goods hours are negotiated licence by licence. There is nothing for us to check against there, so we take your word and record that you set it.

One thing worth being clear about: a state limit is the outer edge of what we will accept, never permission. Your own licence — and your county or city — can be stricter, and it governs.

If you have never set hours, nothing changes. Orders keep flowing exactly as before until you fill them in.

Sep 3, 2026

Added

Sometimes the bar just can’t make it. You’re out of mint, the last of that bottle went into the drink before theirs, the ticket is for something you stopped pouring at eleven. Until now the only honest answer was to refund — and a refund doesn’t give the processing fee back. You paid roughly seventy cents to make nothing.

Table and seat orders are now held, not charged, until somebody accepts them. The guest’s card is authorised the moment they order, exactly as before from where they’re sitting. The money is only actually taken when a bartender taps Accept.

That makes refusing free. Tap Can’t make this on a ticket nobody has accepted yet and the hold is simply released — nothing settled, so there is no fee to lose, and the guest watches a pending line disappear instead of waiting a week for a refund to land. Refuse one you’ve already accepted and it refunds properly, commission included: we don’t keep a cut of a drink that was never made.

Pick a reason and the guest is told in plain words. “Out of an ingredient”, “Out of stock”, “Couldn’t make it”. They get a notification that says what happened and whether they were charged, which is the difference between a bar that ran out and an app that lost their order.

A ticket nobody accepts doesn’t hold anyone’s money overnight. If six hours pass without anybody touching an order — the last one of the night landed after the taps went off, the tablet died — we release the hold, put the bottle back on your count, and tell the guest they weren’t charged. It can’t reach a live ticket: six hours is far longer than any bar takes to accept a drink.

Accept now means something. It used to be a formality — payment had already confirmed the ticket, so the tap only moved it along your board. It’s now the moment the sale becomes real, which is also why it’s worth doing promptly on a busy night.

Your bar has always had one switch per product — Listed — and it answers a question about your storefront, not about tonight. Two new controls on My Catalog answer the ones your floor actually asks. They only appear at locations that pour.

On the menu. Turn a line off and guests stop being able to order it, immediately. Turn it back on when the delivery lands. It’s deliberately separate from your stock count, because the reason is often nothing to do with stock: you’re holding a bottle back for Saturday, the garnish ran out, you stopped pouring it at eleven. Nothing infers any of that — we don’t track what goes into a glass — so the switch is yours.

Sold as: Bottle or Pour. This decides whether a sale moves your count.

  • Bottle — the whole thing leaves the bar, so your count comes down with it. This is what every existing product already is, and nothing changed for them.
  • Pour — sold by the glass, and your count doesn’t move. We can’t know how much liquid went in, and a guess would be worse than nothing: it would quietly corrupt the count your RL-26 valuation is built on. Keep counting bottles for reordering; just don’t expect a cocktail to do it for you.

A bottle line with an empty shelf is unorderable whichever way the switch is set, and the row tells you so rather than leaving you to wonder why a guest can’t see it.

Guests see an unavailable line greyed out on the menu rather than missing from it — it now reads Unavailable instead of “Sold out”, which was a claim about your shelf we had no business making.

Improved

Page titles across the dashboard had drifted into nine different sizes, and the row of buttons beside them sat at three different heights depending on which page you were on. Nothing was broken — each page was internally consistent — but moving from Home to Orders to Invoices visibly moved the furniture.

Every page now uses one header: same title size, same spacing beneath it, and the page's buttons in the same place relative to the title. On a phone those buttons stack under the title as full-width taps instead of squeezing beside it, which several pages weren't doing before.

Nothing moved that you use — the same buttons do the same things, in the same order.

Sep 2, 2026

Improved

Your staff had one way to confirm an order belonged to the person in front of them: the order number. It’s thirteen characters, it starts with a timestamp, and it contains both an O and a zero. Nobody is reading that aloud across a table during a support act.

Every table and seat order now carries a six-character code — something like K7F‑2M9. The guest sees it the moment they order, and it’s on the ticket your runner is already looking at. They match it and hand the drink over.

It’s built to be said out loud. No O or 0, no I, L or 1 — the letters that get misheard and misread, which is the same reason most venues skip rows I and O. No vowels either, so a code never accidentally spells a word.

The order number hasn’t changed and still appears everywhere it did before. This is a separate, smaller thing that exists only for the moment one person hands a drink to another.

It matters most in seated sections, where a code on your signage tells us the guest is in that section but not which seat — so your runner is the check, and now they have something to check.

Sep 1, 2026

Added

Table Ordering used to assume one shape of room: numbered tables, each with its own QR code. That works for a bar. It doesn’t describe an amphitheatre with reserved rows, a theatre, or a venue where half the crowd is standing.

Now you describe your room as it actually is, and we serve the parts that can be served.

Tell PLUG what kind of place you run. Say “we’re an outdoor venue” or “it’s a wine bar” and it proposes a layout — reserved seating, VIP tables, general admission — then says it back before writing anything. Rename a section, add one, drop one. It only saves what you confirm.

Your rows are yours. Some venues skip rows I and O so they can’t be misread as 1 and 0; plenty don’t. We ask once, and whichever you answer, we use it — we never quietly leave out a row you actually have, or invent one you don’t.

Reserved seating takes orders now. You print one code per section, not one per seat — on your signage or on the ticket. A guest scans it, picks the row and seat already printed on their ticket, and the drink comes to them. Their seat is on the ticket your runner reads, exactly where a table number used to be.

Where ordering doesn’t work, it says so. A lawn or a standing floor has no seat or table number, so there’s nowhere to carry a drink to. Those sections still belong in your layout — you describe your whole room, and the parts that can’t be served are marked rather than quietly missing.

Bars and VIP decks are unchanged. Every code you’ve already printed keeps working exactly as it does today.

Opening the venue stays yours. Describing the room doesn’t open it — only you can switch Table Ordering on, in Table Ordering settings.

Seat tickets say “check ID at the seat”, and here’s why. A table code is stuck to the table, so scanning it means the guest is sitting there. A section code is on your signage, so it tells us they’re in the section — not which seat. They pick the seat themselves, and nothing stops someone picking a seat that isn’t theirs. Your runner is the check that matters, so the ticket says so. (Send-to-a-friend is switched off in seated sections for the same reason.)

When a bank transfer is returned — insufficient funds, a closed account, a debit the bank hasn't authorized — the payment processor charges a fee for the return. Until now DISTRYB absorbed it. From now on it's recovered from whoever made the payment, as the Terms of Service describe.

How it works. The bounce adds the return fee to what that buyer owes. It's collected on their next payment for the same bill — no new debit, no new authorization, nothing to sign. Once collected it's gone, and it never applies twice for the same return.

What it costs. Exactly what our processor charged us for that return, and never more. It's read from the processor's own record every time rather than set as a fixed price, so a payment that costs us nothing to fail — a declined card, for instance — adds nothing. If we can't evidence a charge, we don't pass one on.

What you'll see. A separate "Returned payment fee" line on the payment screen, the pay link, and the invoice confirmation, shown before you authorize anything. Your own bank may charge you its own fee for the same event — that one isn't ours and we can't waive it.

If you're the seller, nothing changes for you. You still receive the full invoice. The return was the payer's, and so is the fee; it never comes out of what you're owed.

Improved

When a customer's payment cleared, bounced, or started on its way, the alert told you the amount and named the invoice — but clicking it dropped you on the Accounting page, leaving you to find that invoice yourself. It now opens the bill it is about, from the notification bell, the notifications page, and the banner on your phone.

A failed payment also says why. "Their bank transfer failed" is the same sentence whether the account was short, closed, or blocking the debit — and those are three different phone calls. You'll now read it as, for example, *"Skycity Grill's bank transfer payment of $311.79 for invoice INV-1095-R failed — not enough money in the account. The balance is open again and can be chased."*

The invoice remembers it too: until it's paid, a bill whose last payment bounced carries a note at the top saying what happened and when, so the reason is still there a week later when someone actually picks up the chase. It clears the moment a new attempt goes through, and it never prints on a copy you send the customer.

And now your customer is told too. A bank transfer can be returned days after it is made, and until now everything that followed happened on your side — the invoice reopened, your team was alerted, the chase restarted — while the customer's last information was the confirmation screen they saw when they paid. They found out when you rang them. A returned payment now emails the buyer as well, in your business's name, saying what came back, why, that no money left their account, and what is still owed — with a link that pays it again, no login needed. Buyers with a DISTRYB login also get it in their notifications, which opens straight to the bill.

When a bank transfer is returned — insufficient funds, a closed account, a debit the bank hasn't authorized — the payment processor charges a fee for the return. Until now the Terms of Service said nothing about it, so it was simply absorbed. The terms now cover it, on both bottlservice.com and distryb.com, effective September 1, 2026.

What it says. If a payment made through the platform is returned, reversed, or fails after it's been submitted, DISTRYB may recover the processor's return fee from whoever made that payment. It applies to every payment on the platform — an invoice, a wholesale order, a subscription charge, a storage bill, an automatic payment — and to whoever made it, not just buyers.

What it's limited to. The fee can never be more than what the processor actually charges us for that return, and never more than the law allows. It's a recovery of a cost, not a penalty or a finance charge, and it's shown to you before you pay again. Your own bank may separately charge you its own fee for the same event — that one isn't ours and we can't waive it.

What doesn't change. The amount originally owed stays exactly the same and can be paid again with the same or a different method. Where the returned payment was for a sale between two other businesses, the fee is ours to recover from the payer and doesn't change what the seller is owed.

Fixed

The Renew license button in a licence-expiry email now takes you to your Licences page even when you have to sign in on the way. It was already pointing there, but signing in discarded the destination and dropped you on the dashboard home — so you had to go find the page yourself. Any emailed link into your dashboard now survives the sign-in step.

Those emails also stop asking you to reply. Questions about a licence notice go to @distryb in Messages, where the rest of your account conversations already live.

The 0.5% platform fee is a marketplace fee — it exists because two other businesses are trading through DISTRYB. It was never meant to apply when DISTRYB is the one selling to you, and it already didn't apply when DISTRYB is the one buying. Only half of that rule was actually being applied, so customers paying a DISTRYB invoice were charged 0.5% on top for the privilege of paying DISTRYB through DISTRYB.

That's fixed. Paying an invoice where DISTRYB is the seller now costs the invoice plus the bank transfer fee, and nothing else — on the invoice page, the pay link, and "Make a payment". On a $311.79 invoice that's $314.31 instead of $315.88.

The bank transfer fee stays, on every invoice: it's what the payment network charges to move the money, passed through at cost rather than marked up. Nothing changes for invoices between two other businesses, where the platform fee still applies as it always has.

One related fix on the way past: the confirmation dialog on the invoice page still described the platform fee as "max $200" after the cap moved to $500. It now reads the real numbers from the same place the charge does, so what you're quoted and what you're charged can't drift apart again.

Claiming one of your brands opened a review thread with us — and that was the only place anything about it appeared. If you weren't watching Messages, nothing told you the claim had been received, and nothing told you when it was decided.

Now it reaches you properly. When your claim is approved or declined, you get a notification — in the bell and as a push if you've turned those on — and it goes to everyone on your team who can manage your catalog, not just whoever happened to file it. Tapping it opens Brand Partners.

The review thread still exists and still works the same way. If a claim needs more documentation, reply there and we'll reconsider it.

On our side, a new claim now alerts the people who can decide it, and the Brand Claims queue carries a count of what's still waiting. Claims used to depend on someone opening the right page to notice them — which is the part that could leave you waiting.

Aug 31, 2026

Fixed

Illinois bars selling alcohol on credit to a retailer on the state's Delinquent List, and we check that before a wholesale order goes through. The check was looking for the buyer's licence in one place, and almost every business keeps theirs somewhere else — so it was clearing orders without ever comparing them to the list.

It now reads the licences recorded on your locations, the same ones shown on your registrations page.

If you sell: orders to a retailer on the list will now be stopped instead of quietly going through. Nothing changes for buyers who aren't on it.

If you buy and you are on the list: you'll see a message explaining it, and ordering resumes once the state clears you.

Aug 30, 2026

Improved

Table Ordering now requires a verified 21+ check before a guest can order a drink at your venue. Not the self-declared “I confirm I’m 21 or older” box — a real check of a photo ID and a selfie, done in the app.

It takes a guest about a minute, it’s free to them, and they only do it once. We remember it for a year, so a regular isn’t asked again next weekend. You pay nothing — the verification cost sits with us.

Why we changed it. You are the licensed seller of record for every drink your staff carry to a table, which means the dram-shop exposure is yours. A tick-box is the guest’s own word about themselves; it isn’t evidence of anything. If we’re going to tell you the app handles age, that has to be true.

What still needs your staff. Two things a credential can’t answer:

  • A drink sent to another table. The person who bought it verified *their* age — that says nothing about the guest it’s carried to. Those tickets still read CHECK ID AT THE RECEIVING TABLE, and they always will.
  • Whatever your own licence requires at the point of service. Illinois still expects your server to check ID when they hand the drink over. This strengthens what happens before that moment; it doesn’t replace it.

Ordering online for pickup or delivery is unchanged — a parcel already has the carrier’s 21+ ID check at the door.

Fixed

Advancing an order from Order Queue — Accept, Start, Mark Ready, Complete — was failing. The buttons were there and the cards looked right, but the change never saved: you got *"Failed to update order."* every time, on pickup, delivery and shipping alike.

That is fixed. The queue now saves through the server, the same way the rest of the dashboard does.

Two things you may notice alongside it:

Order history is kept properly. Each status an order passes through is now added to its record rather than replacing what came before, so an order carries its full timeline — when it was accepted, when it started, when it was ready — instead of only its most recent step.

Wholesale orders are managed from Orders, not the queue. The queue's button for a wholesale order could never have worked: advancing one has to attach your compliance attestation, update the retailer's stock on delivery, and reissue or void the invoice — none of which the queue can do. Those cards now carry a Manage in Orders link straight to the order on the page that handles all of it. Nothing about how you work a wholesale order has changed; the shortcut just goes somewhere real now.

Table orders are unaffected — they run on the Table Orders board, which already saved through the server.

Aug 29, 2026

Added

Invoices → Pay automatically. Connect your bank once and authorize a supplier to take what you owe on the due date, instead of paying each invoice by hand. One authorization per supplier — you choose which, and turning it on for one doesn't touch the others.

Nothing is being taken yet. Setting this up now records your authorization and starts showing you the schedule; we'll tell you before the first automatic payment is ever taken. That's deliberate — it lets you see exactly what would happen before anything does.

From now on, an invoice from a supplier you've authorized tells you so at the top:

Note
This will be paid automatically on 12 September — $311.79 from your linked bank account. Cancel any time before then.

The same line goes in the invoice email, so you get the amount and the date when the invoice is issued — a month ahead on Net 30 terms, not the night before.

You can turn it off for any supplier at any time from the same screen. Invoices already clearing, and anything already paid, are never touched.

Anyone who can already pay invoices for your business can set this up. It's disabled while staff are viewing your account — an authorization to debit your bank has to come from you.

Delivery is open for Washington off-premise locations — liquor stores, grocery and beer/wine specialty shops. It had been switched off here while we confirmed which rules still applied after a 2025 change; the rules covering off-premise delivery were never affected.

A few Washington specifics are built in:

  • Your own staff deliver. Third-party courier services stay switched off in Washington for now.
  • Deliveries run 6:00 a.m. to 2:00 a.m., and must be completed by 2:00 a.m.
  • Someone 21 or older has to accept it, with their age checked at the door. If nobody of age is

there, the order comes back to you.

  • Keep the paperwork: who bought it, who accepted it, both addresses, and the times and dates of

purchase and delivery.

Bars, restaurants and taverns are not included — Washington's separate on-premise delivery allowance ended on 1 July 2025, so those locations can offer pickup.

An order and its invoice now say where the sale was placed — a small tag beside the number on Orders and Invoices. Bottl.Service, Shopify, POS, Off-platform: whichever it was.

Orders placed in DISTRYB carry no tag, because you are already looking at DISTRYB.

This was invisible before, and one order proved why it needed its own answer: a wholesale sale that came in through Bottl.Service looked identical on screen to every other wholesale sale. The information existed only in the old storefront.

Two things it is deliberately not: it is not the payment channel, and it is not who you sold to. A Bottl.Service sale to a retailer is still a wholesale invoice, still on wholesale terms, still filed the same way. Where an order was placed and how it settles are separate questions, and the tag only answers the first one.

Every existing order and invoice has been tagged, so the history reads correctly too — not just what you take from here.

Table Ordering has a second page: Table Orders, a live board for the people actually working the room. Your setup page keeps the floor plan, the QR tents and the tips — this is what your servers look at during service.

It answers three things at a glance:

  • Who's on this floor. Everyone with access to this location, their job title, how many tickets they're carrying right now, how many they've served, and their average time.
  • What was ordered and where it goes. Each ticket leads with the table — and reads Table 3 → Table 12 when a guest sent a drink to someone else's table — then the drinks, the guest's name and any note they left.
  • How long it's taken. Every open ticket counts up in real time, against the prep time *you* set, so a drink that's slipping turns amber before anyone has to ask.

"Delivered to table" is now its own step. Before, marking a ticket ready and handing it to the guest were the same tap, so the walk across the floor — the part your servers actually control — couldn't be measured at all. Now a ticket goes ready → delivered, and the board records the time from the guest's order to the moment it landed: per ticket, per person, and per service, with an on-time percentage against your own prep estimate.

Your floor staff get the board in their own sidebar, and they can run tickets from it without any access to your settings, pricing or books.

One change to who sees Table Ordering. It is for licensed on-premise venues — a bar, restaurant or lounge, or a producer's tasting room — and it now attaches to the *location* that pours rather than to the company. If you hold a bottle shop and a bar, only the bar can take table orders; a warehouse never can. A distributor can't run table ordering at all: the guest at a table is a consumer, and that isn't a sale a distributor is licensed to make.

Disagree with one invoice but happy for the rest? Open it and choose Leave this one to me. That invoice is set aside; everything else from that supplier still pays automatically.

Before this, holding a single line meant turning automatic payments off for the whole supplier and remembering to turn them back on — so the safe thing was never to switch them on at all.

The button sits on the invoice itself, next to the line telling you when it would be paid, because that's where you are when you decide. Press it again to put the invoice back on.

Two things it won't do:

  • Only you can set your own invoices aside. Your supplier sees the same note and has no button —

they can't clear a hold you placed on a bill you're querying.

  • Not once the money has started moving. If a bank payment is already clearing on that invoice,

setting it aside would look like it stopped the payment, and it wouldn't.

Improved

The machinery behind Pay automatically is live. When automatic payments are switched on for you, here's what happens:

  • The day before, you get an email listing exactly what's going out, from which bank account,

with a link to change or cancel it. It leads with *"nothing to do"*, because that's the point.

  • On the due date, one bank transfer covers everything due to that supplier — one transfer, not

one per invoice, so you pay the bank fee once.

  • You're told when the money leaves and if it doesn't go through. A failed transfer leaves the

balance open so you can pay it another way.

An invoice that already has a payment clearing is never charged again, and an invoice isn't touched before its due date.

It's still off for everyone. We turn it on account by account, starting with anyone who asks — setting up an authorization doesn't switch it on by itself. Nothing is taken from your account until we've turned it on for you and told you.

Opening Invoices used to start pulling the whole book: the list fetched the next page as soon as you scrolled near the bottom, so a long history kept loading whether or not you wanted it.

It now loads a page and waits. Load more sits under the list and tells you how many are left — the same control Orders has always had.

The tabs count properly too. Received and Issued show the real number of invoices matching whatever filter you are on, instead of the number that happened to have loaded so far.

Wholesale buying is state-by-state: a distributor sells to retailers in the states where it holds a licence. The catalogue now works that way too.

If you buy: the distributor list, catalogues, product rows and pricing now show only distributors and distilleries licensed to sell in your state. Suppliers you were never able to order from won't appear at all — including their prices.

If you sell: your catalogue reaches buyers in the states where your licence is verified. Adding a verified licence in another state opens that state's buyers to you; nothing else needs changing.

Your state is taken from your business address, so make sure it's set — if we can't tell which state your business is in, wholesale ordering pauses until you add it.

Aug 28, 2026

Added

Pick your territories during signup and you'll now see what each state actually asks of you — the licence name, the statute, what it costs, how long it takes, and a link straight to the agency that issues it.

Six of the eleven states we operate in require the person soliciting retailers to hold their own licence; the distributor's wholesale licence doesn't cover it. Several of those states also exempt you outright depending on who you represent — in New York, for instance, no permit is needed to solicit for a micro-distillery, farm distillery or micro-rectifier.

Nothing here blocks signing up. Which rule applies often depends on which businesses you end up representing, so this is here to give you a head start on the paperwork rather than to stand in your way. When you're assigned a territory that genuinely requires a licence you don't hold, we'll tell you then.

You can now point the AI you already use at your own DISTRYB data. Go to Developer, create an AI key, and paste the setup snippet into Claude Desktop — or any MCP client — then ask in plain English: *what's running low*, *who hasn't paid me*, *which orders need accepting*, *what's selling in my state*. No dashboard, no exports, no copying figures into a spreadsheet.

This is on every plan, and any active team member can create a key. It is separate from the Enterprise REST API, which is still its own thing.

Tick let it make changes and it can act as well as answer: accept an order, correct a stock count, propose a payment. Leave it unticked and it can only look.

A key can never do more than the person who made it. It carries that member's current permissions, checked live — so a bartender's key works orders and cannot touch money, a bookkeeper's key records payments and cannot fulfil, and a key stops working the moment its owner leaves the team or has a permission taken away. Promote someone and their key gains the same reach they do.

The same rule now applies to PLUG inside the dashboard: it offers each member exactly the tools their role allows, rather than the full set. If a teammate mentions a tool that has gone, that is why — an owner can grant it back under Settings → Team → Roles.

Anything it can't take back waits for you. Recording a payment, removing stock, registering a SKU in a new state or cancelling an order don't just happen — they appear under Pending approvals on the Developer page with the exact change spelled out, and nothing moves until a person clicks Approve. Accepting orders and correcting counts go straight through, because both can be done again.

Approving runs the change as you, so you can only wave through something you could have done yourself — and two people clicking Approve at the same moment can't record the same payment twice.

If the small ones aren't worth your time, set a limit on the same page: payments at or under it get recorded straight away, anything larger still waits. It starts at $0 — every payment waits — until you deliberately change it, and only someone who can record payments by hand can set it.

When a customer pays one of your invoices, everyone on your team with a finance role — owner, manager or bookkeeper — gets a notification. Three moments, because they mean different things:

  • The money is on its way. A bank transfer takes 1–4 business days to clear. Until now your

dashboard showed the invoice as overdue for that whole window while your customer believed they had settled up — which is the gap that produces the phone call. The alert says how long it takes, so there's nothing to chase.

  • It cleared. The payment landed and the invoice is closed.
  • It failed. The balance is open again. This is the one worth acting on, and it used to be the

quietest: the invoice simply went back to unpaid and nobody knew to follow up.

Tap the notification to open the invoice. A customer settling several invoices with one payment is one alert, not one per invoice.

Payments made by card, by bank transfer, through the emailed pay link, or from the customer's own dashboard all report the same way.

Open a customer from an order and, under what they owe, you'll now see how they actually pay — "3 of 5 on time · usually 4 days late", with a one-word read: *early*, *on time*, *a few days late*, or *often late*.

Two things it deliberately won't do:

  • It ignores imported books. Invoices carried over from before DISTRYB record the issue date as

the payment date, which on Net 30 looks like paying a month early. Counted, every customer would look like a model payer. They're excluded, and the card says when that's all there is.

  • It won't guess. Under three real payments it says "too few to call yet" instead of showing a

verdict. Most customers will read that way at first — the figure fills in as payments come through the platform.

It's a median, not an average, so one invoice that sat open for three months doesn't redefine an otherwise punctual customer — but the worst instance is still recorded. Paying any time on the due date itself counts as on time.

Visible to anyone who can already see invoices.

Improved

Enter a licence number and state during signup and we now look it up in that state's own register. When we find it, the licence type, the name it's held under, and the expiry date fill in automatically — confirmed rather than typed.

Previously we only asked for the number and the state, and recorded every licence with the same generic label. That label is what a lot of the platform reads to work out what a licence actually permits, so filling it in properly makes verification faster and the compliance checks around your account far more accurate.

If a licence isn't in the register yet — a brand-new one, or a state we don't index — nothing is blocked. Type the licence type yourself and we'll confirm it during review.

We'll also tell you if the state lists a licence under a different company name than the one on your account, so you can let us know whether that's a former name or a separate business.

The pay link you send a customer — the one that opens without a login — showed only two names. It now carries the same details as the printed invoice: both businesses' addresses and licence numbers, on the side that sold and the side being billed.

That matters for a wholesale alcohol invoice. A licensed retailer checks the licence number before they pay, and a bill with neither address on it reads as a payment request from a stranger.

If your business has more than one location, each invoice shows the licence and address of the store the goods went to, not a single company-wide one.

Sharing the link looks right too. Pasted into a text message, an email or Slack, an invoice link used to preview as Bottl.Service — the consumer app — with a nightlife photo attached. It now previews as DISTRYB. The preview deliberately shows no invoice number, amount or business name: link previews are generated for everyone in the conversation, so nothing about the invoice belongs in one.

Every DISTRYB link you share now does the same. Account invitations, agreements sent for signature, the Seller Agreement and Beta Agreement, and a broker's public profile all previewed as the consumer app; they now preview as DISTRYB, with the DISTRYB card. A broker's profile shows their own photo where they have uploaded one. On the Bottl.Service side, a store link now previews with that store's own picture and name rather than the generic one.

Fixed

Signing up on a phone could leave you stuck with nothing to press. The bar at the bottom of the chat showed a Create button once your details were complete — but while anything was still outstanding it swapped that button for a small chevron. The one control that finishes signup vanished at exactly the moment you were stuck, and the way forward was an unlabelled arrow.

There is now one button, always in the same place. It reads Continue while there's still something to sort out and Create when you're ready. Tapping it early doesn't do nothing — it opens your setup panel so you can see and fix what's outstanding.

And the bar no longer says you're finished when you aren't. It could read "0 things left" while still refusing to create the account, because the checklist and the final validation were asking the question two different ways. When they disagree it now says "One more thing to check" and takes you to the panel — where, instead of an empty "Still needed" list, you'll see the actual reason, field by field.

If you hit this, nothing you typed was lost. Your answers stay in the panel, and you can pick up where you left off.

Aug 27, 2026

Added

Getting a broker to sell for you started with a form that asked for an email address and gave you no way to learn one. If the address didn't already belong to a DISTRYB account, you filled the whole thing in and got an error telling you to go ask them to sign up. There *was* a directory of verified brokers — hidden as a second tab on the page the sidebar calls "Find Retailers", where nobody looking for a broker would open it.

Brokers in the sidebar is now My Brokers, with a new Find Brokers page under it that holds both ways of reaching one.

Browse who's already here. Verified brokers, filtered by the states they serve and their specialty, each showing their territory on a map with a count of the licensed retailers inside it. Send terms in two clicks — the states they actually cover come pre-selected. A broker you already work with says so on the card and links to the partnership, instead of offering an invite that would be refused.

Or invite someone who hasn't joined. Enter their email, set your commission, and we send them the offer — the rate, the territories, the categories — along with an invitation to create a broker account. The moment they sign up as a broker on that address, those terms become a live partnership invite on their dashboard. You don't have to come back and re-send anything, and we email you when it happens.

Outstanding email invites are listed with their status, so you can see who hasn't joined yet, change your terms, or withdraw. If something about the offer needs adjusting once they're here — their plan's territory limit, or a state that requires a broker's licence they haven't added — we tell you exactly what and link you straight to it.

The terms screen itself now says who the invite is for before you fill it in, and checks the address while you type, so you know which of the two will happen before you send.

Retailers get a broker directory too. Trade Network → Find a Broker lists the same verified brokers, filtered by the states they serve and their specialty, with their profile and a way to start a conversation. It was built some time ago and nothing in the sidebar pointed at it, so nobody could reach it; it works now and it's where you'd expect it.

Improved

Some states let a shop deliver but not a bar. Delivery is now checked against the licence type of the location fulfilling the order, so a store with both an on-premise and an off-premise location gets the right answer for each one instead of a single answer for the whole business.

California is the first state where this applies. Alcohol sold to-go from an on-premise licence is pickup only there, so those locations will now be offered pickup rather than delivery. Off-premise locations are unaffected.

If a location's premise type hasn't been set, delivery is declined in these states rather than assumed — set the premise type on the location and delivery resumes. Everywhere else, nothing changes.

The Invoices list was built for a desktop and shipped as-is to a phone. Received (you owe) and Issued (owed to you) each claimed a full line, so the two tabs stacked instead of sitting side by side, and every invoice arrived as a tall card listing the seller, the total, the gallons and the date whether you wanted them or not — three invoices filled the screen.

Both tabs now sit on one line, and each invoice is one row in the same shape your Orders list already uses: the number and its status, then who it is with, which town, and when it is due, with the amount to the right. A chevron opens the payment actions for that invoice — the part an invoice has and an order does not. Tapping anywhere else on the row opens the invoice. The heading, buttons, search box and filters are all sized for the screen they're on.

The customer card — the one that opens when you tap a retailer's name inside an order — got the same treatment: smaller heading, tighter balance box, and five action buttons that no longer each demand the height of a thumb.

The order drawer followed. Opening an order on a phone meant a desktop-width header, 13px detail rows and a column of uppercase buttons sized for a mouse; the status, the retailer and the total — the three things you open an order to read — sat below the fold. The header and body are tighter, the rows and line items smaller, and every action in the drawer now lands on the same height instead of two families disagreeing by four pixels.

Nothing moved on a desktop.

Once you're set up, your dashboard offers to install DISTRYB as an app — it opens full-screen from your home screen and can push you on new orders, messages, and alerts. The offer now appears only inside the dashboard, so it no longer interrupts the marketing site or sign-up.

Your business type is the one answer everything else hangs off. It decides which details you're asked for, what the compliance gate expects, and what your dashboard can do — and the words are slippery. "Distributor" sounds right to a brand owner who ships their own cases, and being wrong is awkward to undo once the account exists.

So PLUG no longer takes the word and moves on. Whether you say your role or PLUG works it out from your licence, it now says back what that role actually means — *"So you'd be a Broker: you represent other people's brands to buyers in the states you cover, and never own the goods yourself. That right?"* — and waits for a plain yes before setting it.

If what you describe fits a different role than the word you first reached for, PLUG goes with what you described.

"Manufacturer" and "distiller" are the Producer role. Both were offered as choices while neither was one, so picking either could leave you somewhere that didn't quite fit. Say whichever word is natural — it's stored as Producer, with the specific kind (distillery, brewery, winery, cidery, meadery) kept alongside it.

You can change it. The setup panel — the bar at the bottom of the chat on a phone, the column beside it on a desktop — has always let you edit your business type, and it now shows what each role means and what it will ask you for, right under the picker. Changing your role there also clears the earlier confirmation, so we know to check the new one with you rather than assuming the old yes still counts.

When you post as one of your locations, it now reaches the people following your business, not just the people following that one store.

Locations are new, so a store starts with no followers of its own. Without this, posting as your Uptown shop would have reached almost nobody — which is a strange reward for using the feature.

What this means day to day:

  • Post as a location and it lands for your business's followers too. The store still signs it, so readers see which shop it came from and can tap through to that store's page.
  • Post as the business and it still appears on every location's page, as before. You never have to write the same thing twice.
  • Following a specific store still works the way you'd expect — you get that store's posts, whether or not you follow the parent business.

One deliberate exception: a separate brand identity you post under keeps its own audience. Its posts go to the people who followed *that* name, and nowhere else.

Fixed

When you invited someone to represent your business on Bottl.Service, their notification linked to a page that didn't exist yet — it quietly dropped them on their general settings, with your invite nowhere in sight. Anyone who didn't happen to scroll past it never accepted.

Their account now has a Partner tab, and that's where the invite lands. It shows who invited them, what the role is, and — new — exactly what representing you would let them do: post as the business, post as themselves with your badge, go live for you, approve your content. A pending invite also carries a count on the tab itself, so it can't be missed.

Active affiliations live there too, with the Show on profile toggle and the option to leave. Where the commission rule applies — a creator who works for a licensed retailer — the explanation now appears before they accept, not months later when the commission doesn't arrive.

Representing a business is still a social relationship only. It gives no access to your DISTRYB dashboard, and the tab says so.

If you opened a DISTRYB link from inside WhatsApp, Instagram, or a similar app and tapped Continue with Google, you could land on a blank page reading *"Unable to process request due to missing initial state."* No account, no explanation, no way back.

That page was Firebase's, not ours, and the cause is the chat app rather than anything you did. Those apps open links in their own small browser. Signing in with Google means leaving that browser, proving who you are, and coming back — but you come back to a *different* browser, and the sign-in it was halfway through is no longer there.

Signing in with your email and password never leaves the page, so it works everywhere. It now sits at the top of the sign-in and sign-up forms, with Google and Apple one tap below for anyone on a browser that can complete the trip. A short note under those buttons says what to do if you arrived from a chat app.

Nothing about existing accounts changed, and Google and Apple still work exactly as before in Chrome, Safari, and every ordinary browser.

Aug 26, 2026

Added

Market Benchmark on Sales Intel used to be an upgrade prompt unless you were on Growth. Now every account sees it, including free ones.

What you get on any plan:

  • The top movers in your state, across all sellers — not just your own orders.
  • How many of them you carry, and which ones you don't. "You carry 6 of the top 10" is the line most people act on.
  • Which way each one is trending, up or down.

Everything comes from real sales across the platform, aggregated and anonymised: no seller is ever named, and a product only appears once enough businesses other than you are selling it for the figure to stay anonymous. If your state is quiet, you'll see that plainly rather than a misleading zero.

On Growth and above the same card keeps the detail it always had — unit volumes, exact momentum, seller counts and your position against the whole market.

Product pages now show a units-sold count — the social proof shoppers look for before buying something they haven't tried.

It's deliberately imprecise. Nothing shows at all until a product has real momentum behind it, and above that the number is rounded down to a band ("120+ sold", "1.2K sold") rather than published exactly. You get the credibility of the number without handing a competitor your precise volume, and a quiet new listing shows nothing rather than something discouraging.

It counts units, not orders, so a six-bottle purchase counts as six. Refunds and cancellations come back out, and only sales made through Bottl.Service are counted — imported order history isn't included.

If you run more than one store, each location can now have a public page of its own at bottlservice.com/@yourstore — its name, its logo, its address, and what's actually on its shelf.

Before this, every location's @handle opened the same page: your company's. A shopper who tagged one store saw the parent business, and the Visit Store button could send them to a different location entirely.

What's new:

  • Your locations are listed on your company page, so a shopper who finds the business can pick the store nearest them.
  • The Shop tab on a location shows that location's stock and prices — not the union of every store you operate.
  • Shoppers can tag a location by name on Bottl.Service. Your store appears in the @-picker under its own name, so a shout-out points at the right shop.
  • You can post as a location. In Store → Post, pick which name signs the post. Anything posted by the company still appears on every location's page, so you never have to write it twice.

A location's page follows the Visibility toggle in Store settings — the same switch that already controls whether that storefront is public. Locations you haven't turned on stay private, and can't be tagged or posted as.

Aug 24, 2026

Improved

Creators who work for a licensed retailer — bartenders, bottle hosts, servers — can be approved as affiliates and can still earn, but only where a retailer's margin bears the commission. Where a producer's or distributor's margin bears it, the referral is still attributed and still shows in their reporting; the commission simply doesn't accrue.

This is the tied-house rule about paying a retailer's staff, and it's the same structure the wider drinks industry already uses: the sale is completed by a retailer, so no supplier money reaches the person recommending the bottle.

Nothing changes for creators with no venue employment — the large majority — who earn exactly as before.

Aug 23, 2026

Added

Your Messages sidebar collects things you're finished with — a closed brand claim, an old order thread, a trade channel you don't follow closely. Now you can put them away.

Hide any row from the menu on it. It leaves your sidebar and nothing else changes: the conversation stays exactly as it is, you keep your access, and your teammates' sidebars are untouched. A hidden conversation comes back on its own when someone sends something new — anything already sitting there when you hid it doesn't count, so hiding always sticks. A hidden trade channel stays put until you bring it back. Either way, type its name in the search box and it's there. A "3 hidden · show" line under the search box keeps track.

Notifications, per conversation, from the same menu — three choices, the way you'd expect them:

  • All messages — every message notifies you. This is how conversations have always worked.
  • Mentions only — quiet unless someone @mentions you.
  • Nothing — silent, including mentions.

Trade channels offer the last two; they've never notified on every post, and with thousands of businesses reading them they can't. Anything below *All messages* also dims the row, drops its badge, and keeps a hidden row from coming back.

All of it is yours alone — nobody else's view or notifications change.

Your trade channel default moved too: it's under Account Settings → Notifications now, not Company Settings. A notification reaches a person, not a business, so you and a colleague can each choose your own — and a level you set on a single channel still overrides it. Whatever your business had set carries over until you pick your own, so nothing changed underneath you. The old Every post option is gone; it never worked, and *Mentions only* is what it was reaching for. Messages

Three gaps on the collections side of an invoice, all of which used to end at Void — which cancels the sale outright. None of these do that: the money didn't arrive, but the sale still stands.

Decline a reported payment. When a buyer marks an invoice "paid off-platform", you could only ever confirm it — a cheque that never turned up sat there indefinitely with a Confirm button beside it. You can now refuse the claim with a reason. It clears from the invoice so nothing offers to confirm it again, it's kept on the record with who refused it and why, and the buyer is told in the same thread the claim came in on. It moves no money: a report never changed the balance, so retracting one can't either.

Reverse a recorded payment. For the cheque that bounced. You pick the specific payment rather than an amount, and the balance comes back — the original entry stays on the ledger with the reversal beside it, because money received and money taken back are two events. The invoice re-ages on the way back, so one that was already months late returns to overdue rather than quietly dropping out of your overdue views. If that invoice is synced to QuickBooks, the payment there is not unwound — the reversal names it so you can settle that side rather than finding out at reconciliation.

Chase the person, not each business. *Request payment* now has an account-wide option, off by default. Someone running three of your accounts used to get three emails and three totals, and no answer to "what do I owe you". Turned on, it sends one email to the person, with each business listed under its own subtotal and its own pay button — a pay link belongs to one buyer, so one button over a combined total would collect less than the figure above it. The preview names who it's actually going to and flags any business that can't carry a pay link. Invoices

Freight lived on its own page, so sending an order by LTL meant retyping a lane the order already knew and hooking the paperwork up by hand. Orders now offer Ship by freight beside Schedule delivery: the rating form opens with the lane already filled in from the order, and booking marks the order shipped and links the freight record to it. An order already carrying a booking won't take a second one. Stock still transfers when the load is delivered, not when it's booked — goods in transit aren't on anyone's shelf yet.

Your store settings now say when live carrier rates are available to you, at the moment you're typing a flat fee instead of after you've saved one.

Also fixed, on parcel: buying a label could fail on an order that was already paid, because the recipient's name wasn't reaching the carrier. It never showed at checkout — the quote came back fine — and only bit at fulfilment. Both the checkout and subscription-renewal lanes now carry the name, and an order left unlabelled by this before the fix can get its label on a retry. Orders

States disagree about whether liquor you gave away is taxed, and the rules are narrower than the reason on the ledger row: a pour at a licensed tasting is not the same thing as a free case dropped at a retailer or a donation. Rather than guess on your behalf, DISTRYB now asks. You answer once, per state, per reason, and we stamp who answered and when, then apply that answer everywhere those gallons are described.

Every determination we apply is labelled as yours — who set it, when, and that DISTRYB does not verify it. Illinois is not asked and cannot be overridden: we generate those returns and file against them. Reading determinations needs tax access; recording one needs filing permission.

Separately, storage you hold for someone else is now recorded against the building it actually sat in. Illinois registers a warehouseman for each location and reports against that registration, so the form asks which premises when you have more than one, and the report you download covers that one registration. Tax filing

Improved

The gallonage reconciliation on Tax filing used to roll up stock movements at every location you have, wherever it is. That was right while everyone stored only in Illinois — but an RL-26 is an *Illinois* return, and a warehouse in another state doesn't belong on it.

It now builds from your Illinois locations, and tells you what it did: how many movements at other states were left out, and — if any location has no state recorded — a warning that its movements were counted here anyway. They're kept on purpose, because a short return is worse than a long one, but you should set that location's state under Warehouses so it files where it belongs. If all your stock is in Illinois, nothing about your numbers changes. Tax filing

Fixed

"List on Bottl.Service", on a catalog that says it can't be listed. If your organisation isn't set up to sell, the chip still took the click, reported success, and left you reading "✓ On Bottl.Service" directly under the banner explaining your products can never be listed for purchase. Nothing had listed. The control is now disabled and says why on itself, and the request is refused on the server too. Setting prices is untouched — a catalog whose prices will never be charged can still carry them — and switching a listing off is never blocked.

"Reach out", on a prospect who has no DISTRYB account. Messaging runs business to business, so a licensee pulled from a state register has nobody at the other end; the button dropped you into an empty inbox. Prospects who aren't on DISTRYB now show Invite to DISTRYB on its own, and prospects who are get Reach out that opens the actual thread, plus View business. My Prospects behaves the same way. Where you can sell

The dashboard read your organisation once, when the page loaded. So buying Table Ordering, adding a bar to your organisation, or having us set your premise type left the navigation showing how things stood *before* you did it — with nothing on screen to suggest that reloading was the missing step. It follows those facts live now, and it does so for the organisation you're viewing.

Locations had the sharper version of this: adding your second location left you with no location switcher at all, while Company Settings on the same screen happily listed it. The switcher now appears as soon as the location does — and the location you're working in is never switched out from under you.

Aug 22, 2026

Improved

Signing up as a retailer used to require an Illinois sales-tax (IBT) account number, whatever state you were in. If you don't hold one, there was no answer you could give that was both true and accepted. That requirement now follows the state you're actually in: it's asked for where DISTRYB generates the returns that carry it, and simply not asked for anywhere else.

Your account numbers are also stored per state now, so a business that expands keeps a separate set for each — a new state means new numbers, not overwriting the old ones. The Tax filing page shows the account fields for whichever state you're viewing, in that state's own words, rather than only for Illinois.

One consequence worth knowing if you were affected: a number entered on your Tax filing page previously didn't reach your supplier's Schedule R, and a number captured at signup didn't show up on that page. Both now read the same record, so what you see is what gets filed. Tax filing

Fixed

If you had already set up two-factor authentication, DISTRYB could still ask you to set it up — sometimes again in every new tab. The prompt was reading a copy of your security settings held in your browser, which comes back empty after a dropped connection, instead of checking your account.

It now asks the server, so an authenticator you have already added is recognised straight away. If you were seeing the reminder despite being set up, it stops — and the deadline it had quietly started counting against you has been cleared. You can see exactly what is on your account under Account Settings -> Two-factor authentication.

Aug 20, 2026

Added

Open a channel with a supplier, retailer, or broker you work with — invite them by @handle or email, and they accept from an Invites inbox on their side. Everyone in the channel is labelled with the company they're from, so it's always clear who you're talking to. Owners and managers control who can invite, leave, or remove. Messages

Aug 19, 2026

Fixed

Member flat shipping is capped at two orders a month. On the third, the quote quietly reverted to full freight with nothing on the page explaining it. Checkout now says which of three things happened: the rate applied and how many shipments are left this month, it's spent and when it resets, or ordinary carriage was already cheaper so nothing was used.

Aug 18, 2026

Improved

Listeners can ask to come up, and you approve or decline. Removing someone actually cuts their mic rather than just changing a label, a room shows as live only while its host is really in it, and a members-only room is now genuinely members-only instead of open to anyone holding the link.

Aug 17, 2026

Added

Welcome. Your dashboard is live with your catalog, orders, invoices, licences, and tax filings already in it — including any history we imported for you, because that history is the point.

Everything below this entry shipped in the run-up. Start at Getting started, and use Report an issue in the green beta bar the moment something looks wrong. Beta feedback

Improved

Two-factor is now something you manage, not something set up once and never revisited — turn it on, swap authenticators, or replace it entirely from Settings. An authenticator app is still the stronger factor and stays the default, but if you'd rather not install one you can now receive a code by SMS (US numbers).

Aug 16, 2026

Added

The "coming soon" blog is gone, replaced by a real newsroom at /news with three lanes: our announcements, coverage written about us elsewhere, and an industry desk. Anything written by a machine says so on the byline rather than hiding it.

Fixed

Connecting QuickBooks could fail, or check your permissions against a request carrying no credential at all. The handoff is fixed end to end, so Connect works the first time and your sign-in never travels in a URL. Connectors

Aug 15, 2026

Added

You can now download everything we hold about you, or request erasure, without emailing anyone. Deletion shows you a preview of exactly what goes before you confirm, and names the few records we're required to keep.

Improved

Aug 14, 2026

Added

Flat member shipping used to stop at DISTRYB's own bottles, so a member paid full freight everywhere else. Any seller can now opt in from Store settings: members pay the same capped rate per box at your store, your listings get a member badge, and you can switch it off any time.

Improved

Every alert in the tray now buzzes the right device and wears the icon of the app it came from, and the notification panel opens fully on-screen instead of half off the side of a phone.

Aug 13, 2026

Improved

Pricing, UPC, compliance, access, and ownership changes used to sit in separate trails, and money movements left none at all. Change Log is now one record of who changed what and when — including payouts, invoices, KYB decisions, and subscription tier changes.

Aug 12, 2026

Improved

Commission follows the person who made the sale: amending an order re-prices it, a broker who recruits a retailer earns on that retailer's orders, and the partnership prices the order while the assignment only records whose sale it is. Brokers can also see exactly what they're cleared to sell. Brokers

The overnight check now runs for every stock-holding organization, not just the ones on QuickBooks, and judges a recount by its net effect rather than every keystroke along the way. Inventory

Aug 11, 2026

Added

Claim a @handle for your business and it becomes your public address — one profile, all your locations on it, your own two brand colors, and a Shop tab showing what you sell. Handles are first-come and claiming one is decided on our side, so nobody can take a name that isn't theirs.

Aug 10, 2026

Improved

The log stops reloading itself every 45 seconds, stops scrolling sideways, and becomes expandable cards on a phone. Each row now says which premise it happened at, uses your own state's words for the reason, shows live on-hand, and a voided movement says Voided instead of just looking faded.

Aug 8, 2026

Improved

Warehouses — and anyone storing goods on behalf of another business — can now record the stock they hold. Stock checks run against the premise the change targets, so a multi-location operation stops being measured against the wrong shelf.

Aug 7, 2026

Added

Everything one customer owes you, on one page — every open invoice, what has been paid, and the balance — ready to send. Invoices

Viewers can send Sips to creators on the consumer app, staff can be tipped on content they post for your business, and there's an Earnings screen showing what has been earned, what is held, and what has paid out. Payout fees are quoted at what Stripe actually charges, not a rounder number.

Aug 5, 2026

Added

Post an open campaign, review who applies, and run the whole thing in one place: a private brand-to-creator thread, an opt-in group thread for broadcasts and shared Q&A, a review loop with request-changes and resubmit, and structured usage rights so you know what you are licensed to reuse.

Fund it up front, or charge on approve as each deliverable is accepted.

Improved

Selling alcohol now requires a licence that exists in the public record — checked the same way for buyer and seller, on every lane. Expiry resolves against the state registry rather than whatever was captured at onboarding, and a non-alcoholic business is no longer flagged as missing a licence it never needed. Compliance

Aug 4, 2026

Added

The invoice link you already email on every order can now collect the money. Your customer opens it and pays that invoice, or their whole open balance with you, without creating an account. You can also send a payment request that chases everything one customer owes, grouped by location. Invoices

If your plan includes tax automation, you can now file RL-26 yourself rather than waiting for the beta to lift. Out-of-state sellers get Schedule L (RL-26-L) — the Out-of-State Sellers' Shipment Report, which is the return they actually owe, not the RL-26 an Illinois manufacturer or importing distributor files. Your filing state defaults to where the business is located, and you're shown the returns your organization owes rather than every return that exists. Tax filing

Brand owners get a demand profile (velocity, repeat rate, momentum), a retail-readiness scorecard covering the case, pallet, and GTIN-14 details a buyer will ask for, and a cross-org market benchmark of sell-through — aggregated and anonymized, so you can see where you stand without anyone seeing you. Analytics

Jul 29, 2026

Added

The green BETA bar at the top of your dashboard now has a Report an issue button (it's in the ? menu too). Flag a bug, something confusing, or an idea — paste a screenshot straight in with Ctrl+V — and we attach the page, browser, and screen size for you, so nobody has to ask you which screen it was.

You can also just tell PLUG and it will file the report for you. Either way you get a reference number, and the dialog shows where each of your reports stands. How it works

Jul 27, 2026

Improved

Carts with partial or mixed-case quantities now show the per-bottle rate and line total on every line, so what you'll pay is clear before you check out.

Jul 26, 2026

Added

A new "?" menu in the dashboard puts these docs a click away, and PLUG — your AI assistant — is always in reach beside it for account-specific questions like "Is my QuickBooks connected?" or "Where am I registered to sell?"

Brand owners can now reply, react, and repost as their brand on Bottl.Service posts — and get notified when a post mentions them. Your brand shows up with its own voice and badge, right where customers are already talking.

Threads and Mentions give you one place to catch every reply and @-mention across your conversations, so nothing slips through.

Improved

These docs now match your theme — light or dark — with a cleaner layout, the DISTRYB brand header, and a one-tap theme switch up top. Arriving from the dashboard? They open in dark to match. Prefer the other look? Flip it and we'll remember.

Clearer case vs. single pricing, size and ABV on every card, a persistent cart button, and an "Ask the brand" contact for brand-owned listings — so buyers get the details they need without leaving the page.