BlogAnton Ignashev

B2B Portal ERP Integration — Subiekt GT, Optima, enova365

B2B Portal ERP Integration — Subiekt GT, Optima, enova365

Why ERP Integration Is Not Optional

A B2B portal without ERP integration is a half-measure. Orders land in the portal, someone manually re-enters them into the ERP, stock levels are always a day behind, and pricing errors creep in every time a handlowiec updates a spreadsheet. You have digitised the surface but left the underlying work unchanged.

The integration is what makes the portal actually work. Products, prices, and stock flow automatically from the ERP to the portal. Orders flow back. Nobody touches a keyboard twice for the same data.

This guide focuses on the three ERP systems that cover roughly 70% of Polish wholesale businesses: Subiekt GT, Comarch Optima, and enova365. Each has its own integration reality — and the differences matter more than most vendors will tell you upfront.

The Two Integration Architectures That Actually Get Used

API Integration

The ERP exposes a structured interface — REST or SOAP — that the portal calls to read and write data. The portal fetches updated products and prices on a schedule, shows near-live stock from the API, and pushes each new order back as a sales document.

This is the cleanest approach. Data flows in near real-time, the integration is straightforward to monitor, and failures are easy to diagnose. The problem: not all Polish ERPs have mature APIs, and those that do often require extra licences.

Realistic sync frequencies with API integration:

  • Stock levels: every 5 minutes
  • Prices: every 15 minutes
  • Product catalog: every 60 minutes or on-change webhook
  • Orders: real-time on placement

File-Based Synchronization

The ERP exports structured files (CSV, XML, or JSON) to a shared location — an FTP server, a network share, or a cloud storage bucket. The portal picks up these files on a schedule, processes the changes, and drops order files back for the ERP to import.

This works with virtually any ERP, including ones where API access is locked down or requires expensive licensing. The trade-off is latency: sync intervals of 15–60 minutes, more failure points to monitor, and a higher maintenance burden when something breaks.

When file sync is the right choice: older Subiekt GT installations where Sfera licensing is not in the budget, Optima configurations where the API module is not available, or any situation where the ERP server is behind a firewall that cannot expose external endpoints.

Subiekt GT (InsERT): The Reality of Poland's Most Popular ERP

Subiekt GT runs in more Polish SMB warehouses than any other ERP. It also has no native REST API. That gap is significant, but it is not a blocker — there are three workable approaches.

Option 1: Sfera SDK

Sfera is InsERT's official integration SDK. It allows external programs to read and write data in Subiekt GT programmatically — the same way the Subiekt desktop application does, but from external code.

What Sfera can do:

  • Read full product catalog with prices, units, and categories
  • Read stock levels per warehouse location
  • Write new orders as sales documents (ZS) with correct ERP numbering and client assignment
  • Read client data and credit limits

The infrastructure requirement: Sfera runs as a Windows service on the same machine as the Subiekt GT installation. Your portal (which likely runs in the cloud) connects to this service over a network. This means you need:

  • An open port from the Subiekt server to your portal's IP
  • A static IP or VPN tunnel
  • A Sfera license (additional cost, check with your InsERT reseller — typically 500–1,500 PLN depending on your Subiekt package)

Timeline: 5–7 days of development once the Sfera server is accessible.

The pitfall everyone hits: IT departments routinely block outbound connections from the Subiekt server. "We will configure the firewall" is a sentence that can add 1–2 weeks to your project. Get this sorted before development starts, not during.

Option 2: Direct Firebird Database Access

Subiekt GT uses a Firebird database. Reading from it directly is straightforward — Firebird has well-maintained connectors for all major languages. This is useful for:

  • Full product catalog reads
  • Real-time stock level queries
  • Price list data

Why you should not write orders through the database: Subiekt GT has business logic embedded in its application layer — document numbering sequences, stock reservation triggers, VAT calculations. Writing directly to the Firebird tables bypasses all of this. The data gets into the database but Subiekt does not "know" an order was placed. Documents come out malformed or missing entirely.

Typical approach in practice: direct database reads for products, prices, and stock; Sfera for order submission.

Option 3: File Export

Subiekt GT can export product lists, price lists, and stock reports to CSV. If Sfera is not an option, this covers the ERP-to-portal data flow. Orders from the portal can be imported via Subiekt's XML import functionality.

Timeline: 7–10 days. Sync interval: 30–60 minutes minimum.

Comarch Optima: Capable API, Inconsistent Implementation

Comarch Optima is the second most common Polish ERP in the SMB space. It has API capabilities, but their quality and coverage depend heavily on which Optima version you are running and which modules are licensed.

Optima API

Optima offers a REST API through Comarch's integration platform. When it works, it covers:

  • Products and product categories
  • Contractors (your B2B clients)
  • Sales documents (creating orders, reading invoices)
  • Stock levels

The version problem: Optima API quality improved significantly between version 2023 and 2025. If you are running an older installation, the API may be missing endpoints you need or behave inconsistently. Before designing the integration, get the exact Optima version from your IT department and test the specific endpoints you will use.

Timeline with API: 5–8 days.

Optima File Exchange

Optima's file exchange (XML import/export) is the most reliable fallback. It has been in the product for years and covers all the data you need. The downside: it is asynchronous, requires a scheduled task to run on the Optima server, and the XML schema is not trivial to work with.

One Optima-specific issue to watch: Optima's XML order import validates contractor codes strictly. If your portal uses client identifiers that do not match Optima's contractor codes exactly, imports fail silently — the file gets processed but no document is created. Always validate the contractor code mapping before going live.

Optima via MS SQL Direct Access

Optima runs on Microsoft SQL Server. Read access to the database is straightforward for product, price, and stock data. Write access through the database (for orders) carries the same risks as with Subiekt GT — bypass the application layer and you bypass the business logic.

Timeline: 5–7 days (read-only) + additional time for order import via XML.

enova365: The Best Integration Experience in the Polish ERP Market

enova365 has the most mature REST API among Polish ERP systems. It is well-documented, covers all the data a B2B portal needs, and — critically — actually works consistently across versions.

What the enova365 API covers:

  • Products with full attributes: SKU, name, description, units, weight, categories
  • Individual prices per contractor or price group
  • Stock levels per warehouse location
  • Sales orders: create, read, update status
  • Invoices: read and download PDF
  • Contractors: read client data, credit limits, payment terms

Authentication: OAuth 2.0 with token refresh. Straightforward to implement and secure.

Timeline: 3–5 days for a full bidirectional integration. This is the fastest ERP integration I do.

The one thing to check first: enova365 REST API access requires the API module to be active in your license. This is not included in base enova365 packages. Call your enova365 reseller before the project starts and confirm the API module is licensed. If it is not, add it — the cost is typically worth it versus the alternative of building file-based sync.

Webhook support: enova365 supports outbound webhooks for some events (new order status, stock changes). This allows the portal to receive updates without polling, which reduces the sync overhead. Not all enova365 installations have webhooks configured, but it is worth asking.

SAP Business One: Powerful but Complex

SAP B1 appears in Polish wholesale when the business has grown past the SMB tier. The integration story is good: SAP B1 offers the Service Layer (REST) and DI API (COM-based). Most B2B portal integrations use the Service Layer.

Timeline: 5–7 days for development, but add 3–5 days for data mapping. SAP's object model is comprehensive and the field names are not intuitive. Mapping SAP's ItemCode to your portal's SKU, or SAP's CardCode to client identifiers, takes time to get right across all edge cases.

The Data That Must Synchronize — And How Often

Before starting an ERP integration project, map out every data type that needs to move. This table covers the standard requirements for a Polish B2B wholesale portal:

Data Type Direction Minimum Frequency Priority
Product catalog (name, SKU, description, unit) ERP → Portal Daily or on change High
Individual prices per client ERP → Portal Every 15 minutes Critical
Price group assignments ERP → Portal Daily High
Stock levels ERP → Portal Every 5–15 minutes Critical
Product images Manual upload or ERP → Portal On change Medium
Orders Portal → ERP Real-time Critical
Order confirmation/status ERP → Portal Every 15–30 minutes High
Invoice PDFs ERP → Portal On generation Medium
Client data (credit limits, payment terms) ERP → Portal Daily High
Contractor (client) list ERP → Portal Daily High

The Pricing Complexity Problem

Polish wholesalers rarely have simple pricing. A typical setup:

  • Base price list (cennik bazowy)
  • Discount by client group (e.g., -12% for group A, -8% for group B)
  • Individual product discounts per client (e.g., -5% on product X for client Kowalski)
  • Quantity thresholds (e.g., above 50 units, additional -3%)
  • Periodic promotions

The portal must calculate prices identically to the ERP. If there is any divergence — different rounding, different discount application order, different promotion logic — clients will see one price in the portal and receive a different price on the invoice. This erodes trust fast.

The only safe approach: the ERP calculates the final price and transmits it to the portal. Do not reconstruct the pricing logic in the portal independently. One source of truth, always.

Implementation Timeline: Realistic Expectations

Based on integrations I have delivered, here are honest timelines for a full bidirectional integration (products, prices, stock, orders, order status):

ERP Approach Development Days Total Calendar Time (incl. setup & testing)
enova365 REST API 3–5 days 2–3 weeks
Subiekt GT Sfera + DB read 5–7 days 3–4 weeks
Comarch Optima API 5–8 days 3–4 weeks
Comarch Optima File exchange 7–10 days 4–5 weeks
SAP Business One Service Layer 6–9 days 3–5 weeks

The gap between development days and calendar time is almost always the same thing: waiting for IT to configure server access. Open a port, create a VPN tunnel, whitelist an IP. These are 30-minute tasks that take 2 weeks because they go through a ticket queue.

Recommendation: Before the project starts, send IT a list of exactly what you need. Do not wait for the development team to ask for it mid-project.

Common Pitfalls and How to Avoid Them

Stock overselling: Two clients simultaneously order the last 20 units. Both get confirmations. Solution: sync stock every 5–10 minutes and implement a soft reserve at order placement (reserve in the portal's own database immediately, sync the reservation to ERP within 60 seconds).

Price mismatches at invoice: Portal shows 42 PLN, invoice arrives at 45 PLN. Almost always caused by a discount calculation difference or a sync delay during a price update. Solution: re-validate the price against the ERP at order confirmation, not just at catalog display.

Character encoding in file sync: Polish characters (ą, ę, ś, ź, ó, ł) get corrupted. Happens in roughly 30% of file-based integrations on the first go-live. Solution: enforce UTF-8 end to end. Test with product names containing all Polish characters before launch.

Silent import failures: The ERP's order import runs, reports success, but no document is created. Usually a validation error caught by the ERP's application layer that does not surface as an error to the portal. Solution: always check document count after import, not just import status codes.

ERP server restarts: Scheduled reboots on Subiekt/Optima servers that nobody told you about, taking down the Sfera service or the FTP export scheduler at 3 AM. Solution: monitoring with alerts for sync gaps — if no sync has completed within twice the expected interval, notify someone.

Before You Start: The 6-Point Integration Checklist

Gather this information before development begins. It eliminates the most common mid-project delays:

  1. Exact ERP version — not "we have Subiekt" but "Subiekt GT 1.09 SR2 (build 43521)". Version determines what integration methods are available.
  2. API/module licenses — confirm Sfera license for Subiekt, API module for enova365, relevant Optima modules.
  3. Server access — IP address, port, credentials, and confirmation that your portal's IP will be whitelisted. Get this in writing from IT.
  4. Price list export — a real export of your current price lists so you can validate the portal's price calculations against the ERP before going live.
  5. Client list export — all active client records with their identifiers, so the portal can map clients correctly from day one.
  6. Order workflow documentation — how does an order move from "placed" to "invoiced" in your ERP? Every status transition needs to be mapped to a portal state.

Missing any of these will cost you days. The single most common delay in ERP integrations is waiting for IT to provide server access credentials. Get that resolved before the project kicks off.

For more on what a complete B2B portal for wholesalers includes beyond the ERP integration layer, see the service page — or get in touch if you want a direct assessment of your specific ERP setup.


Let’s talk about your project

Free 30-minute consultation. We’ll figure out if and how I can help.

Book a Free 30-Minute Call

Select a date

April 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
Back to Blog

Related Posts

Integrating enova365 with a B2B Portal — Soneta WebAPI in Practice
Blog

Integrating enova365 with a B2B Portal — Soneta WebAPI in Practice

Connecting a B2B portal to enova365 via Soneta WebAPI — JWT auth, dynamic controllers, Harmonogram Zadan, price groups. The architecture that actually works, without the filler.

Read more
B2B Portal for Alcohol Distributors — Licence Verification & Excise
Blog

B2B Portal for Alcohol Distributors — Licence Verification & Excise

Why a B2B portal for alcohol wholesale is not the same as a standard ordering portal — and what it must include to stay compliant: licence verification, excise data, and regulatory logging.

Read more
Online Ordering System for Wholesalers — Implementation to ROI
Blog

Online Ordering System for Wholesalers — Implementation to ROI

What a modern B2B online ordering system actually includes, how long it takes to implement, and what the ROI looks like — with real numbers from wholesale deployments in Poland.

Read more