# Saleor — E-Commerce Platforms & Shop Systems

Saleor by Saleor Commerce holds a panel rating of 2.5/5 from 6 AI judges (category median 2/5), as of 2026-10-15. Provenance: provenance unknown; sovereignty: not determined.

- Vendor: Saleor Commerce (https://saleor.io)
- Category: [E-Commerce Platforms & Shop Systems](https://whats-best.ai/software/e-commerce.md)
- Provenance (editorial classification): provenance unknown
- Canonical page: https://whats-best.ai/software/e-commerce/saleor
- Alternatives: https://whats-best.ai/software/e-commerce/saleor/alternatives ([markdown](https://whats-best.ai/software/e-commerce/saleor/alternatives.md))
- Data as of: 2026-10-21 · evaluated 2026-10-15 · oldest source captured 2026-10-13

**AI-generated.** Every score, rationale and verdict here is written by a panel of AI judges from public evidence — an analysis, not a hands-on test. Every fact quotes the vendor page it was read from. No score can be bought. How scores are made: https://whats-best.ai/methodology

## At a glance

- Vendor: Saleor Commerce
- Headquarters: Not stated on the vendor’s pages as of 13 Oct 2026
- Data hosting: Not stated on the vendor’s pages as of 13 Oct 2026
- Free plan: Not stated on the vendor’s pages as of 13 Oct 2026

## The panel's verdict

Saleor is an open-source, headless commerce platform whose strength is extensibility, where scores cluster at 8–9, resting on a GraphQL API, 160-plus webhooks including synchronous ones, 45-plus dashboard mount points, and mostly forkable, self-hostable apps. Order operations score 6–7: multi-warehouse split shipments, approval flows, returns and replacements with automatic draft orders, and partial refunds including shipping costs are all documented, though we found no public information on carrier label printing or ERP and accounting interfaces. The weak flank is sovereignty, scored 0–1, with no public information on data residency, contracting entity jurisdiction, ownership or subprocessors, and a managed cloud offering that names no location. Catalog and checkout scores sit at a flat 4: the variant model is documented, but we found no public information on payment methods, guest checkout or bundles behind the named Checkout API. Tax and legal spreads 3–4 on a real VAT framework, unevidenced on VAT-ID validation, OSS reporting and e-invoicing. Data control and exit ranges 5–7, split between structural open-source exit and export documentation covering products only. We found no public information on managed-cloud prices.

**Speaks for it:**
- Extensibility scores cluster at 8–9 on an open-source core with over 21.8k GitHub stars, 160-plus webhooks including synchronous ones, and 45-plus dashboard mount points
- Fulfilment is documented in depth, covering multi-warehouse split shipments, approval flows, returns and replacements with automatic draft orders, and partial refunds including shipping costs
- Tax is genuinely modelled, with tax classes defining rates per country assignable to products, product types and shipping methods, plus per-channel gross/net entry and display
- Exit is structural rather than promised, as the open-source core and a majority of apps can be forked and self-hosted
- Product export runs as an asynchronous job in CSV or XLSX with selectable fields, attributes and per-warehouse stock columns

**Held against it:**
- Sovereignty scores sit at 0–1, with no public information on data residency, contracting entity jurisdiction, ownership or any subprocessor
- Catalog and checkout scores cluster at 4, and we found no public information on payment methods, guest checkout, bundles or promotion rules
- Tax and legal scores top out at 4, with no public information on VAT-ID validation, reverse charge, OSS reporting or e-invoicing
- The documented export surface covers products only, with no public information on customer or order-history export, deletion, or migration paths
- We found no public information on carrier integrations with label printing or on maintained ERP and accounting interfaces

**Best for:**
- You have an in-house development team and want a headless, open-source platform you can fork, self-host and extend, where extensibility scores cluster at 8–9
- You run multi-warehouse operations and need split shipments, approval flows and returns with automatic draft orders documented out of the box
- You want exit to be structural, with an open-source core, forkable apps and a documented CSV or XLSX product export
- You build bespoke storefronts and want configuration version-controlled through a CLI that syncs to a repository

**Avoid if:**
- You must name hosting location, contracting entity and subprocessors before signing — sovereignty scores sit at 0–1 with no public information on any of them
- You sell B2B across the EU and need VAT-ID validation with reverse charge, OSS reporting or e-invoicing evidenced — ask the vendor: the public pages we read do not show it
- Your shop depends on invoice or direct debit payments at launch — we found no public information on payment methods, only a named Checkout API
- Your back office runs on carrier label printing and maintained ERP or accounting interfaces — we found no public information on these

## Scores by judge and criterion

Scores out of 5, each judge scoring independently against the published rubric (v1). "n/r" = not rated: the vendor publishes no price.

| Criterion | The Merchant | The B2B Seller | The Developer | The Operations Lead | The Data Protection Officer | The Skeptic |
| --- | --- | --- | --- | --- | --- | --- |
| Catalogue & checkout | 2/5 | 2/5 | 2/5 | 2/5 | 2/5 | 2/5 |
| Tax & German legal correctness | 2/5 | 2/5 | 2/5 | 2/5 | 2/5 | 1.5/5 |
| Extensibility & developer surface | 4/5 | 4/5 | 4.5/5 | 4.5/5 | 4/5 | 4/5 |
| Order operations & back office | 3/5 | 3/5 | 3/5 | 3/5 | 3.5/5 | 3/5 |
| Data ownership & exit | 3.5/5 | 3/5 | 2.5/5 | 3/5 | 2.5/5 | 3.5/5 |
| European sovereignty | 0.5/5 | 0/5 | 0.5/5 | 0.5/5 | 0/5 | 0/5 |
| Pricing transparency | n/r | n/r | n/r | n/r | n/r | n/r |
| **Weighted verdict** | **2.5/5** | **2.5/5** | **3/5** | **2.5/5** | **1.5/5** | **2.5/5** |

### The judges

- **The Merchant** (v1.0): Sells to consumers and lives on conversion. Wants a checkout that can be changed without a rebuild, the payment methods German shoppers expect including invoice, and promotions with rules. Judges price against contribution, not against a competitor's tier.
- **The B2B Seller** (v1.0): Sells to businesses across the EU: net prices, VAT-ID validation, reverse charge, customer-specific price lists and payment on account. Reads a shop that shows gross prices to a trade customer as one that has not met a trade customer.
- **The Developer** (v1.0): Will maintain this for five years. Wants local development, version control for themes, a plugin architecture with a dependency model, and upgrades that do not orphan the customisations. Reads a closed template editor as a future migration.
- **The Operations Lead** (v1.0): Ships the orders and handles the returns. Wants stock that is true across channels, partial shipments, carrier integrations with labels, and an ERP link the vendor maintains. A shop that cannot do a partial refund is a shop that has never had December.
- **The Data Protection Officer** (v1.0): The shop holds customers, addresses and buying histories, and the checkout is full of third parties. Wants the subprocessor list, consent handling that survives a complaint, deletion that executes against order history, and an answer on where the CDN and analytics sit.
- **The Skeptic** (v1.0): Knows the headline price is never the invoice here. Reads for the transaction fee, the apps that turn out to be mandatory, the hosting nobody mentioned, and what the platform charges to let a merchant leave with their own order history.

## European sovereignty — proven facts

Built only from facts on the vendor's own pages; a dimension we could not prove is left open, never scored as zero. Headline: not determined.

| Dimension | Finding | Points | Source |
|---|---|---|---|
| Legal entity | Not determined | — | — |
| Ownership | Not determined | — | — |
| Data residency | Not determined | — | — |
| Subprocessors | Not determined | — | — |

## Key facts

Each fact is the vendor's own statement, cited to the source page it was read from ([S*n*] → Sources).

**Compliance**
- Certifications: yes · yes · guaranteed · yes [S1]

**Data**
- Export price currency field: yes [S11]
- Product export API: exportProducts · ExportFile [S11]
- Product export attributes: yes [S11]
- Product export delivery: email to requestor · yes [S11]
- Product export error note: ExportFile query by ID · no [S11]
- Product export field selection: yes [S11]
- Product export formats: CSV · XLSX · CSV [S11]
- Product export permission: MANAGE_PRODUCTS [S11]
- Product export row structure: product_variant_with_product_fields [S11]
- Product export scope: ALL · FILTER · IDS [S11]
- Product export warehouse stock: warehouse-slug (warehouse quantity) [S11]

**Hosting**
- Orders: 400000 [S1]
- Scale: 1B+ [S1]

**Integrations**
- Export API: Exports are triggered via GraphQL mutations returning an ExportFile Job object [S10]
- Exportfile fields: ExportFile object includes id, status, user, app, createdAt, updatedAt, url, events fields [S10]
- Exportfile query: ExportFile status can be polled via the exportFile GraphQL query by ID [S10]
- Exportfile URL: ExportFile.url gives URL to the exported file, null until it exists [S10]
- Observability: OpenTelemetry [S1]
- UI extensions: 45 [S1]
- Webhooks: 160 [S1]

**Pricing**
- Made to measure: 100% as credits after launch · 30 · yes [S1]

**Product**
- Address fallback: Shop.companyAddress · settings.DEFAULT_COUNTRY [S2]
- Allow unpaid fulfillment setting: Shop.fulfillmentAllowUnpaid [S8]
- App create mutation: appCreate [S7]
- App store listing location: Extensions explored under Explore section in Extensions tab in Dashboard [S6]
- App store sections: Installed Extensions · Explore Extensions [S6]
- Approval flow setting: shop.fulfillmentAutoApprove [S8]
- Approve fulfillment mutation: yes [S8]
- Apps open source: Majority of Saleor Apps are open source; can be forked and self-hosted [S6]
- Auto confirm orders setting: channel.orderSettings.automaticallyConfirmAllNewOrders [S8]
- Cancel fulfillment mutation: yes [S8]
- Channel listings permissions: AUTHENTICATED_APP · AUTHENTICATED_STAFF_USER [S2]
- Charge taxes flag: Per-channel flag determines whether taxes are charged [S5]
- Checkout API: Checkout API [S1]
- Cloud: managed cloud hosting [S1]
- Cloud tools: Projects · Sandboxes · Snapshots [S1]
- Commerce as code: Commerce as Code [S1]
- Configurator cli: CLI configurator syncing API and repository [S1]
- Country specific tax exceptions: Country-specific tax configuration exceptions supported [S5]
- Create fulfillment required fields: orderFulfill · orderLineID · quantity · warehouseID [S8]
- Dashboard: Fast, extensible administration dashboard [S1]
- Dashboard warehouse suggestions: yes · yes [S8]
- Display gross prices: Option to display prices including taxes [S5]
- Dynamic models: dynamic data models [S1]
- Export app or user: Exports can be requested by a User or by an App; requester reflected in ExportFile fields [S10]
- Export async: Exports run in an asynchronous worker and may return a PENDING ExportFile [S10]
- Export events: Export success emits events (export file sent, data export success) [S10]
- Export failure notification: On failure, the user is emailed information about the failing export [S10]
- Export success delivery: On success, an email with a download link for the export file is sent to the user [S10]
- Extension configuration: Each extension has its own documentation page with configuration instructions [S6]
- Extension management: Extensions can be deactivated or deleted via Manage extensions button [S6]
- Extension mechanisms: yes · yes [S6]
- External stock sync mutations: productVariantStocksUpdate · stockBulkUpdate [S8]
- Federation support: yes [S2]
- Fulfill stock override: orderFulfill · yes [S8]
- Fulfillment after confirmation: UNFULFILLED [S8]
- Fulfillment permission required: MANAGE_ORDERS [S8]
- Fulfillment statuses: FULFILLED · WAITING_FOR_APPROVAL · CANCELED · RETURNED · REFUNDED · REFUNDED_AND_RETURNED · REPLACED [S8]
- Fulfillment tracking number: yes · yes [S8]
- Fulfillment webhooks: FULFILLMENT_CREATED · ORDER_FULFILLED · FULFILLMENT_APPROVED · FULFILLMENT_TRACKING_NUMBER_UPDATED · FULFILLMENT_METADATA_UPDATED · FULFILLMENT_CANCELED [S8]
- Gift card auto fulfill setting: yes · OrderSettings.automaticallyFulfillNonShippableGiftCard [S8]
- Graphql API: GraphQL [S1]
- Install permission confirmation: yes [S6]
- Line fulfillment tracking fields: quantityFulfilled · quantityToFulfill [S8]
- Modules: PIM · OMS · Translations [S1]
- Multiple fulfillments per order: yes · yes · yes [S8]
- Open source stars: 21800 [S1]
- Order fulfillment cancel: Cancels existing fulfillment and optionally restocks items [S9]
- Order fulfillment cancel arguments: ID! · FulfillmentCancelInput [S9]
- Order fulfillment cancel permission: MANAGE_ORDERS [S9]
- Order fulfillment cancel return type: FulfillmentCancel [S9]
- Plugins current list: OpenID Connect [S6]
- Prices entered with tax: Option for prices entered with tax included (gross price entry) [S5]
- Private metadata permissions: yes [S2]
- Public metadata access: yes [S2]
- Quantity available null condition: quantityAvailable is null when no limitQuantityPerCheckout in global settings is set and stocks are not tracked [S2]
- Refund mutations: orderFulfillmentRefundProducts · orderRefund [S8]
- Refund shipping costs option: yes [S8]
- Refund webhooks: ORDER_REFUNDED · ORDER_FULLY_REFUNDED [S8]
- Replacement draft order: yes [S8]
- Return products mutation: return · replace · refund · yes [S8]
- Revenue permissions: MANAGE_PRODUCTS [S2]
- Stock impact tracking disabled: trackInventory disabled · no [S8]
- Stock impact tracking enabled: trackInventory enabled · yes · yes · yes [S8]
- Stocks permissions: MANAGE_PRODUCTS · MANAGE_ORDERS [S2]
- Tax app id: Saleor 3.19 · 4.0 [S5]
- Tax calculation strategy: flat rates · tax app [S5]
- Tax class definition: Tax class is a named object used to define tax rates per country; can be assigned to product types, products and shipping methods [S4]
- Tax class member of: Order · OrderLine · Product · ProductType · ShippingMethodType · TaxClassCountableEdge · TaxClassCountryRate · TaxClassCreate · TaxClassDelete · TaxClassUpdate [S4]
- Tax class metadata: Node · ObjectWithMetadata [S4]
- Tax class private metadata permissions: yes [S4]
- Tax class returned by: taxClass [S4]
- Tax configuration object: TaxConfiguration is a channel-specific tax configuration object [S5]
- Tax configuration per channel: Tax configuration is scoped per channel [S5]
- Tech agnostic: service-oriented, tech agnostic [S1]
- Track inventory field: trackInventory boolean controls inventory tracking; defaults to Shop.trackInventoryByDefault when not provided [S2]
- Translation field: translation field returns translated product variant fields for a given language code [S2]
- Variant attributes limit default: 100 [S2]
- Variant definition: ProductVariant represents a version of a product such as different size or color [S2]
- Variant interfaces: Node · ObjectWithMetadata · ObjectWithAttributes [S2]
- Variant pricing info deprecated fields: discountLocalCurrency · priceLocalCurrency [S3]
- Variant pricing info description: VariantPricingInfo object represents availability of a variant in the storefront [S3]
- Variant pricing info discount field: TaxedMoney · discount · The discount amount if in sale (null otherwise) [S3]
- Variant pricing info discount prior field: TaxedMoney · discountPrior · 3.21 [S3]
- Variant pricing info member of: ProductVariant [S3]
- Variant pricing info onsale field: Boolean · onSale · Whether it is in sale or not [S3]
- Variant pricing info price field: TaxedMoney · price · The price, with any discount subtracted [S3]
- Variant pricing info price prior field: TaxedMoney · pricePrior · 3.21 [S3]
- Variant pricing info price undiscounted field: TaxedMoney · priceUndiscounted · The price without any discount [S3]
- Version: 3.23.41 [S1]
- Webhook create mutation: webhookCreate · yes [S7]
- Webhook delegation: synchronous webhooks for extending flows [S1]
- Webhook delete mutation: webhookDelete [S7]
- Webhook identifier: Saleor 3.23.23 · 256 · yes [S7]
- Webhook identifier mutations: webhookUpdate · webhookDelete · Saleor 3.23.27 [S7]
- Webhook manage own no permissions: yes [S7]
- Webhook secret key deprecated: yes [S7]
- Webhook subscription payloads: yes [S7]
- Webhook sync events: yes [S7]
- Webhook update mutation: webhookUpdate [S7]
- Webhooks apps: local_and_external_apps [S7]
- Weighted tax shipping: useWeightedTaxForShipping · Saleor 3.21 [S5]

**Support**
- Core team: direct access to core team [S1]
- Onboarding: tailored onboarding by engineers [S1]

## Questions

### Is Saleor European?

Not determined: the vendor’s pages as captured do not say where Saleor is based.

### Where does Saleor store data?

Not stated on the vendor’s pages as of 13 Oct 2026.

### Does Saleor have a free plan?

Not stated on the vendor’s pages as of 13 Oct 2026.

### What are the best alternatives to Saleor?

As of 21 Oct 2026, the panel rates [JTL-Shop (3/5)](https://whats-best.ai/software/e-commerce/jtl-shop), [Medusa (3/5)](https://whats-best.ai/software/e-commerce/medusa) and [Shopify (3/5)](https://whats-best.ai/software/e-commerce/shopify) highest among the other 25 E-Commerce Platforms & Shop Systems products evaluated. Ratings that look equal are rounded to half stars; the order uses the unrounded rating, then the name. The highest-rated European alternative is [JTL-Shop](https://whats-best.ai/software/e-commerce/jtl-shop) (EU-Made). Ratings are the AI panel’s opinion, formed from public evidence: [how scores are made](https://whats-best.ai/methodology#ordering). The full list, with European products first: [Saleor alternatives](https://whats-best.ai/software/e-commerce/saleor/alternatives).

## What this page leaves out

- 8 product facts could not be confirmed on the vendor’s page as captured and were left out of this page and of the panel’s material.
- 1 legal fact could not be confirmed on the vendor’s page as captured and was left out of this page and of the panel’s material.
- 6 of the readings below were written against an earlier fact sheet — a fact has been corrected, added or pulled since. Until the panel next runs on this product you are reading the older judgement.

## Sources

- [S1] Vendor page: https://saleor.io (checked 2026-10-13)
- [S2] Catalogue & checkout — found from sitemap: https://docs.saleor.io/api-reference/products/objects/product-variant (checked 2026-10-13)
- [S3] Catalogue & checkout — found from sitemap: https://docs.saleor.io/api-reference/products/objects/variant-pricing-info (checked 2026-10-13)
- [S4] Tax & German legal correctness — found from sitemap: https://docs.saleor.io/api-reference/taxes/objects/tax-class (checked 2026-10-13)
- [S5] Tax & German legal correctness — found from sitemap: https://docs.saleor.io/api-reference/taxes/objects/tax-configuration (checked 2026-10-13)
- [S6] Extensibility & developer surface — found from sitemap: https://docs.saleor.io/developer/app-store/overview (checked 2026-10-13)
- [S7] Extensibility & developer surface — found from sitemap: https://docs.saleor.io/developer/extending/webhooks/creating (checked 2026-10-13)
- [S8] Order operations & back office — found from sitemap: https://docs.saleor.io/developer/order/order-fulfillment (checked 2026-10-13)
- [S9] Order operations & back office — found from sitemap: https://docs.saleor.io/api-reference/orders/mutations/order-fulfillment-cancel (checked 2026-10-13)
- [S10] Data ownership & exit — found from sitemap: https://docs.saleor.io/developer/export/export-overview (checked 2026-10-13)
- [S11] Data ownership & exit — found from sitemap: https://docs.saleor.io/developer/export/export-products (checked 2026-10-13)

---

Cite as: whats-best.ai, "Saleor — E-Commerce Platforms & Shop Systems", AI panel analysis, as of 2026-10-21. https://whats-best.ai/software/e-commerce/saleor

Corrections: https://whats-best.ai/correct/703?target=page
