EspoCRM for distributors and wholesalers

A planning guide for trading businesses that want EspoCRM with the Sales Pack for price lists, quotes to sales orders, warehouse inventory and purchasing, on infrastructure they control.

On this page

Running EspoCRM for distributors and wholesalers without a separate ERP first

If your sales, pricing and stock currently live in spreadsheets or an aging system, EspoCRM with the Sales Pack can cover the commercial side of a trading business: price lists, quotes that convert to sales orders, and purchasing. The Sales Pack also adds inventory tracking by warehouse, transfers between warehouses and purchasing, but its stock module is a separate decision. The Sales Pack inventory management documentation describes it as disabled by default. Turning it on is a scope choice, not a configuration afterthought, because it changes how sales orders reserve and consume stock.

Decide early how much stock and accounting you need inside the same system. If you need to track product quantities and locations with a transactional record, move stock between warehouses, and block sales when availability is short, the inventory module is the feature to plan around. If your finance team needs general ledger posting, landed cost, lot or serial tracking, or production planning, confirm those needs with the vendor before you commit, since the supplied documentation does not establish that the Sales Pack covers them. In that case a separate ERP may still be the right system of record, with EspoCRM handling the customer-facing workflow.

EspoCRM is licensed under AGPL-3.0 and the open-source edition can be self-hosted at no license cost, so the platform itself is not a recurring subscription. Treat that as context, not a savings estimate: implementation, data cleanup, hosting, backups and extension licensing decisions still carry real effort. Ask your team to list the stock and pricing rules they use today, then test them against a staging instance before deciding whether one system or two is the right first step.

Which distributor requirements shape the EspoCRM build

This table maps the core trading requirements of a distributor or wholesaler to the EspoCRM entities, roles and settings they affect. Only inventory behavior is backed by a documented Sales Pack fact, so other rows name what to confirm in the Sales Pack documentation before design starts. Use it to decide which requirements need a proof of concept in a test instance.

RequirementEvidence or item to confirmWhat it means for the build
Price tiers by customerConfirm in the Sales Pack documentation how price lists attach to accounts and productsDecide whether tiers live on the account, a price list entity or the line item, and who may view cost versus sell price
Quote approval before sales orderConfirm whether quote status changes can be gated by workflow or BPM in your Advanced Pack versionDefine the approver role, the discount threshold that triggers review and the statuses that block conversion to a sales order
Multi-warehouse stockSales Pack Inventory Management tracks quantities and warehouse locations with a transactional model, as of Sales Pack v2.0Stock sits per product and warehouse, so warehouse records must exist before the first stock transaction is posted
Availability check before sellingSales Pack Inventory Management validates availability before selling, as of Sales Pack v2.0Test the check against reserved and in-transit quantities, and decide who may override a shortage
Transfer orders between warehousesSales Pack Inventory Management supports transfers between warehouses, as of Sales Pack v2.0Transfers need source and destination warehouses, a status path and a rule for goods in transit
Inventory module enablementInventory Management is disabled by default in Sales Pack v2.0, so confirm the setting in your instanceEnable it in a test instance first and plan the data load so historical stock is not double counted
Supplier purchasingConfirm purchase document entities and receiving steps in the Sales Pack documentationMap supplier accounts, purchase orders and goods receipts to warehouse stock so receipts update the right location
Access by sales regionConfirm team and role scoping options in your EspoCRM version under roles and teamsAssign teams by region and restrict price, cost and stock fields to roles that need them

Sales Pack modules and settings that matter for trading

Price lists decide what a customer pays, so they are the first decision to settle. Confirm how the Sales Pack models price lists, which accounts each list applies to, and whether one customer can hold more than one list. Keep the number of lists small at the start, because every additional list is a rule that each quote must resolve correctly.

  • Currency and tax basis: decide whether prices are stored net or gross and in which currency each list is held before any product is imported.
  • Default list: set a fallback list so that a new account without an assigned price never produces an unpriced quote.
  • Discount rules: where a discount is a percentage off a list, place the calculation in Formula Script in a before-save script so the same rule applies in the UI and the API.
  • Who can edit prices: restrict edit rights on price list records to a pricing role, and use Advanced Pack workflows to route any discount above a threshold you define.
  • Sample account test: create one illustrative account per list and confirm the quote shows the expected price.

Check that every active account resolves to exactly one price list before you open quoting to sales staff.

Configuration choices that carry the most risk

A distributor setup on EspoCRM touches pricing, stock, people and connected systems at once. The decisions below are hard to reverse once orders and stock movements exist, so each one should be settled in writing before data entry begins.

Enabling Inventory Management

Inventory Management in the Sales Pack is disabled by default, so it must be turned on deliberately. Once enabled, it tracks product quantities and warehouse locations through a transactional model and validates availability before a sale is confirmed. That changes how quotes and sales orders behave for every sales user, so confirm which product types, units and sales channels should be affected before go-live. Test a few representative orders against real stock levels first.

Warehouse location model

Decide how warehouses, bins or storage locations map to EspoCRM records before loading opening balances. A flat warehouse list is simpler to maintain, while finer locations give better pick accuracy but add data entry and reporting work. Confirm whether transfer orders must move stock between sites, how returns are recorded, and who owns stock counts. Changing this model after transactions exist usually means adjusting historical movements by hand.

Formula-based pricing rules

Price lists, customer-specific discounts and minimum margins are often calculated with Formula Script in before-save scripts, which EspoCRM supports in the Entity Manager. Each rule that touches a price or total needs a named owner, a test set of expected results and a clear order of precedence when several rules apply. Confirm with finance which rules must be auditable, since a formula that silently overrides a price is hard to explain to a customer later.

Role separation between sales and warehouse

Sales users should create quotes and sales orders, while warehouse users should record receipts, transfers and adjustments without seeing margins or customer credit terms. Map these duties to roles and teams before users are created, and avoid giving daily work to administrators. Confirm which fields must be hidden per role, and test each role with a non-admin account, because a permission that looks correct on a layout can still expose records through a related entity.

API user access for connected systems

Accounting, ecommerce or warehouse systems that read orders or post stock movements should use dedicated API users with narrow role permissions, not a person's login. EspoCRM documents API key, HMAC and basic authentication, and describes HMAC as the most secure option while basic authentication is not recommended. Confirm which entities each integration may read or write, how keys are rotated, and which IP addresses may call the API.

Advanced Pack for approval workflows

Discount approvals, credit holds and purchase order sign-off usually need workflows or BPM, which come from the Advanced Pack. It is included in all EspoCRM Cloud plans, but a self-hosted deployment needs its own licensing decision. Before build, list every approval threshold, the approver for each, the escalation path when someone is absent, and what happens to a pending order. Unclear approval rules tend to be bypassed by manual workarounds.

Rollout phases for a trading business

The sequence moves a trading business from a reviewed data set and agreed catalog to a live EspoCRM with pricing, quoting, and warehouse-level inventory in use. Each phase closes with a sign-off that the next phase depends on.

  1. Review scope and existing data

    DeployOpen and your operations lead confirm which sales, purchasing and warehouse processes move into EspoCRM, which ones stay in existing systems, and which Sales Pack features are in scope. The team inventories current spreadsheets, price files and stock exports, then records which fields are authoritative. The phase closes with a written scope that sets deliverables, timelines and responsibilities. Your team should provide process owners, sample documents and access to current data sources.

  2. Design price lists and product catalog

    The team models products, units of measure, price lists, customer price tiers and any quantity or currency rules the business uses. Product categories and identifiers are agreed so that imports and inventory records match one catalog. Your pricing and merchandising staff review the design against real quotes and sample orders. The phase is complete when signed-off examples produce the expected price on a test quote.

  3. Configure a non-production instance

    DeployOpen builds the entities, layouts, formula logic and Sales Pack settings in a non-production instance, keeping inventory management disabled until the pilot step. Changes are tracked so the configuration can be reproduced in production. Your administrators test quote-to-sales-order flow, purchasing documents and role permissions with sample records. The step closes when the agreed test cases pass and the configuration is documented.

  4. Pilot inventory in one warehouse

    The team enables Sales Pack Inventory Management for a single warehouse and records opening stock, transfers and sales against it. This tests whether transactions reconcile to counted quantities and whether availability checks block orders as intended. Warehouse staff and sales users review the results against physical counts. The pilot closes with a documented reconciliation and a decision on whether to extend the setup to other warehouses.

  5. Migrate data with CSV import rules

    Master data such as accounts, contacts, products and price entries is loaded using defined import rules: create-only or create-and-update modes, field mapping, and duplicate matching on agreed fields. Large files run through scheduled background processing, and the team keeps the ability to revert imported records if a load goes wrong. Each load is checked against source counts and sample records. Your data owners approve each reconciliation before the next load starts.

  6. Train users by role

    DeployOpen delivers training sessions organized around each role, such as sales, pricing, purchasing, warehouse and finance, using the team's own configured screens and sample orders. Users practice the steps they will perform daily, including quote approval and stock transfers. Your team lead confirms that each role can complete its core tasks in the test environment. The phase closes when role-based sign-off is recorded and access is granted through the agreed roles.

  7. Cut over and run hypercare

    The team freezes changes, runs the final data load and enables production access, with a rollback plan agreed before the switch. For an agreed period after go-live, DeployOpen monitors issues, supports users and resolves defects in the configuration. Your operations team tracks open items and confirms when the business accepts the system. Hypercare ends with a handover to your administrators and a documented list of open items.

Questions distributors ask before hiring an implementation partner

What drives the cost and effort of an EspoCRM implementation for a distributor?

The main drivers are how many distinct business processes you need to model, how many warehouses and price lists you run, how many systems must exchange data with EspoCRM, and how much historical data must move across. A quote should separate the one-time build (entity design, layouts, formula logic, Sales Pack setup, integrations, migration and testing) from recurring items such as hosting, backups, upgrades and support. Ask the partner to itemize each deliverable, state what you must provide (product master data, sample orders, stock counts, sign-off people), and list the assumptions behind each estimate. Because the Sales Pack and Advanced Pack are official extensions, ask whether their licensing and hosting costs appear in the quote. Ask for the quote to be tied to a written scope before work starts.

Can our own team configure EspoCRM for quotes, price lists and warehouses without a partner?

Often yes for simple setups, but the decision depends on your in-house skills and how many custom rules you need. Basic entity changes, layouts and field settings are configured through the administration interface. Formula Script, which is used in before-save scripts, workflows and BPM, requires someone who can read and test code, and inventory logic that validates stock before a sale needs careful testing against your real order patterns. Ask a partner to review your requirements and separate what your staff can own from what needs specialist work, and ask what documentation and handover they will provide so your team can maintain the configuration after go-live.

How long does a pilot take, and what sets the pace?

Pilot length depends on the number of warehouses, product categories, price list variants and approval steps you pilot, and on how quickly your team can review results. The pace is usually set by data readiness and decision-makers rather than by software configuration. Ask the partner to name the pilot exit criteria, such as a set of test quotes converting to sales orders, stock movements between two warehouses reconciling with counts, and purchasing flows being approved. Request a written timeline with dependencies listed, including when your product data, users and sign-off contacts must be available. No duration should be accepted without a written scope behind it.

Which data must be cleaned before importing into EspoCRM?

Clean the data that drives pricing, stock and customer identity before you import anything. The most important sets are product codes and units of measure, current price lists with effective dates, customer and supplier records with duplicates merged, opening stock quantities per warehouse, and open orders with their status. EspoCRM's CSV import supports Create Only, Create and Update, and Update Only modes, field mapping and duplicate matching on chosen fields, so decide which fields define a unique record before you run a test import. Large files can be processed through cron, and imported records can be reverted, which makes a trial import on a copy of the data worth the effort. Ask the partner to show their cleansing rules and reconciliation reports.

Does EspoCRM replace our ERP, or does it sit alongside it?

Whether EspoCRM replaces your ERP depends on the accounting, stock valuation, purchasing and production requirements you have today. The Sales Pack covers price lists, quotes to sales orders, inventory transactions by warehouse, transfer orders and purchasing, which may cover a trading business's front-office and stock flow needs. Full financial close, costing, and complex manufacturing usually stay in a dedicated ERP. Before deciding, map each process to the system that will own its records, identify which integrations must synchronize them, and confirm with the vendor and your accountants which general ledger and tax requirements remain outside EspoCRM. Ask any implementation partner to document this boundary in writing.

What does the ongoing run cost look like under self-hosting compared with EspoCRM Cloud?

The open-source edition can be downloaded and self-hosted for free, according to the EspoCRM pricing page, so the recurring cost is your own infrastructure, backups, patching, monitoring, administration time and any support retainer. EspoCRM Cloud is priced per user per month, according to the EspoCRM pricing page: 15 US dollars on the Basic plan (minimum 3 users), 25 dollars on Enterprise (minimum 5 users) and 69 dollars on Ultimate (minimum 10 users), with the Advanced Pack included in all cloud plans. Compare the two by modeling your user count, hosting and staff time, and any retainers for upgrades and security testing. Confirm with the vendor whether the Sales Pack is included in any cloud plan, since the pillar facts do not state this.

What security controls should a distributor expect a partner to set up?

Expect the baseline recommended in the EspoCRM security documentation: enforced password policy, two-factor authentication, separate admin accounts for administration rather than daily work, limited auth token lifetime, disabled password recovery for admins and IP-based access restrictions. Pricing and supplier records are sensitive, so role and team permissions matter as much as login controls. If you use single sign-on, EspoCRM supports OpenID Connect since version 7.3, but its own two-factor authentication is not compatible with OIDC, so plan your MFA at the identity provider. Ask the partner how API access will be authenticated, because the documentation describes HMAC as the most secure method and basic authentication as not recommended.

Compliance and access considerations for trade customer data

Trade customer data includes negotiated prices, credit terms, order history and warehouse stock positions, so access decisions matter as much as the workflows themselves. The four controls below connect role design, sign-in, integrations and network exposure, and each one produces evidence an assessor may ask to see. DeployOpen prepares these controls and the supporting evidence, but independent auditors and certification bodies issue any audit report or certification.

Role permissions for pricing data

Price lists and customer-specific pricing are often the most sensitive data in a distribution CRM, because a sales representative who sees another territory's margins can undercut the business. Define roles that separate who can view cost and margin fields, who can edit price lists, and who can approve quotes above a threshold. Test each role with a sample user before go-live and confirm that field-level visibility is set in layouts and not only in menus. Keep the role matrix as a document that reviewers can read.

Password and 2FA policy

EspoCRM's own two-factor authentication is not compatible with OIDC sign-in, so the second factor for users who sign in through an identity provider must come from that provider. Decide which policy applies to each login path before rollout, and document it. Set a password policy for local accounts, require 2FA where it is available, and keep admin accounts separate from daily sales work. Confirm the auth token lifetime and disable password recovery for admin accounts.

API user authentication method

Integrations with order systems, warehouse tools or accounting platforms usually run through dedicated API users, not personal accounts. The REST API supports API key, HMAC and basic authentication, and the documentation describes HMAC as the most secure method and basic authentication as not recommended. Pick one method per integration, give each API user only the role it needs, and record who owns each credential. Plan rotation as part of the integration runbook.

IP restriction and network exposure

Restricting access by IP address limits who can reach the CRM from the internet, which matters for trade staff working from warehouses, branches and field locations. List the fixed egress addresses of each site and of any integration servers, and test that access from outside those addresses fails. Remember that API calls from partner systems also pass through these rules, so include them in the allowlist review. Record the allowlist and its owner so that changes to it are approved and traceable.

How EspoCRM connects to accounting and warehouse systems

The first decision is whether EspoCRM stays the system of record for price lists, quotes, sales orders and stock, or whether it hands orders to an accounting or warehouse system that owns those records. If EspoCRM keeps pricing and order status, the sales team works in one place, but finance and the warehouse must read from it. If the ERP or warehouse management system owns stock and invoicing, EspoCRM becomes the sales front end and each order, price change and stock figure must be synchronized in a defined direction. Settle this before building anything, because it determines which side is allowed to overwrite a field when both systems hold it. Inventory in the Sales Pack tracks quantities and warehouse locations with transfers and availability checks, so a sync design must decide whether those figures come from EspoCRM or from the warehouse system.

If you integrate, the REST API is the documented route. EspoCRM supports API key, HMAC and basic authentication through dedicated API users whose permissions come from a role. The documentation describes HMAC as the most secure of these methods and does not recommend basic authentication. Create a separate API user for each integration, grant it only the entities and fields it needs, and plan how the secret is stored and rotated. Confirm in writing which authentication method your target system can send, because some accounting and warehouse connectors support only basic credentials. Also confirm which objects the connector reads and writes, how it handles failed requests and whether it can be run on a schedule through cron.

The integration scope cannot be fixed until the target system is named and its own API, object model and tax, currency and unit-of-measure rules are reviewed. Ask the vendor or the team that owns that system which fields it treats as authoritative, how it expects duplicate customers and products to be matched, and what happens to an order that changes after it has been posted. Then test the flow with a small set of products, customers and warehouses in a non-production instance before any live volume is moved. DeployOpen can scope and build this integration as part of an agreed plan, but the rules that govern your prices and stock must come from your finance and operations owners.

How DeployOpen scopes and delivers a distribution EspoCRM build

DeployOpen plans, implements, customizes, integrates, documents and supports self-hosted open-source platforms inside your own infrastructure. For a distribution build, we start from how your team quotes, prices, moves stock and buys, then agree the scope in writing before any configuration begins.

How we scope

  • Map your price list tiers, quote approvals and quote-to-order steps before choosing configuration.
  • Inventory the warehouses, stock transactions and transfer orders the build must cover.
  • Agree deliverables, exclusions and timelines in writing, because most engagements are fixed-scope.

How we build

  • Enable Sales Pack inventory management in a test instance and confirm its behavior with your stock rules.
  • Configure products, price lists, layouts and formula logic, then test each quote-to-sales-order path.
  • Test purchasing and transfer scenarios with sample records and documented expected results before go-live.

How we hand over

  • Document configuration, roles, price list maintenance steps and stock adjustment procedures for your administrators.
  • Prepare a data migration plan covering product, customer and opening stock records, with validation reports.
  • Deliver the runbook for backups, restores and upgrades on the infrastructure you control.

How we support

  • Offer ongoing support, upgrades and continuous testing as a retainer after go-live.
  • Plan EspoCRM version upgrades around your installed extensions and custom formulas before each change.
  • Confirm support boundaries, response expectations and change handling in the written agreement.

Talk to our team.

Tell us what you're working on, whether it's a deployment, an audit, a security test or a cyber range. You'll speak with an engineer who can help you scope it.

  • 30-minute call: free, with no obligation.
  • NDA on request: we can sign before you share details.
  • Clear next steps: a scope and plan after the call.