Easier discount codes, side-by-side test orders and VAT on delivery
Easier discount code usage
The discount-code field is now more accessible during checkout, making it simpler for customers to apply promotions. This can help increase conversion rates and customer satisfaction.
Side-by-side viewing of orders
Store owners can now view live and test orders next to each other in the admin area. This feature aids in better order management and troubleshooting during testing phases.
VAT charging on deliveries
You can now automatically charge VAT on delivery options. This ensures compliance with tax regulations and helps store owners avoid unexpected costs.
Also shipped
- Report counter sales as their own in-store channel
- Expose the store's low-stock band on GET /api/v1/settings
- Let the brand DAO find or create by name
- Freeze line prices when a payment starts
- Keep a collection targeted by stock pricing manual
- Carry the manufacturer in product import and export
- Let direct text edits change copy mixed with code
- Let the merchant untick DNS records before the move
- Let an evaluation model gate store writes the approval list doesn't name
- Support VND currency and Vietnamese storefront locale
- Translate the variant stock guard and the partial CSV group error
- Add brand and category selects to the Stock toolbar
- Add variant matching and a stock-identity read
- Filter the Stock rows and counts by brand and category
- Look up an exact SKU or barcode from the Stock search box
- Resolve the low-stock band from store settings
- Accept counter orders in the admin reserved-order actions
- Add the counter order switch and chips to the admin UI
- Add the counter reserved-order primitives
- Create counter reserved orders on the shared write path
- Draft orders with invoices, payment terms and discounts
- Explain how a counter order differs from a draft order
- Give a counter order the store's in-store shipping method
- Keep counter sales out of buyer mail, KSeF and the refund PSPs
- Take card payments on the order pay link itself
- Adopt a stored variant when an option dimension is added
- Carry variant ids through the CSV import and refuse partial groups
- Filter the product list by brand and category
- Filter the product list by brand and category search params
- Refuse a save that would delete a variant holding stock
- Let merchants set the low-stock threshold
- Add the module and price products from a stock ladder
- Add the settings page for the price ladder
Fixes
- [admin]Hide the Cookiebot bubble and open cookie settings from the user menu
- [admin]Make the test/live switch show its result
- [api]Set the store language from defaultLanguage in settings
- [billing]Show remaining AI credits per source instead of lifetime totals
- [bundles]Price and tax bundles consistently across cart, API and editor
- [checkout]Keep the mobile checkout column within the screen
- [checkout]Return Stripe redirect payments to /checkout/stripe-return
- [checkout]Stop blocking payment for pickup rates without a carrier
- [checkout]Stop leaking phone field props onto the stacked address input
- [counter]Keep a priced in-store method off the counter default
- [csv]File imported brands whose name spells no slug
- [csv]Stop a blank brand_name column from clearing a product's brand
- [customers]Stop requesting the shopper's name as an avatar image
- [design]Stop design workspaces that hang while reported running
- [domains]Show Vercel's per-domain DNS recommendation
- [ai]Catch the chat up when its tab regains focus
- [ai]Load support translations on the AI assistant page
- [ai]Pass the selected store into Super AI assistant background tools
- [getresponse]Match the web-push worker and name shoppers to Web Connect
- [getresponse]Register the web-push worker for the whole storefront
- [getresponse]Report client-side navigations to Web Connect
- [getresponse]Send newsletter consent with checkout.started
- [i18n]Correct the low-stock email and threshold hint copy
- [i18n]Correct the Polish counter order hint
- [inpost-pay]Reshape delivery[] to the documented contract
- [inpost-pay]Send the products list in every basket payload
- [inpost-pay]Stamp binding_place on every mounted widget button
- [inventory]Give the scan lookup a stable order and a usable index
- [inventory]Keep scan mode perceivable to keyboards, IMEs and screen readers
- [inventory]Keep the category subtree walk inside the store
- [inventory]Keep the scanner in the search box between scans
- [inventory]Let the Stock brand filter name a paused manufacturer
- [inventory]Reopen the scanned panel when the same code is scanned again
- [inventory]Scan the codes the classifier would accept
- [migration]Refuse cutover when legacy pages changed after the rebuild's export
- [newsletter]Serve unsubscribe, confirm and download links from the platform domain
- [orders]Block a counter order that oversells a tracked line
- [orders]Compare a reserved-order replay against the request, not the price
- [orders]Find a repeated job number by its exact tag
- [orders]Identify a reserved-order replay by its goods alone
- [orders]Keep carrier and manual-payment emails off counter orders
- [orders]Let merchants correct the customer name and addresses on any order
- [orders]Open Stripe checkout for reserved order pay links again
- [orders]Release the goods when an undispatched order is refunded
- [orders]Require the source column on the counter channel guard
- [orders]Show pay page errors to the client
- [orders]Show the job chip only on counter orders
- [orders]Show the schema's refusal when creating an order fails
- [orders]Stamp the external payment provider on counter orders at creation
- [orders]Translate the counter refund refusal
- [platform]Scope tenant Vercel project names by environment
- [products]Answer the REST import refusal in English
- [products]Bound the brand and category search params
- [products]Derive the CSV preview key from the values the import saves
- [products]Group the CSV variant preview the way the import does
- [products]Keep the variant id when the grid is bulk-edited
- [products]Match the CSV preview's variant coverage to the save's
- [products]Name ledger history as the blocker when a variant cannot be removed
- [products]Rebuild variant option rows from the upserted value ids
- [products]Refuse a partial CSV variant group in the import, not only the preview
- [products]Refuse a partial CSV variant group in the REST import too
- [products]Stop adopting a stored variant by option subset
- [publish]Record a live verdict for a late publish whose build is serving
- [seo]Keep unlaunched stores and duplicate subdomains out of search
- [subscriptions]Flush product caches after a renewal order
- [ui]Keep useDidUpdate from firing on Strict Mode's replayed mount
- [webhooks]Register payment and carrier webhooks on the platform domain
- [wholesale]Keep payUrl a string in the order creation response