Payments
Checkout settings per storefront
The Checkout tab: checkout provider, prices with or without VAT, delivery countries, countries you do not sell to, the cart mode and the payment methods shown.
The Checkout tab controls the checkout in a storefront. Here you choose the checkout provider, the cart mode and how prices show.
Where: Storefronts › [storefront] › Checkout.
The cards
| Setting | What it does | Default | Limits |
|---|---|---|---|
| Provider | Which checkout the storefront uses | Native (test only) | Kustom (hosted) is required for go-live |
| Price display | Prices include VAT (B2C default): prices in the storefront show with VAT | On | – |
| Sells to | The countries the storefront sells to | – | See Shipping methods, delivery countries and prices. Cannot be saved empty |
| Not sold to | Countries that see the storefront but cannot buy | None | Never a country that is in Sells to |
| Cart | What the cart icon opens: Cart page or Drawer | Cart page | – |
| Payment methods shown | The logos in the footer and under the buy button | Set by Provider | You cannot change it here |
Press Save changes. The storefront uses the change within a minute.
Provider
- Kustom (hosted): Kustom's checkout window inside BunStack's checkout. You can pick the row when Kustom is Connected under Stack › Kustom. Otherwise it shows NOT CONNECTED.
- Native (test only): a test checkout without payment. It creates orders that nobody pays for. The go-live check Checkout provider stops the storefront.
- A live storefront cannot pick Native (test only). The row says "Pause the shop first — native takes no payment."
Warning: A storefront that is already live on Native takes unpaid orders. The top of the tab shows This shop is live on Native: it takes orders nobody pays for. Switch to Kustom and save, or pause the shop under Go live. Pick Kustom (hosted) and press Save changes, or pause the storefront under Go live.
Until then the tab saves nothing but the Cart card. See The checkout as the customer sees it for what happens when a change gets through anyway.
Price display
Prices include VAT (B2C default) is on by default. The price on the product is then what the customer pays. Turn the box off in a storefront that sells to businesses. The checkout then adds VAT to the price. The checkout summary shows "Prices incl. VAT" or "Prices excl. VAT — VAT is added".
Not sold to
The Not sold to part is in the Sells to card, under the countries. A country here sees the storefront but cannot buy. Together with Sells to that gives three modes per country:
| Mode | The visitor sees | The checkout |
|---|---|---|
| The country is in Sells to | The storefront as usual | Takes addresses in the country |
| Prices shown, no buy button | The prices, but no buy button and no quick add on the cards | Does not open |
| Prices hidden | No prices and no buy button | Does not open |
- Type the country in Add a country and pick it. The search covers every country, also those not in the grid. The country is taken out of Sells to.
- Pick Prices shown, no buy button or Prices hidden.
- Write a line of your own in Own line (optional) if you like, for example where the customer can buy instead. Link (optional) makes the line a link: an address starting with https:// or a page in the storefront, such as /find-a-dealer.
- Press Save changes.
The card shows the notice as a visitor from the country reads it, in the storefront's language.
- A country is in Sells to or under Not sold to, never both. In the grid such a country is struck through. A click on it moves the country back to Sells to and removes the rule. ✕ removes the rule without adding the country to Sells to.
- The presets EU 27, All EU + EFTA, Nordics only and Sweden only skip the countries under Not sold to and say which, for example Skipped NO: it is under Not sold to.
- Sells to cannot be saved empty: an empty list lets the checkout take every country. The page says Sells to cannot be empty: an empty list lets the checkout take every country. Pick at least one country.
- A country in neither list works as before: the cart works and the checkout refuses the address.
- A rule for the US gives a warning: Google reads the storefront from the US, and Merchant Center can refuse your products.
Warning: The EU's geo-blocking rules also cover Norway and Iceland, because they are in the EEA. You are the seller, and you carry that risk. The card shows a line about it for every country in the EU and the EEA.
What the visitor sees
The country is the bs_country cookie when the visitor has picked one, otherwise the country of their IP address. An unknown country, for example in a preview, gets the storefront as usual.
- At the top of every page, above the header, it says for example "We don’t sell to Norway. Prices and buying are not shown here.", your own line and "Shopping for an address in another country? Choose country". On a phone the line is shorter. The announcement bar is not affected. With Transparent over hero the line is fixed at the top of the home page, and the header sits under it.
- The product page shows "Not sold to Norway", your own line and Choose country in place of the quantity, the add-ons, the buy button and the delivery rows. The wishlist stays.
- Choose country opens a list of the countries in Sells to. The pick is stored in the
bs_countrycookie and comes before the IP country. The currency follows the chosen country, as when the storefront picks the currency by country. At checkout the address must be in a country you sell to. On a phone the list opens without the keyboard. Tap the search field to search. - The cart has no checkout button, no add-ons and no suggestions. Items already in it stay. /checkout shows the notice instead of the checkout.
- With Prices hidden the prices are removed on the server: from the page's HTML, from Google's product data on the page (JSON-LD and product:price) and from the search's product list. No prices show in the menu, the search, Recently viewed, the cart or the footer's currency switcher. The view_item event is not sent to GA4. A product opened then is not added to Recently viewed, so the prices already stored there stay.
A storefront with at least one rule is never served from the shared cache, because the page differs per country. A storefront with several currencies already works that way.
The rule only covers what the visitor sees. The Google and Meta feeds and the API keep the prices.
Who can buy
Under Sells to, the Who can buy table shows each saved country: the currency a customer from there sees first, whether the payment provider takes the pair, and which shipping methods go there. The heading counts the countries that can buy, for example Who can buy · 25 of 27 ready.
| Column | What it shows |
|---|---|
| Country | The country. |
| Pays in | The currency the customer sees first. It follows Auto-pick by visitor country under Pricing rules. The customer can switch currency, and the checkout then offers one that works. |
| Payment | What Kustom answered. Kustom said no and Not in the Kustom list are red and link to Stack › Kustom. not asked yet means Kustom has not had the question yet. |
| Shipping | The shipping methods that go to the country. No shipping method is red and links to Settings › Shipping. |
- The table cannot be edited. Each red row links to where the gap is fixed.
- Pairs nobody has asked Kustom about go to Kustom when the tab opens and after Save changes.
- A storefront on Native (test only) shows Native · no payment under Payment.
Cart
| Mode | The cart icon | The discount code is entered |
|---|---|---|
| Cart page | Opens the cart page /cart | On /cart or at checkout |
| Drawer | Opens the cart as a panel from the right | At checkout |
In both modes a panel opens when the customer adds an item to the cart.
- With Cart page the panel shows items, quantities and subtotal, and the buttons "Continue shopping", "Checkout" and "View full cart".
- With Drawer the panel is the cart. It shows image, quantity, "Remove", what is left to free shipping, whether prices include VAT, and "Checkout" with the subtotal.
- The panel slides in from the right over 300 ms and back out when it closes. A product added while it closes turns it round where it is.
- In both modes the panel checks the items the first time it opens on a page. The cart page does the same when it opens.
- An item the storefront no longer sells is removed. The panel names it, for example "Blue shirt is no longer available and was removed from your cart."
- An item that is sold out stays, marked "Sold out". Above "Checkout" it says "Blue shirt is sold out. Remove it from your cart.", and "Checkout" cannot be pressed until the customer removes the item.
- With Drawer, /cart opens the home page with the panel open. The link's parameters are passed on, so a code in
?code=reaches the checkout. The code does not stay in the address: the storefront moves it into the tab when the page loads.
The same choice is in the designer on the Header component, under Content. Put this on the live shop sends the choice to the storefront. Custom headers with data-bs-action="open-cart" use the same choice.
Payment methods shown
The card shows the logos the storefront shows in its footer and under the buy button on the product page. Provider decides them:
- Kustom (hosted): Visa, Mastercard, Swish, Apple Pay and Google Pay.
- Native (test only): none, because the test checkout takes no payment.
A stored selection of your own overrides the provider's. The card then shows This shop has a stored selection, which overrides the provider default. Show only payment methods your Kustom agreement has.