You run an online store with a couple thousand products, orders are processed manually, and the operator issues Nova Poshta waybills by clicking around the NP website. Sound familiar? It is the story of most Ukrainian e-commerce stores — until they grow and break. In this article: which integrations a Ukrainian online store actually needs in 2026, what each one costs (from our online calculator), and how the Nova Poshta API is integrated correctly — based on real code from our own Airstep store. No fluff, no doc-copy, with real prices.

Which integrations a 2026 e-commerce store needs — short price list

All prices below are our actual pricing from the e-commerce development page and the online calculator. The base "turnkey" store costs $2,500 and already includes the catalog, cart, checkout, customer cabinet, reviews, wishlist, promo codes, stock, admin panel, and basic Nova Poshta integration (city/branch picker in the order form). Everything else — separate modules at fixed prices:

IntegrationPriceWhat it does
Nova Poshta — branches/addressesincluded in $2,500City and branch search in checkout form
Waybill tracking (order status)+$150Customer sees parcel status in their cabinet
UkrPoshta / Justin+$200Alternative delivery carriers
Online payments (LiqPay/Fondy/Monobank)+$250Cards, Apple Pay/Google Pay via LiqPay
Monobank installment payments+$1503, 6, 12 monthly installments, no interest
Apple Pay / Google Pay (separate button)+$1001-click mobile checkout
1C / BAS / Dilovod+$450Sync of products, stock, prices, orders
Marketplaces (Prom / Rozetka / Google Shopping)+$300Automatic catalog export
CRM integration+$200Orders flow into the sales funnel automatically
Telegram order bot+$300Accept orders directly in Telegram
SMS notifications (TurboSMS)+$150Auto-SMS to customer after payment
Email campaigns (SendPulse / Mailchimp)+$200Trigger emails + promo broadcasts
AI product descriptions+$200Auto SEO descriptions via Claude

All prices are one-time, no monthly fees from us. You can calculate the exact price for your module set in our calculator in under a minute.

Nova Poshta: API, gotchas, and real Airstep code

Nova Poshta is the most common integration in Ukrainian e-commerce. In the base $2,500 store price we always include city and branch/parcel-locker search in the checkout form. Optional add-ons: waybill tracking ($150) and alternative carriers (UkrPoshta/Justin — $200).

What the Nova Poshta API gives you

The official Nova Poshta API covers the entire flow: city/locality search (autocomplete), branch and parcel locker lists by city, courier address delivery, waybill creation directly from your admin, delivery cost calculation before payment, parcel tracking. The API is free, you get a key from your NP cabinet in 5 minutes. Limit — 10 requests per second per key, plenty even for stores with 100+ orders per day.

Real code from our Airstep store

Here is the request structure we use in Airstep on the backend (Django) for city autocomplete in the checkout form:

POST https://api.novaposhta.ua/v2.0/json/

{
  "apiKey": "<NOVA_POSHTA_API_KEY>",
  "modelName": "Address",
  "calledMethod": "searchSettlements",
  "methodProperties": {
    "CityName": "Khar",
    "Limit": "20",
    "Page": "1"
  }
}

The response contains a list with a DeliveryCity field (a unique city ref). We store it on the order and later use it to fetch warehouses:

{
  "modelName": "Address",
  "calledMethod": "getWarehouses",
  "methodProperties": {
    "CityRef": "8d5a980d-391c-11dd-90d9-001a92567626",
    "Limit": "50",
    "Language": "UA"
  }
}

Gotchas we stepped on

FindByString is case-sensitive. Sounds trivial, killed half a day of debugging. If you pass "branch №5" in lowercase you get an empty array. You need "Branch №5" capitalized. Workaround:

props['FindByString'] = search[0].upper() + search[1:]

Cache results. Hitting the API on every autocomplete keystroke means you DDoS NP with your own users. We cache search results in Redis for 30 minutes under np:cities:<query>.

Rate-limit your own endpoint. Bots and autocomplete-abusers can drain your full quota. We rate-limit our proxy view to 60 requests/min per IP via django-ratelimit.

Parcel lockers are not "branches". If you filter by CategoryOfWarehouse=Branch you cut off a convenient pickup option. Fetch everything and group in UI by TypeOfWarehouse.

Waybills from admin

The waybill tracking option ($150 in the calculator) means the manager does not have to retype shipment numbers manually: a waybill is created via InternetDocument.save directly from the orders list, the tracking number is automatically sent to the customer via SMS or Telegram.

One important detail: for cash on delivery you must pass BackwardDeliveryData with PayerType: "Recipient" and AfterpaymentOnGoodsCost. Forget it and the parcel ships, but NP does not collect the money — you ship goods for free. The most common bug we see in DIY integrations.

1C / BAS / Dilovod — $450 for two-way exchange

For many Ukrainian stores 1C (or BAS, Dilovod) is the live accounting system: bookkeeping, warehouse, prices, VAT invoices. Integration with the site is a two-way exchange: 1C → site (products, prices, stock) and site → 1C (orders, new customers).

In our calculator this option costs $450 and includes sync of products, stock, prices and orders. The actual implementation depends on your 1C/BAS configuration: if you already have a 1C developer with a working exchange — we plug into our format; if there is no exchange — we build the intermediate layer.

One important principle: the site must not query the 1C database directly. 1C is a monolith with its own logic, configurations get updated regularly, and direct SQL access from an external web server is a critical security hole. The right approach is exchange through an intermediate layer (XML/JSON exchange, REST API, or buffer tables) so the 1C developer and the web developer do not block each other.

For systems without 1C — KeyCRM, SalesDrive, RemOnline, Dilovod — they already have proper REST APIs, so site integration is simpler and cheaper: the "CRM integration" line in the calculator starts at $200.

Payment systems: LiqPay, Fondy, Stripe, Monobank — $250

On our e-commerce development page the default payment stack is LiqPay, Fondy, Stripe. In the calculator connecting any of these (plus Monobank Acquiring) costs a one-time $250. Optional: Monobank installment payments +$150, dedicated Apple Pay / Google Pay button +$100.

What matters technically

All modern Ukrainian payment systems (LiqPay, Fondy, WayForPay, Monobank Acquiring) follow a similar pattern:

  1. Customer clicks "Pay" on the site.
  2. Backend builds a signed form with order data and an HMAC signature.
  3. Customer is redirected to the gateway, completes the payment.
  4. Server-to-server callback arrives at your URL with the same signature — you verify it and set the order to "paid".
  5. Separately the customer is redirected to your result_url — UI only.

The most common mistake in DIY integrations: marking an order as paid when the customer is redirected back. Classic XSS vector — feed the victim a URL with a stranger's order ID and you mark it as paid. Payment is confirmed only by a signed server-to-server callback with your privateKey.

Second mistake: non-unique order_id. If the customer clicks "Pay" twice, you end up with two charges on the same order. Use order_id = "{order.pk}-{timestamp}" and de-duplicate in the callback.

Other useful modules from the calculator

Beyond Nova Poshta, 1C, and payments — there are a few smaller but very useful modules. Bundling them up front is significantly cheaper than bolting them on later as separate contracts:

  • Marketplaces Prom / Rozetka / Google Shopping — $300. Automatic catalog export. If you still sell through Prom.ua, read why it can be unprofitable in 2026.
  • CRM integration — $200. KeyCRM, SalesDrive, or a custom CRM system. Site orders flow into the sales funnel automatically.
  • Telegram order bot — $300. Takes orders right inside Telegram, hits the same backend. Details — Telegram bot development.
  • SMS notifications (TurboSMS) — $150. Automatic SMS to the customer: "order received", "shipped, waybill №…", "delivered". Cuts manager workload.
  • Email campaigns (SendPulse / Mailchimp) — $200. Trigger emails (abandoned cart, repeat purchase) plus promo broadcasts.
  • AI product descriptions — $200. Auto SEO descriptions via Claude. We have a real case where we generated 4,000 descriptions for $20 on our own Airstep store.

If you already run a real warehouse with serious logistics (1000+ SKUs, multiple zones, pick lists) — that is no longer "an integration", consider a WMS system as a separate product.

How much does a "fully integrated" store cost

Base — $2,500 (turnkey store with NP branches and LiqPay/Fondy/Stripe). The total then depends on the modules you add:

  • Starter: $2,500 — store with base integrations, ready to take orders
  • +1C + marketplaces: $2,500 + $450 + $300 = $3,250
  • "All included" (1C + marketplaces + CRM + Telegram bot + SMS + email + AI descriptions): $4,300

In our calculator you can compute the exact price for your option set in a minute. Development timeline: 4–8 weeks depending on scope.

How we work

At Artbrain we have been building integrations since 2018. We run our own live store Airstep with 6,700+ products, where the Nova Poshta code, AI descriptions, supplier sync and other pieces work in production every day — so this is not "YouTube theory" but practice-tested experience.

  1. Submit a request via the contacts page or the calculator — we call you back.
  2. We discuss your processes and build a technical spec with line-item pricing.
  3. 50/50 payment: first half upfront, second after a working demo.
  4. Release + 60 days of free post-launch support (included in the store price).

Related reading: Shopify vs WordPress vs custom · Airstep development case · AI product descriptions for $20 · why your own store beats Prom.ua · e-commerce development · portfolio.

Anton Kunashenko, CEO & Lead Developer
CEO & Lead Developer at Artbrain

Anton Kunashenko

Founder of Artbrain since 2018. Builds digital products for business — from landing pages to enterprise systems. Active servicemember of the AFU.