EST. 2025

- Integrations··14 min read

Subiekt nexo has no REST API. 7 integration traps that surface after you sign

Subiekt nexo has no REST API, it has Sfera. Seven things that surface too late in a contract for an Allegro, Amazon or WooCommerce integration, and how we defuse them.

Andrzej Smrokowski

CTO · Full-Stack Engineer

- In this post
  1. 01What Sfera is and why it changes the whole architecture
  2. 02Seven traps that surface after the contract is signed
  3. 03The operations log: what an integration looks like from the inside
  4. 04Sfera nexo, Sfera GT or a subscription integrator
  5. 05When an off-the-shelf integrator is enough
  6. 06Checklist: 9 questions for your integrator before signing
  7. 07What we did with this knowledge
  8. 08Questions and answers

A meeting at the client's office, a room with a projector, and on the table a stack of Allegro orders printed out to be retyped. The owner says: "Every system has an API these days. You'll hook it up in a week." The IT guy nods. I ask which version of Subiekt nexo they have and whether it includes Sfera. The other side of the table goes quiet.

That silence is nobody's fault. Subiekt nexo (a Polish ERP by InsERT) is a solid sales and warehouse system, it just isn't a web service. There is no address you can send an HTTP request to and get an invoice back. What it has instead is Sfera, and that is where every honest conversation about integration starts. Below are seven things that surface too late in Subiekt nexo integration contracts, and how we defuse them in our projects.

What Sfera is and why it changes the whole architecture

Sfera is InsERT's programming interface for the nexo line. In practice it is a set of .NET libraries you load into your own program and use to work on Subiekt's objects: documents, products, customers, price lists. Your code opens a session, much like a user logging into the program, and performs operations on Subiekt's side, with its validation and its numbering. Sfera is available in nexo PRO. If you have the standard nexo, that is the first thing to check in InsERT's documentation or with the partner who sold you the license.

This changes the architecture more than you might expect. A typical Allegro or WooCommerce integration lives on a cloud server: a webhook comes in, the code does some work, passes it on. With Sfera that is not possible. The libraries have to run on a Windows machine with Subiekt nexo PRO installed and access to its database. So the integration needs a "foot" planted next to Subiekt: a Windows service that listens, queues and writes. The cloud can handle the rest, but the last metre is always local.

In our projects it usually looks like this: the part that receives events from the marketplace and the online store runs as a service that can be hosted anywhere, while the part that talks to Sfera sits on the client's server, next to Subiekt. Between them there is a queue and an operations log. More on that in a moment, because it is what defuses two of the seven traps.

A Subiekt nexo integration is not a webhook. It is a program that lives next to Subiekt and works on its terms: with its numbering, its validation and its license.
From our implementation notes

Seven traps that surface after the contract is signed

The order is deliberate. The first three concern the environment and licenses, the next three data and events, and the last one what stays in the company once the project is over. I describe each the same way: what happens, how it hurts and how we solve it.

Trap 1: there is no REST API, there is Sfera, the PRO edition and Windows

What happens. The integrator prices the project like an ordinary connection between two APIs. After the contract is signed it turns out you need to buy the PRO edition, designate a Windows machine next to Subiekt and decide who maintains it. The deadline slips, the budget grows, and nobody feels responsible.

How we solve it. We ask about the Subiekt version and Sfera in the first conversation, before quoting. In the audit we describe where the Sfera service will run, who has access to it and how it is monitored. Only then do we give a price and a deadline. If the company has the standard nexo and has no plans for PRO, we say so plainly and work out together whether the upgrade is worth it at all.

Trap 2: a Sfera session is a workstation

What happens. The integration logs into Subiekt like a user. In our projects we treat it as an additional workstation and plan the license purchase accordingly. If nobody counts it, on Monday morning someone in the office cannot log in because the integration "took a seat" overnight and never released the session.

How we solve it. The service holds a single session, opens it only while working and closes it after each batch of orders. You settle the number of workstations before the rollout, not after. Exactly how your license counts Sfera sessions is something to confirm with InsERT or your partner, because the terms can differ between packages and versions.

Trap 3: a Subiekt update versus the Sfera library version

What happens. The Sfera libraries are tied to the program version. The accountant clicks "update" on a Friday afternoon, Subiekt comes back up in the new version, and the integration service stops connecting because it was built against the previous one. The weekend's orders sit in the queue, and on Monday nobody knows why.

How we solve it. A Subiekt update goes in the calendar, not down to chance. We check library compatibility on a copy of the database, rebuild the service and only then update production. The support agreement states who does this and within what time. Without support you get step-by-step instructions and a repository from which your IT person can build the new version.

Trap 4: receipt or invoice, ZK or FS, OSS and currencies

What happens. "Push the order into Subiekt" is a sentence that means nothing in a contract. An order from a consumer on Allegro is a different document from an order from a company with a VAT ID. One ends in a receipt, the other in an invoice, and sometimes in an invoice issued against a receipt. A sale to a consumer in another EU country may go through the OSS procedure at the VAT rate of the destination country. Amazon pays in euros, Subiekt posts in zloty. Each of these cases is a separate path, and an integrator who hasn't written them down will discover them together with the accountant at month end.

How we solve it. Before writing a line of code we draw up a document map. Which orders come in as ZK (sales orders) and when they turn into FS (sales invoices), when a receipt is created, what an invoice against a receipt looks like, which day's exchange rate we use and where the VAT rate for EU sales comes from. That map is part of the audit document and it is signed off by the accounting team, not by us.

Trap 5: stock levels, reservations and queries during business hours

What happens. The store shows the stock level from Subiekt but ignores reservations from open ZK orders, so it sells goods someone has already bought. Or the company has several warehouses and the integration adds them all up, including the one for returns. Or a stock refresh every minute queries the whole database, and at ten in the morning Subiekt starts slowing down on every workstation.

How we solve it. We calculate available stock, meaning stock level minus reservations, and agree with the client which warehouses count towards sales in a given channel. Stock changes are sent incrementally, only for products that have actually changed, and heavier operations are scheduled outside office hours. Before anything goes to production, we measure the load on a copy of the database.

Trap 6: the same order twice

What happens. The marketplace sends a new-order event, the integration saves a ZK, and a moment later the same event arrives again. Because the network blinked, because the status changed, because someone clicked "sync". The result: two documents for one order, two reservations, two invoices and one very angry accountant.

How we solve it. Every event gets an idempotency key built from the order ID and the channel. Before anything reaches Sfera, we check the operations log to see whether that key has already gone through. Events wait in a queue, so when Subiekt is unavailable nothing is lost, it just waits. The log is human-readable, so that on Monday morning someone can answer the question "what happened to order number such-and-such".

Trap 7: whose code is it when the subscription ends

What happens. The integration works, the subscription invoice arrives every month, everyone is happy. Two years later the company wants to switch vendors or add a single rule, and it turns out the code is on the contractor's server, the configuration is in their panel, and there is no documentation. The only way forward is to write it again from scratch.

How we solve it. The code and configuration belong to the company that paid for them. The repository is at the client's or in a place they have full access to. The documentation describes the architecture, the document map and the update procedure. Support is an option, not a condition for the system to work. The exact scope of the rights transfer is written into the contract, as we describe in our FAQ.

The operations log: what an integration looks like from the inside

The best test of an integration is its log. If after an overnight run you can say within a minute how many orders came in, how many were skipped and why, the system is under control. Here is a sample excerpt from the log of our service. The numbers are an illustration, not statistics.

integrator.log, sample run
[21:04:11] run #1842 started (allegro:account-1, allegro:account-2, woocommerce)
[21:04:12] fetched 37 orders (allegro:account-2)
[21:04:12] fetched 12 orders (allegro:account-1)
[21:04:13] fetched 5 orders (woocommerce)
[21:04:13] skipped 2 duplicates (idempotency-key)
[21:04:14] Sfera session opened (nexo PRO, workstation: integrator)
[21:04:15] customer K-000731 exists, creation skipped
[21:04:16] ZK/2026/09/0928 created (allegro:account-2, 4 lines, reservation)
[21:04:17] customer created: K-004412 (VAT ID verified)
[21:04:19] FS/2026/09/0412 created (allegro:account-2, EUR -> PLN, daily rate)
[21:04:20] PA/2026/09/2201 created (woocommerce)
[21:04:26] stock: 118 products changed, pushed to 3 channels
[21:04:28] error: no VAT rate for destination country
[21:04:28] order A2-55910 moved to the queue
[21:04:29] Sfera session closed
[21:04:29] run #1842 finished: 52 orders, 2 duplicates, 1 to clarify

Three things to notice. The Sfera session lives for a few seconds, not the whole night. Duplicates are counted, not swept under the rug. An order the integration cannot post does not vanish and does not create a wrong document; it goes to the queue with a description the accountant will understand.

Sfera nexo, Sfera GT or a subscription integrator

The owner usually asks: "wouldn't it be simpler to get an off-the-shelf integrator?" Sometimes it would. Below is a comparison of the three ways orders can get into Subiekt. Confirm the licensing details of Sfera, for both nexo and GT, in InsERT's documentation, because it is their product and their terms.

- Three ways into Subiekt
CriterionSfera nexo (your own code)Sfera GT (your own code)Subscription integrator
Where it runsA Windows service next to Subiekt nexo PRO; the rest can live in the cloudA program next to Subiekt GT with Sfera GT; in our projects it requires Subiekt running on that machineThe vendor's cloud; it usually connects to Subiekt through the vendor's agent installed next to the program
Who maintains itYou, or a company of your choice; support is an optionAs aboveThe vendor, as part of the subscription
What happens on a Subiekt updateLibrary compatibility test and a service rebuild, scheduled in the calendarAs above; the interface is older than in nexo, so pick a contractor with experience specifically in GTYou wait for the vendor to release a compatible version; usually quick, but out of your hands
Who owns the codeYou, once the implementation is paid forYou, once the implementation is paid forThe vendor; after you cancel, you keep whatever data you manage to export
Who it is forCustom rules: several accounts, B2B alongside B2C, OSS, multiple warehousesCompanies staying on GT that have their own rulesA standard store, one channel, typical documents

Scroll the table sideways

When an off-the-shelf integrator is enough

Not every company needs its own code. If you sell on a single Allegro account, every order ends in a receipt or a simple invoice, you have one warehouse and no plans to sell abroad, a subscription integrator will do the job. You pay monthly, the vendor keeps it compatible with Subiekt, and you don't maintain any server.

A custom integration starts to pay off when the rules no longer fit in a configurator: several accounts and marketplaces, B2B alongside B2C, OSS, several warehouses, your own pricing or reservation logic. Then every month on an off-the-shelf tool means workarounds, manual fixes and explaining to the accountant why a document looks different from how it should. We worked out what such workarounds cost in hours in a separate post.

Checklist: 9 questions for your integrator before signing

Email this before the meeting. A good company will answer each question in a few sentences. A weak one will start with "it depends" and stop there.

  1. 01Which version of Subiekt nexo does your quote assume, and is Sfera available in it? Who checked?
  2. 02Where physically will the part of the integration that talks to Sfera run, and who maintains that machine?
  3. 03How many workstations or sessions does the integration use, and have you included that in the license count?
  4. 04What happens after a Subiekt update: who checks library compatibility, within what time and at what cost?
  5. 05What does the document map look like: which orders go in as ZK, which as FS, when a receipt, when an invoice against a receipt, how do you handle OSS and currencies?
  6. 06How do you calculate available stock: do you subtract reservations, and which warehouses count towards sales in a given channel?
  7. 07What happens when the same order arrives twice? Show us the operations log from your tests.
  8. 08Where are the code repository and the configuration, who has access to them, and what do I get if we end the cooperation?
  9. 09Before going live, do you run the integration on a copy of my database, and who reviews the result together with the accountant?

What we did with this knowledge

We know most of these traps from our own projects, not from theory. For a seller on five Amazon EU marketplaces we built a C# .NET desktop application that, through Amazon SP-API and Sfera, creates an invoice in Subiekt nexo PRO for every order, split by country and with transaction classification. The application runs on the same machine as Subiekt, remembers the ID of every Amazon order so it never creates a document twice, and passed the Amazon security review. From kick-off to production took 3 weeks. For a home-appliance wholesaler with four price lists and 1,293 products we connected a tablet app, a B2B portal and Subiekt nexo into a single data flow, in stages of 2-3 weeks each. The .NET 8 integration hub sits next to Subiekt and talks to it through Sfera, and an order resent after a loss of signal is recognized as a duplicate, so only one document ends up in Subiekt.

Amazon EU marketplaces in one Subiekt nexo PRO
5
of VAT invoices with no manual work
100%
a month given back to the B2B wholesaler
180h

In both cases the code is owned by the client and there is no subscription to a middleman. Subiekt updates are scheduled, not accidental.

Questions and answers

Does Subiekt nexo have an API?+

Not in the sense of a REST API accessible over HTTP. Subiekt nexo PRO provides Sfera: a programming interface in the form of .NET libraries that run on the machine where the program is installed. An integration with Allegro, Amazon or WooCommerce is built as a custom program that uses Sfera.

What is the difference between Sfera nexo and Sfera GT?+

Both let an external program work on Subiekt's documents, products and customers. Sfera nexo is a set of .NET libraries for the nexo PRO line. Sfera GT is the older interface for Subiekt GT, which in our projects requires the program to be running on the same machine. Check the object scope and terms in InsERT's documentation.

Can a Subiekt nexo integration run in the cloud?+

Partly. Order intake, the queue, the dashboard and the business logic can live in the cloud. The part that talks to Sfera has to run on Windows with Subiekt nexo PRO installed and access to its database. If Subiekt runs on a cloud server, that service can run there too.

How much does Sfera cost?+

Sfera is an InsERT license, not ours. For nexo it is tied to the PRO edition; for GT it is sometimes a separate add-on. Check the current price and terms with InsERT or the partner who handles your license. Our integration quote covers the cost of our work; you count the Subiekt licenses separately.

What happens after a Subiekt update?+

The Sfera libraries have to match the program version, so an unplanned update can stop the integration. The solution: an update on an agreed date, a compatibility test on a copy of the database, a service rebuild and only then production. The support agreement states who does this and within what time.

Is a custom integration always better than a subscription one?+

No. With a single account, simple documents and one warehouse, an off-the-shelf subscription integrator is usually enough. Your own code pays off when the rules no longer fit in a configurator: several channels, B2B and B2C, OSS, multiple warehouses, your own pricing or reservation logic.

- Case studies from this post

- Read next

All posts

- Let's start

Let's run the numbers
for your business.

A 30-minute call, zero cost. Tell us where you lose hours and we'll come back with an estimate of how many you can get back.

PRODAUT Sp. z o.o. · Sułków 36, 48-120 Baborów · District Court in Opole, 8th Commercial Division of the National Court Register · KRS 0001242863 · NIP 7481597304 · REGON 544821885 · Share capital PLN 5,000

© 2026 PRODAUT · All rights reserved
Privacy policy·Cookies·GDPR
Made with in Katowice