Blog— Anton Ignashev

Subiekt GT Sfera: a developer's guide to integrating Subiekt GT

Subiekt GT Sfera: a developer's guide to integrating Subiekt GT

Why This Guide Exists

Yesterday I wrote the developer's guide to Comarch Optima's five different things called "the API". Subiekt GT is the other half of that pair, and it has exactly the opposite problem. With Optima, the question is which interface you are looking at. With Subiekt GT there is only one, everybody finds it inside ten minutes — and then the team spends three weeks working out what it actually is.

It is called Sfera. It is not an API in the sense you use that word in 2026.

This is the Subiekt-side companion to my enova365 WebAPI guide and to the comparison of Subiekt, Optima and enova365 from an integration standpoint. Every technical claim below comes from InsERT's own documentation, its published price list, or open-source code you can read yourself. Nothing is invented — in this corner of the market, an invented object name costs somebody a day.

What Sfera Actually Is

InsERT's own description is precise, and worth reading literally: Sfera "umożliwia napisanie rozszerzeń, korzystających z wewnętrznych mechanizmów Subiekta GT", built on COM and OLE Automation.

Unpack that and three consequences land on day one, before you write a line of code:

It runs on Windows, next to an installed Subiekt. Not in your container, not in your data centre, not from the Linux box your application already lives on. There is a Windows host in this project. Somebody has to own it, patch it and pay for it — and that is the line item which never makes it into the first estimate.

It goes through Subiekt's own logic. This is the reason to prefer it over the database, and it is a real reason. Documents created through Sfera get numbered, priced, stock-adjusted and validated the way Subiekt would do it if a person clicked the buttons. Anything you write straight into the tables gets none of that.

It is an add-on you buy. Sfera is not part of Subiekt GT. It is a separate licence, and that licence has a shape which catches people out. More on that below.

Sfera exists for five programmes in the line — Subiekt GT, Rewizor GT, Gestor GT, Gratyfikant GT and InsERT GT itself. That matters more than it sounds like it should.

The Connection Has Two Identities

The whole object model fits in a paragraph. You create a COM object with the ProgID InsERT.GT, set properties on it, and call Uruchom.

The properties are Serwer, Baza, Uzytkownik, UzytkownikHaslo, Operator, OperatorHaslo, Autentykacja and Produkt. Read that list twice. It holds the single most important architectural fact about Sfera, and it is easy to skim straight past:

There are two sets of credentials. Uzytkownik and UzytkownikHaslo are a Microsoft SQL Server login. Operator and OperatorHaslo are a Subiekt operator — a person's account inside the ERP. Your integration authenticates twice, at two layers, with two different permission models.

I wrote a whole piece recently on what read-only actually means for a service account, and this is the cleanest example of the problem I have seen in any Polish ERP. When somebody in a meeting says the integration account is read-only, ask which of the two they mean. The SQL login inherits none of the operator's restrictions. The operator's restrictions do not constrain the SQL login. And both get called "the integration account" in the same sentence.

Produkt selects which programme in the line you are attaching to — Subiekt GT is 1, Rachmistrz 2, Rewizor 3, Gratyfikant 4, mikroGratyfikant 5, Gestor 6. And then Uruchom(tryb_dostosowania, tryb_uruchomienia) returns the application object you actually work with.

The Second Argument to Uruchom Is Your Architecture

The running mode is a small integer and it decides more about your system than anything else you will type that week:

  • 0 — start the application unless a running one can be attached to.
  • 1 — same, but only attach if the running instance is not in a blocked state (Subiekt blocks itself during startup, licence checks and operator switching with Ctrl+F2).
  • 2 — always start a new instance.
  • 4 — attach or start without the user interface. The application runs in the background.

Mode 4 is what an integration wants. A surprising number of first attempts do not use it — which is how you end up with a Subiekt window opening on a server nobody is looking at. Mode 2 is the one that costs money: a new instance per job means a new login per job, and a login occupies a licence seat exactly like a person does.

Do not skip the blocked-state note under mode 1 either. Startup, licence check and operator switch are all states where Subiekt exists as a process but is not ready. An integration that assumes "process exists, therefore attachable" fails intermittently — and for the first two days it looks exactly like a network problem.

Sfera Is Priced Per Programme and Per Workstation

From InsERT's retail price list effective 2 January 2026 — check the current one before quoting, but the structure does not move:

Item Net PLN
Sfera dla Subiekta GT (add-on to an existing Subiekt) 1 045
— extension to each additional workstation 655
Subiekt GT Sfera (bundle) 2 090
Sfera dla Rewizora GT 1 975
Sfera dla Gratyfikanta GT 1 915
Sfera dla Gestora GT 875

The last three rows are the ones that change conversations. Sfera is bought per programme. An integration that issues sales documents in Subiekt needs Sfera dla Subiekta GT. The moment scope grows to "and post it in accounting", that means Rewizor GT and a second Sfera licence at nearly twice the price of the first.

Raise this in the first meeting, not the invoicing one. "We'll also handle the accounting side" sounds like a small extension of scope. In licence terms it is the bigger purchase.

Fifteen Days of Free Certainty

InsERT ships a trial version of Sfera. You turn it on from the Sfera icon in the programme's toolbar and it runs for 15 days, after which Sfera expires and anything built on it stops working until a licence is bought and activated.

Almost nobody uses it. And it is the highest-value fifteen days available on a Subiekt project — not to build the integration, but to answer one question: can the documents this project depends on actually be created, on this client's database, with this client's configuration? Warehouse states, price lists, unit definitions, required fields somebody added in 2019, the operator permissions in force. All of it you find out in an afternoon with a trial licence. Or in week five without one.

The expiry is a named failure mode too. A proof of concept built on the trial, demoed successfully, then left running while commercial terms get agreed, dies on day sixteen. It dies at the client's, in production-shaped conditions, with nobody expecting it.

Where the Documentation Is

There is no public Sfera reference on the internet. People waste real time looking for one.

The documentation is inside the installation. In the programme: Pomoc → InfoSfera, then F1 into the help module. On disk it is a CHM file under the InsERT directory — and the path itself tells you something you need to know:

C:\Program Files (x86)\InsERT\InsERT GT\Pomoc\gta.chm

(x86). Thirty-two bit.

Which is why the most common day-one failure is a .NET project built as AnyCPU on a 64-bit machine, throwing "Klasa niezarejestrowana" — class not registered — against a COM object that is registered perfectly well, just not for a 64-bit process. Target x86 and the error disappears. A five-minute fix that regularly costs half a day, because the message points at registration and the cause is bitness.

The Failure Modes Worth Designing For

The RPC server disappears. Sfera holds a live connection to a running subiekt.exe. If that process ends — a user closes it, an update restarts it, the machine reboots overnight — your object handle is dead and it will not heal itself. The integration has to detect that and reconnect. If it does not, the symptom is a service that ran happily for six weeks and then silently stopped: the same failure shape I described for unwatched scheduled jobs in enova365.

The licence seat at month end. Covered above. Ask how many workstations the installation has before you design a polling loop, not after.

Direct SQL writes. Read from the database freely — reporting off the Subiekt tables is normal practice and it works. Write to it and you have bypassed the business logic that was the entire reason to use Sfera in the first place, produced documents Subiekt does not fully believe in, and walked off the ground where InsERT support can help you.

Version drift. Subiekt GT is still being developed — version 1.89 carries the current wave of KSeF changes, including new reference fields on receivables and payables. Good news for the platform, standing obligation for you. An ERP that keeps changing is an integration that needs re-testing on a schedule, and the Sfera licence requires the current version to be activated anyway.

What I Would Build First

Put a thin HTTP service on the Windows host that owns the Subiekt installation, and let it be the only component in your system that knows Sfera exists. Your application talks to that service over JSON. The shim absorbs COM, the bitness constraint, the reconnect logic and the version coupling — so everything above becomes one small, replaceable component instead of a property of your whole architecture.

Then start with reads. Stock levels and contractor data, exposed read-only, with a heartbeat so a dead connection shows up within minutes rather than at the next complaint. A week of work. It earns you the right to talk about writing documents, and it turns the licence and permission questions from theoretical into concrete.

Weighing this against an order-intake project? The connection is direct: everything above is the plumbing under an ERP-integrated B2B portal, and the portal is where the return on it shows up.

Working out whether a Subiekt GT integration is worth building? Get in touch — an hour with your installation and your real document flow will tell you more than any estimate written from a feature list.

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

November 2026
Mon
Tue
Wed
Thu
Fri
Sat
Sun
← Back to Blog

Related Posts

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half
Blog

What Subiekt nexo and Subiekt GT cost in 2026: licence prices, the Abonament, and the 30 days that raise the renewal by half

Subiekt nexo for 3 workstations is 1 275 zł net, Subiekt GT 1 045 zł, nexo PRO 2 575 zł. Those are perpetual licences, and then there's the yearly Abonament: 349 zł for nexo if you renew within 30 days of expiry, 539 zł if later. Plus Sfera (the API), the accounting-office client licences, and a comparison with Optima and enova365.

Read more→
What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out
Blog

What Comarch ERP Optima costs in 2026: the subscription list, Basic vs Pro, and three costs it leaves out

Optima's price list is public: Podstawowy 59 zł a month, Logistyka Basic 75 zł, Księga Handlowa 175 zł. The catch is the word Pro: it's a top-up on Basic, not a separate tier, so full accounting in Finanse costs 250 zł, not 200. Plus the Podstawowy limits, how HR counts employees for accounting offices, and two worked examples.

Read more→
December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February
Blog

December pay paid in January 2027: a 2026 or a 2027 cost? The 8 January payday and ZUS by 15 or 22 February

December payroll paid in January is a 2026 cost, but only if the pay leaves on the date in the client's pay rules and the ZUS contributions reach ZUS on time. 10 January 2027 is a Sunday, so the statutory deadline ends on Friday 8 January. The same pay lands in the employee's 2027 PIT-11. Here's what an office checks in December and in February.

Read more→