New in Endora Commerce: a built-in CRM with sales opportunities See it →
Endora Commerce

Over 70 modules, one admin panel

Endora Commerce covers the whole of B2B selling: catalog, pricing, warehouses, orders, quotes, CRM, projects and tasks, payments, invoices, content, search, marketing and AI. Every area is its own module you switch on, configure and extend without rewriting the rest of the platform.

modules out of the box
70+
admin panel for every sales channel
1
multi-language storefront and admin
i18n
OpenAPI, webhooks, custom fields
API

What you get as standard

Every module owns its data, its permissions, its settings and its translations. Each one can be switched on, switched off or extended without touching the others.

Selling and orders

The whole path from cart to order to return, in the “buy now” flow and in the negotiated one.

  • Orders

    Order placement from the cart and on the customer’s behalf (with a product browser, a live price preview and line groups, without touching the customer’s own cart), your own statuses and transitions between them, comments visible to the customer, status changes and invoice printing for many orders at once, saved list views with custom-field filters and CSV export, and a full change history.

  • Carts

    Anonymous and signed-in carts that merge on login, a lifecycle (active, abandoned, completed), coupons, up-sell suggestions, carts seeded from an accepted quote, and an approval gate for the organization administrator, who sees every cart in the company.

  • Checkout

    Address, delivery and payment choices narrowed to what the organization is actually allowed to use, a minimum order value per channel, surcharges on selected methods, coupons, an order comment, extra recipients for the confirmation and your own order-number format.

  • Quote requests

    The full negotiation loop: the customer submits a request, the sales rep prices it, either side can change the terms, and an accepted quote becomes an order without re-typing line items. Every line shows a reference price and its difference from the customer’s proposal, lines can be grouped, the history shows who changed what, and you send the quote to the customer as a PDF from the template and in the language you choose. Requests expire automatically after a set number of days, and a quote’s validity date applies right up to order placement.

  • Quick order

    Cart import from a CSV or Excel file (up to 2,000 rows, with variants resolved from extra columns and a report of rejected lines) or a pasted list, search by SKU, name and selected attributes, default ordering preferences (payment, delivery, addresses), and one-click reordering of a previous order.

  • One-click buy

    For customers with a complete set of default preferences, the order is placed without going through the cart or checkout. Switched on globally or per sales channel.

  • Shopping lists

    Named product bundles saved on the customer’s side, converted whole or in part into a cart or a quote request.

  • Product comparison

    Buyers line products up parameter by parameter, signed in or not, hide empty rows, add products to the cart straight from the comparison, share it by link and export it to PDF using a template you design in the admin panel.

  • Returns and complaints

    Submission with a return reason, verification, RMA number assignment, reverse logistics with receipt confirmation, and settlement: refund, replacement, repair, a corrective invoice or store credit for the organization. Your own statuses, partial returns, and a free-return window that decides who pays for shipping back.

CRM, projects and tasks

The sales pipeline, projects and team tasks in the same admin panel as orders, quote requests and customers: no separate system, no copying data across.

  • Sales opportunities

    An opportunity taken from first contact to won or lost on a kanban board, with your own statuses and allowed transitions. Linked orders can follow the opportunity’s status, and one click turns an opportunity into an order or a quote request.

  • Automatic opportunities

    An opportunity can be created on its own from a new order or quote request, switched on separately for each sales channel.

  • Notes, mentions and attachments

    Tags, notes and internal messages that mention people and reference orders, quote requests and tasks, attachments, and a full change history. They work the same way in sales opportunities, projects and tasks.

  • Calendar and reminders

    Events pinned to an opportunity, a calendar view, and reminders delivered under the admin bell and by email.

  • Sales analytics

    Opportunity handling time and win rates broken down by sales rep and sales channel, available to roles with a dedicated permission.

  • Account managers

    A sales rep assigned to an organization sees only its orders, quote requests and opportunities: in lists, in search and in exports.

  • Tasks

    Team tasks with several assignees, a due date, a priority, tags and custom fields, moved through your own statuses on a list or a board. Comments, sub-tasks, links to opportunities, orders and quote requests, reminders, a daily digest, and private and draft tasks. A free module under the MIT licence.

  • Projects

    Projects for one or more organizations, or internal ones, with their own stages and deadlines, members in roles (e.g. sales rep, project manager), a value and visibility set per project. Project templates, stages that require their tasks to be finished, closing as completed or lost with a reason, and project analytics. A free module under the MIT licence.

Catalog and content

A deep technical catalog and editorial content in the same admin panel, with separate versions per channel and language.

  • Product catalog

    Products, variants, categories and attributes, separate visibility and pricing per sales channel, active and inactive statuses with separate archiving and restoring, and search and filtering by technical parameters. A gallery with images and video, product duplication, and category page content laid out in the Page Builder.

  • B2B product visibility

    A product can be public, visible only after sign-in, or reserved for named organizations. Contract assortment never leaks to other customers or into search.

  • Bulk product editing

    Changes across many products run in the background, with a progress bar, a result report and the option to undo the whole operation.

  • Attributes and attribute sets

    Your own product fields with types and option lists, grouped into reusable sets assigned to products.

  • Products per channel and language

    Availability, attribute values, URL, gallery, attachments, minimum order quantity and returnability set globally, per sales channel or per channel and language pair. When you switch a product on, the admin panel checks that it has complete data in that channel and language, and tells you what is missing. Status can also be changed in bulk within one channel.

  • Composite products

    Grouped, bundle and virtual types alongside simple and configurable: kits, sets and non-physical items handled natively on the product page.

  • Packaging units

    Selling by pallet, carton or pack: the buyer orders a unit, the platform converts it into pieces and carries that context into the order and the quote.

  • Product links

    Related, up-sell and cross-sell links driving the suggestions shown on the product page and in the cart.

  • Product attachments

    Certificates, datasheets and technical documentation attached to a product and shared across products without duplicating files.

  • Assets library

    A central file store with a folder tree, public or private visibility (private files through short-lived signed links), protection against deleting an asset that is still in use, a bin with 30 days to restore, and a block on uploading executable files.

  • Search

    An index built separately for each sales channel and kept current by catalog events, with type-ahead suggestions, a log of searched phrases and optional semantic search.

  • CMS and Page Builder

    Pages, blocks, templates and hooks composed by drag and drop, with a separate version for each channel and language and a page name and URL of its own in each language. Around 30 ready-made blocks (including product blocks, sliders, tabs and forms) with layout variants, phone, tablet and desktop preview, copying content from another language, and blocks contributed by modules.

  • Blog

    Posts edited in the same Page Builder, with a category tree, tags, related posts and related products shown as product cards priced for the reader, drafts and an archive, and the blog switched on separately per sales channel.

  • Megamenu

    The storefront’s navigation bar with a configurable tree, bound separately for every channel and language pair: links to categories, CMS pages and external URLs, buttons, images, video, embedded CMS blocks and icons from the assets library.

  • SEO

    The language in the storefront URL (e.g. /en/p/drill), product URLs set globally, per language and per channel with permanent redirects from old addresses, meta data per entity and per language, overrides from the admin panel, an XML sitemap with a status view and manual regeneration, and for every channel default robots settings, your own robots.txt and an llms.txt file for AI assistants, each previewed before it goes live.

  • PDF document templates

    Invoices, quotes and product comparisons designed in the same Page Builder: a separate layout per channel and language, a line-item table with the columns and attributes you choose, merge fields, page settings and a PDF preview on sample data.

Pricing and billing

Everything money touches: from a pricing rule, through tax and credit limits, to an invoice filed with the tax authority.

  • Price books and pricing engine

    Price books for everyone, for customer groups or for selected organizations, set per currency and sales channel: base, catalogue, contract and sale prices, quantity brackets and time windows. A price can cover the whole range, a category, an attribute value, a product or a variant, and a fixed order of precedence decides which price book wins. The editor works like a spreadsheet, with CSV import and export and price book duplication, and the price explainer shows what a specific customer will pay and why.

  • Price display

    Net, gross, both or none, set per organization, category or product. Prices shown only after sign-in are hidden in the API too, not just in the interface, and a hidden price turns into an invitation to submit a quote request.

  • Promotions

    Percentage and amount discounts, free delivery, buy X get Y, every n-th item cheaper and spend-based discounts, driven by rules (cart value, payment, delivery, country, postal code, category, customer group, attribute) combined with AND/OR. Single coupon codes and generated batches, usage limits, priorities and usage statistics.

  • Taxes

    Rates resolved by country, product type and the buyer’s VAT status, with a preview of the effective rate before you save the rule. VAT is taken on the sum of the nets at each rate and rounded once, the same way in the cart, the order and the invoice. A missing rate blocks the order instead of silently charging 0% VAT.

  • Credit limits

    A credit limit granted to an organization, reserved atomically at order placement and released once the invoice is paid or the order is cancelled. The customer sees the granted, available and reserved amounts, and paying by credit limit disappears from checkout when the cart exceeds it.

  • Invoices

    Proformas, invoices and corrective invoices generated as PDFs, gap-free numbering from a pattern per document type and channel (e.g. INV {no}/{channel}/{year}), sending by email, and a list of the whole organization’s invoices in the customer account. Amounts are calculated exactly, with unit prices to four decimal places, and corrections and returns settle cumulatively.

  • Accounting systems

    A shared layer for accounting adapters: one active system at a time, a choice of who numbers the invoice and who files it with KSeF, and a delivery history with retries. The ready-made adapters are paid modules.

  • Payments

    A payment-driver layer: bank transfer, cash on pickup and credit limit out of the box, plus paid gateway modules for Stripe, PayU, tpay, PayPal and Autopay. Methods assigned to channels and organizations, surcharges on selected methods, payment history and retries, and automatic order status changes.

  • KSeF e-invoicing

    Automatic submission of invoices and corrections to Poland’s national e-invoicing system in the FA(3) format, the KSeF number on the document, downloadable confirmation and a QR code on the PDF. A paid module, included in the price of rollouts run by Endora.

  • Currencies

    A pool of accepted ISO 4217 currencies with a default, configurable separately for individual sales channels.

Customers and organizations

In B2B a company does the buying, so the platform models it directly, with its branches and roles.

  • Organizations

    Company registration with email verification, a tax ID check against the Polish VAT whitelist and VIES with the company name filled in automatically, manual or automatic approval of new companies, member management, invitations and roles inside the organization. A blocked company sees a banner with the reason and cannot place orders.

  • Organization hierarchy

    Head office and branches as a tree: order visibility flows down, and commercial terms (pricelist, credit limit) are inherited from the nearest ancestor.

  • Customer accounts

    Sign-in with a password or a Google or Microsoft account, password change and reset, TOTP two-step verification with a QR code and backup codes, a two-step verification policy set for the whole organization, trusted devices, and password-guessing protection that never locks out the rightful owner.

  • Individual customers

    Support for buyers operating without an organization, with their own address book. In the admin panel: a customer list, blocking, soft delete with a restore window, and automatic anonymisation after 365 days in line with GDPR.

  • Addresses

    Shipping and billing addresses within the organization plus each user’s personal address book, one default per kind, with an address snapshot stored on the order.

  • Custom fields

    Extra fields on orders, organizations, customer accounts, categories, products, quote requests, CRM opportunities and projects, added as data, with no database migration and no code deployment. Fields can act as filters on the order, quote request and opportunity lists, and their values carry over between quote requests, orders and opportunities. For each field you decide whether only your team sees it, or the customer and the API too.

Warehousing and delivery

Real logistics: many warehouses, reservations, carriers and retryable shipments.

  • Warehouses and stock

    Many warehouses, stock and reservations tracked per product and warehouse, warehouses assigned to channels and organizations, five fulfilment strategies (including splitting an order across warehouses), low-stock thresholds with email alerts, and stock shown as a number, a band or simply “available”.

  • Backorder and notifications

    Selling beyond stock, products excluded from stock management, and letting customers subscribe to a back-in-stock notification.

  • Delivery methods

    A delivery-method registry fed by carrier adapters, with per-channel availability, exclusions for organizations, a surcharge and a name in every language. The InPost and DHL Parcel adapters are paid modules, included in the price of rollouts run by Endora. Enabling an adapter creates a configurable method visible at checkout on its own.

  • Shipments

    A shipment as a separate, retryable record linked to the order, with the carrier reference, status, failure reason and the history of dispatch attempts. The order status can change on its own after a successful or failed dispatch, and the customer gets an email about the shipment.

  • CSV import and export

    Bulk data editing through CSV files: import and export of products, categories and stock levels (with a dry run before anything is saved), plus export of customers and orders. Imports apply in a single transaction, so a half-broken file breaks nothing.

Sales channels and languages

One installation serves several places of sale, currencies and languages at the same time.

  • Sales channels

    Storefront, marketplace, distributor portal or a mobile app as separate channels, each with its own domain, theme and logo, and its own set of languages and currencies. Products, prices, promotions, payment and delivery methods, and content are assigned to them, and every request resolves to exactly one channel.

  • Languages

    Any number of BCP-47 languages, with the full ISO 639-1 list and regional variants: the pool this installation supports, a default language, and a fallback rule for values nobody has translated yet. Another market is a new entry on the list, not another rollout.

  • Dictionaries

    A shared registry of countries, currencies and languages used by addresses, taxes, warehouses, promotions, navigation and content.

  • Multi-language admin

    Every admin user picks their own language, and the choice follows them across devices. Polish and English are ready out of the box; further languages are added as translation bundles shipped by the modules. The change applies immediately, with no sign-out.

  • PWA

    Storefront and admin installable on the home screen, with a configurable name and icon per channel and asset caching. Buyers get push notifications about order and quote status changes in their own language, choose which kinds they want, and your team can send a message to everyone or to selected recipients.

Administration and security

Who can do what, who changed what, and how to configure it, without reaching into the database.

  • Admin users

    Administrator accounts kept separate from customer accounts, with sign-in by password or a Google or Microsoft account, two-step verification enforced on selected roles, trusted devices, password-guessing protection, every session signed out after a password change, and soft delete. Pinned screens and admin preferences are stored on the server, so they follow you to every device.

  • Roles and permissions

    A module-and-action permission matrix assigned to roles. Every protected operation checks the permission server-side, not just in the interface, and an administrator cannot grant anyone permissions they do not hold themselves.

  • Global admin search

    Ctrl/⌘K finds orders, quote requests, opportunities, organizations (by tax ID too), customers, products by SKU and categories, with results grouped by type, as well as every admin screen. A query is matched word by word, and search respects the same permissions as the lists.

  • Audit log

    An append-only record of sensitive operations: who, what, when and on whose behalf, with the state before and after the change, settings changes included. Secrets reach the log only in redacted form.

  • Impersonation

    Step into a customer’s context to see their prices and orders through their eyes, with a visible banner and an entry in the audit log.

  • Settings

    Platform configuration declared by modules in their manifests, set globally or separately for selected channels, and read through one API, with protection against overwriting a change someone else made at the same time.

  • Credentials

    One credential configuration, for example for a language model or an email provider, reused in many places: encrypted at rest, masked on read, and redacted in the audit log.

  • Module lifecycle

    Modules enabled and disabled in the admin panel and installed from the command line, with dependency validation and no process restart. Upgrading the whole platform to a new release is a single command.

  • Monitoring

    A readiness probe covering the database, cache and search engine, ready for a container orchestrator and a load balancer, plus the release number shown in the admin panel.

  • Developer tooling

    One command sets up the API, admin panel, storefront, Docker services, demo data and an admin account. The CLI scaffolds your own module, checks a module package and upgrades every package to one release.

Customer communication

Messages leaving the platform and notifications for your team, on the providers you choose.

  • Transactional emails

    The content, subject and look of every message edited in the admin panel, globally and per channel and language, in an editor safe for email clients: reusable blocks, variables with conditions and loops, the channel’s logo and colour, and a reset to the default version.

  • Newsletter

    Your own subscriber list with tags and custom fields, single or double opt-in per channel, a suppression list for bounces and complaints, scheduled campaigns and multi-step automations, a working unsubscribe link, and campaign statistics: deliveries, opens and clicks per link (tracking switched on per channel).

  • In-app notifications

    A shared notification feed under the bell in the admin panel, available to every administrator whatever their role: a new organization signing up, a failed feed run, the result of a bulk catalog operation, mentions and reminders from CRM, tasks and projects, and whatever else modules write into it.

Marketing and analytics

Measurement, ad tags and product feeds, all configured per sales channel and all gated on the buyer’s consent.

  • Analytics

    An event log from the storefront and admin, with summaries available inside the admin panel and counted in the reporting time zone you choose, independent of whether any external tool is switched on.

  • Google Analytics 4

    A per-channel switch and measurement ID, Enhanced Ecommerce, a configurable custom-events builder and optional server-side tagging.

  • Google Tag Manager

    A GTM container per sales channel, a documented commerce event vocabulary on the data layer, Consent Mode v2, and optional relaying of those events from the backend to your server container, exactly once per event.

  • Meta Ads

    A per-channel Meta Pixel with the standard commerce events (ViewContent, AddToCart, InitiateCheckout, Purchase, Lead) plus your own events fired alongside them, never instead of them.

  • LinkedIn Ads

    A per-channel Insight Tag and mapping of storefront actions (product viewed, added to cart, added to a quote request, order placed, contact form submitted) onto conversion IDs from Campaign Manager.

  • Cookie consent

    One banner and one stored decision for every marketing tool. Until the visitor accepts, no script, cookie or request goes out, and consent given mid-session takes effect without a page reload.

  • Product feeds

    A channel’s catalog published as an XML, CSV or TSV file: complete templates for Google Merchant Center and the Meta catalog, and starting-point templates for Amazon, eBay and Allegro. The file sits at a stable tokenised URL or is pushed over SFTP, FTP or HTTP, regenerated on a schedule, with categories mapped to Google and Meta taxonomies and a report of skipped items.

AI and automation

Artificial intelligence where it actually saves time: in day-to-day admin work and in search.

  • AI assistant in the admin

    Describe in the command palette what should happen, in Polish or English: assign products to a category, change their status or visibility, archive or restore products, set stock in a warehouse, change order statuses. The assistant shows the exact plan (up to 500 records at once), executes only after you confirm, stays inside your permissions and writes every action to the audit log. You pick the model: OpenAI, Anthropic, Google, DeepSeek or any OpenAI-compatible endpoint, including one running locally.

  • AI content translation

    In the Page Builder you translate a whole page, one component or a selected passage on your own language model. The feature is off by default, only the text is sent to the model, and every request leaves an entry in the audit log.

  • Command palette actions

    Every module contributes its own actions to the command palette, so the most frequent operations are two keystrokes away instead of a walk through menus.

  • Semantic search

    Optional hybrid search: classic phrase matching enriched with an embedding model, switched on separately for each sales channel.

  • Events and webhooks

    Modules talk to each other through events, and the events for orders, products, quote requests, credit limits and CRM opportunities can be pushed outside as signed webhooks, with retries, manual replay and subscriptions narrowed to one organization.

  • Partner API

    An API key bound to an organization and a channel gives an integration the catalog with that company’s prices, pricing for up to 200 lines in one request, idempotent ordering on the same terms as the buyer, and incremental change sync. The OpenAPI description is available to keys with the right permission.

How Endora Commerce modules work together

What makes a platform valuable is how its features connect.

01

Every capability is its own module

Every capability is a separate module with its own data, permissions, settings and translations. You switch on what you use and do not pay in complexity for the rest.

02

Configuration instead of a release

A new pricelist, order status, delivery method or extra field on an order is a change in the admin panel. No waiting on your software vendor or the next release.

03

Everything scoped per channel

Products, prices, promotions, content, settings and analytics hold separate values per sales channel. One admin panel runs the storefront, the marketplace and the distributor portal at once.

04

Every change leaves a trace

Sensitive operations land in the audit log with the state before and after. You always know who changed a price, when, and on whose behalf.

05

Events instead of hard wiring

Modules talk through events rather than reaching into each other. The same event that records a new order can go out as a webhook to your ERP.

06

The code is yours

The platform lives in your repository. A new payment, carrier or integration adapter is added as another module, with no core fork and no waiting on a vendor.

See these modules in action

The admin panel and the storefront are live. Sign in with a demo account and click through the features you have just read about, or book a free consultation and see them live with us.

Michał Zabielski, founder and CEO of Endora

Michał Zabielski

Founder and CEO, Endora

We reply within one business day.