BizKitHub

Commerce · Cart and checkout

A cart that does
the maths for your frontend

For developers of headless shops. Your frontend only renders what the API returns: items, prices, shipping, payments and their allowed combinations. Checkout rules stay on the server and in the admin.

  • Guest and logged-⁠in cart behind one ID
  • Only shipping and payment combinations that make sense
  • Check a voucher before the order is sent

Free sign-⁠up, create your API key in the admin.

cart-detail.jsonJSON
// GET /api/v1/cart/detail?apiKey=…&cartId=b411056d…
// The cart also returns shipping, payments and allowed combinations
{
  "id": "b411056d304d9y6mHe2SoMFBL2Apxfnb",
  "currency": "CZK",
  "priceTotal": 1078,
  "items": [
    {
      "label": "Espresso blend 1 kg",
      "productCode": "espresso-blend",
      "variantCode": "espresso-blend-1kg",
      "quantity": 1
    }
  ],
  "deliveryList": [
    { "code": "packeta", "name": "Zásilkovna", "price": 79 },
    { "code": "gls", "name": "GLS na adresu", "price": 129 }
  ],
  "paymentList": [
    { "code": "comgate", "name": "Platba kartou", "price": 0 },
    { "code": "cod", "name": "Dobírka", "price": 39 }
  ],
  "deliveryAndPaymentCombinations": [
    { "deliveryCode": "packeta", "paymentCode": "comgate" },
    { "deliveryCode": "gls", "paymentCode": "comgate" },
    { "deliveryCode": "gls", "paymentCode": "cod" }
  ]
}
● Omit cartId and a new cart is created
  • Cart over APIAdd a product or variant, change quantity, remove.
  • Shipping and paymentPrices and allowed combinations set in the admin.
  • Pickup pointsPacketa in the cart, GLS ParcelShops via search.
  • VouchersValidity check with a rejection reason.

Why the BizKitHub cart

Checkout is where the money leaks

Every cart bug means an abandoned order. Yet developers usually rewrite shipping, payment and discount logic for every project.

Today

  • Shipping and payment prices hard-⁠coded in the frontend
  • A customer picks cash on delivery for a carrier that cannot do it
  • An invalid discount code shows up only after submitting
  • Logged-⁠in customers and guest carts live in two worlds

With BizKitHub

  • Prices and methods change in the admin, the frontend stays as is
  • The API returns only allowed shipping and payment combinations
  • Vouchers are checked up front with the exact rejection reason
  • The cart is linked to the logged-⁠in customer via their identity

Shipping and payment

Your frontend only offers what fits together

Set up shipping and payment methods and their prices in the admin. The cart returns both lists and a table of allowed combinations, so the checkout never offers nonsense.

  • Shipping and payment price per method
  • Allowed shipping and payment combinations
  • Packeta pickup point selection right in the cart
  • GLS ParcelShop and locker search by address
Allowed combinationsSet in admin → Shipping
ShippingCard onlineTransferCOD
Packeta · CZK 79YesYesNo
GLS to address · CZK 129YesYesYes
In-⁠store pickup · CZK 0YesNoNo

Vouchers at checkout

The customer learns why a code does not work

Before the customer submits the order, check the voucher code. The response says whether the code exists, what state it is in and why the order would reject it. For a logged-⁠in customer it also checks single use per account.

  • Not found, inactive, not yet valid, expired
  • Usage limit reached
  • Already used by this customer
  • Code meant only for the voucher redeem page
voucher-analyzeHTTP
// Check the code before submitting the order
GET /api/v1/voucher/analyze?apiKey=…&code=vanoce25
    &redeemContext=order&identityId=9jq49ZE1…

// Response with the rejection reason
{
  "exists": true,
  "code": "VANOCE25",
  "type": "percentage",
  "value": "25",
  "isValid": false,
  "status": "expired",
  "rejectionReason": "expired"
}
● The server trims the code and converts it to upper case

From cart to order

One call turns the cart into an order

Create the order from the cart in a single call. The response returns the order number, a link to the order page, a payment link and a risk score. The cart is emptied and the goods are reserved in stock.

  • Shipping, pickup point and vouchers in one request
  • Pay with customer credit, or with money only
  • Customer note and a return URL after payment
  • Meta ads attribution stored with the order
CheckoutCart b411056d…
  1. 1
    POST /cart/buy
    Espresso blend 1 kg, 1 pc
  2. 2
    GET /cart/detail
    Shipping, payments, combinations
  3. 3
    GET /voucher/analyze
    VITEJTE10 is valid
  4. 4
    POST /shop/order/create
    Order 26000412, risk 3/100
  5. 5
    Redirect to payLink
    Card payment, back to the thank-⁠you page

Carts in the admin

See the carts that never reached checkout

The admin shows every open cart: how many there are, how many have items, how many belong to logged-⁠in customers and how much money sits in them. Each cart shows its contents, chosen shipping and payment, and the visit’s location data.

CartsWhole organisation
Total carts
3,482
With items
1,204
Active (24 h)
86
Abandoned
138
unchanged for 14 days
Logged-⁠in customers409 carts
Guest visits795 carts

What it does

Checkout without logic in your frontend

Variants in the cart

The cart holds a specific product variant with image and price.

Quantity changes

Set the quantity, zero removes the item.

Logged-⁠in customer

With the customer identity, the cart is linked to their account.

VAT-⁠aware prices

Items carry prices with and without VAT in the cart currency.

Real customer IP

When calling from your server, pass the visitor’s IP for geolocation and risk.

Stock reservation

Goods are reserved once the order exists, unpaid ones are released.

Ready payment page

The order returns a payment link and an order page link.

Customer credit

An order can be paid with credit and the rest with money.

Swagger

Every cart endpoint with request and response examples.

Getting started

Checkout in three steps

  1. 01

    Set up shipping and payment

    Pick methods, prices and allowed combinations in the admin.

  2. 02

    Create an API key

    Keep the key on your server, never in the browser.

  3. 03

    Wire up the cart

    Follow Swagger: cart, voucher and order creation.

Who it is for

Where a ready cart helps

Headless shops

A Next.js, Nuxt or Astro frontend on top of a finished checkout.

Mobile apps

A native cart called through your backend.

Agencies

The same checkout for several client shops.

Connections

What the checkout can handle

  • Comgate
  • GoPay
  • Stripe
  • Packeta (Zásilkovna)
  • GLS
  • Meta Conversions API (attribution)
  • REST API

Frequently asked questions

Common cart questions

How is the cart recognised between requests?

By cartId. The first call without a cartId returns a new cart. Store its ID, for example in a cookie.

How do I link the cart to a logged-⁠in customer?

After login through the customer API you get the customer’s identity. Send it when adding to the cart and the cart is linked to their account.

Where is the price calculated?

On the server. The cart returns item prices and shipping and payment prices. Creating the order calculates the final total including vouchers and credit.

What if the customer never pays?

Stock reservations have a time limit. Unpaid reservations are released for other customers automatically.

Do you send data to Meta?

No. We only store the attribution (fbc, fbp, URL) with the order and return it in the order detail. Sending it to the Meta Conversions API is up to your server.

Wire up the cart today

Create a free account, set up shipping and payment, and generate an API key.

Questions? Contact support or check the pricing.

Cart & checkout
Free, no card
Start for free