ecosystem products04
crm.knopkaorders, clients, club and unified inbox erp.knopkalocation money, pay and inventory lms.knopkacourses, certification and certificates id.knopkaone sign-in and roles by location
soon
crm.knopkaorders, clients, club and unified inbox
CRM for orders and clients
  • tracking of every order
  • club and client portal
  • unified inbox
erp.knopkalocation money, pay and inventory
ERP: cash and pay
  • revenue and cash by day
  • monthly location profit
  • technician pay
  • inventory and royalties
lms.knopkacourses, certification and certificates
LMS for training
  • courses and webinars
  • quizzes and certification
  • certificates
id.knopkaone sign-in and roles by location
ID: one account
  • one sign-in for all products
  • roles by location
  • directory of locations
coming soon to the ecosystemmessenger

team and client messaging in one window — next to orders and tasks

coming soon to the ecosystemnotebook

network procedures, instructions and notes — in one place and under the same sign-in

coming soon to the ecosystemtasks

assignments by location with deadlines and control: who, what and by which day

how we built ERP.Knopka: money you can trust

ERP · updated 5 Oct 2026author: Abak · developer of ERP.Knopka5 min read
how we built ERP.Knopka: money you can trust

Hi, I'm Abak — I'm responsible for the development of ERP.Knopka. I'll tell you not about marketing, but about the engineering decisions I am genuinely proud of. A financial product is first of all trust in the number: if the number lies, nothing else matters.

decision No. 1: revenue is cash, not “one number”

The most common bug in financial systems is storing revenue in a single field. Then it's unclear: did the money come in, or was an order just created? From the very start we separated cash (what actually came in), turnover (the value of services by category) and receivables (turnover minus cash), which is calculated automatically.

It sounds like a small thing, but this is where the honesty of the whole product grows from. Cash flow is built only from cash. Royalties are calculated from the money actually received at the cash register in the month — after discounts and net of refunds: you can't charge a percentage on money that doesn't exist yet. A prepayment and a balance payment are two different events, and each lands on its own day. That is why the ERP shows revenue and cash by day, and location profit for the month. When I checked the calculation at a real location in Shchyolkovo, everything matched to the ruble.

Why cash and turnover are different numbers and what an owner should do about it is covered in the article turnover is not cash: how not to mix up cash, turnover and receivables.

A location's cash and turnover for the day in ERP.Knopka

decision No. 2: one location doesn't see another

ERP.Knopka is designed for dozens of a network's locations in one system — and none of them should see another's money. The isolation does not rest on “a filter in the code that is easy to forget”, but on the database level: on row access policies in Postgres. Every query goes through the check “which locations do you have access to”. We run the automated tests “location A can't see location B's data” on every migration.

In the audit before connecting the first locations I caught a hole in how an employee is linked to an account — and closed it before live partners arrived. Financial security is not a feature, it's hygiene.

Which locations a person can access is set by roles by location in ID.Knopka: one employee can have different roles at different locations.

decision No. 3: pay for what a person actually did

A technician is paid not “on average”, but from their output by the location's rates: per service or per category. The output comes from the CRM — from order items where the performer is recorded. Nobody enters it by hand, and there are no timesheets of “sat for eight hours”. Fair and transparent.

Every location has its own rates. The main one is the rate per service; the fallback is the rate per category, if there is no rate for the specific service. A rate is either a percentage or a fixed amount per item, and the technician's percentage is calculated from the amount after or before the discount — as the partner decides. Work for which no rate is set is highlighted, so it doesn't get lost in the calculation.

Then the location manager marks the payment — in full or in parts, with the advance repaid — and can export the calculation to Excel. The ERP itself does not transfer money: it calculates who is owed how much. In detail, with an example, in the article how to calculate technician pay by location rates.

Technician pay by location rates in ERP.Knopka

decision No. 4: the phone is a workplace

A partner looks at finances not at a desk, but in passing — on the floor, on the move. That's why the mobile version is not a “squeezed desktop”. A floating bottom bar that collapses into a half circle at the edge of the screen with one tap; a menu that slides up from the bottom and can be dragged with a finger. I verified this on a real iPhone, not in a shrunken browser window — because there is a gulf between them.

decision No. 5: the product as part of an ecosystem

ERP.Knopka lives together with the CRM, LMS and ID. The services are on different stacks, but trust each other through signed events and single sign-on: ID.Knopka gives an employee one account for all products. From the CRM, the ERP receives orders, payments, refunds and technician output. An order is paid in the CRM → the money appears in the ERP cash → royalties and pay are calculated on their own. We write the contract between the services explicitly, in one place, so nobody has to “fill in the gaps”.

How the products share data and when to take them together was explained by Herman in the article CRM, ERP and LMS: when to take them separately and when together.

where the ERP is now and what's next

ERP.Knopka is live at the first locations of the SneakNFresh network; the other locations are being connected in waves. Besides cash, location profit and technician pay, it has a shift schedule and a supplies inventory: an item gets a minimum stock level, and when the stock crosses it, the location manager or partner gets a “running low” push notification — once, not every hour.

The single employee account already exists — it's ID.Knopka. In progress are the cost of services based on usage norms and a history of rates. But the main principle will not change: the number can be trusted. That is the whole job.

frequently asked questions

how does cash differ from turnover?

Cash is money that has actually come in. Turnover is the value of the services provided, by category. The difference between them is receivables, and ERP.Knopka calculates it on its own.

what are royalties calculated from?

From the money actually received at the cash register in the month — after discounts and net of refunds. ERP.Knopka does not charge a percentage on money that doesn't exist yet.

where does the ERP get a technician's output from?

From the CRM — from order items where the performer is recorded. Nobody enters output by hand, and pay is calculated by the location's rates.

can one location see another's data?

No. Location isolation rests on the database level, every query checks which locations a person has access to, and automated tests for this run on every migration.

does the ERP transfer money to technicians?

No. The ERP calculates who is owed how much, and the location manager marks the payment — in full or in parts — and can export the calculation to Excel.

blog

keep reading

request

want to see knopka on a live network?

send a request — we'll show you the products on the screens of a live network and suggest where to start.

what interests you
how to reach you
fields marked with an asterisk are required. the WhatsApp* note is at the bottom of the page.

sending

passing your request to the knopka team — this takes a couple of seconds.

done

your request is with the knopka team. we'll get in touch, arrange a call and show you the products on the screens of a live network.

not sent