BDO API from 1 January 2027: KPO records that will not die on the old endpoint
On 21 August 2026 IOŚ–NRI announced on bdo.mos.gov.pl API changes for KPO and KPOK from 1 January 2027: endpoints, status enums, the year field, means of transport, rejection reasons. The day before, BDO.gov maintenance was set for 25 August 19:00–22:00. A waste-hauling firm does not need a circular-economy slide. It needs a bridge from the job to the authority that will survive a new HTTP contract.
21 August 2026 the Institute of Environmental Protection – NRI published on bdo.mos.gov.pl a notice for BDO API integrators: from 1 January 2027 the API that handles Waste Transfer Notes (KPO) and Municipal Waste Transfer Notes (KPOK) will change. This is not another webinar about record-keeping. It is a change of some endpoint addresses, new endpoints, data structures, card statuses as enumerations, the year field in selected operations, and new fields for means of transport and reasons for rejecting or withdrawing a card. If your KPO register against the new BDO API still lives in a three-year-old script, 1 January will not be a “subscription update”. It will be a quiet day when the card does not leave and the skip of rubble is already at the gate.
A day earlier, 20 August 2026, the same service announced maintenance on 25 August 2026 from 19:00 to 22:00. Three hours when access to BDO.gov may be impaired. That is the best argument you will not buy from a “waste cloud” vendor: BDO.gov is not your operational panel. It is the authority. The authority has a maintenance window. You have a site shift that ends at 20:30 and a driver who will not wait for an IOŚ notice. A KPO register against the new BDO API must be able to work beside the authority: a queue, a draft card, a photo, a mass, a code — and a send when the API returns. Not instead of BDO.gov. Beside it.
This text does not replace the article on BDO and waste records in a firm. That one covers KPO, KEO and a panel that will survive a voivodeship inspectorate visit. Here we add the layer the 21 August notice will not leave alone: whether your integration will survive 1 January 2027, when the endpoint, the status enum and the transport field stop looking like 2025. GESOFT — Paweł Matusiak, Laravel, Vue, Android — builds that panel when Excel, an off-the-shelf “BDO module” and three BDO.gov logins fail to join a construction site, a field service crew and a municipal contractor. If a boxed integrator is enough and it has a timetable for the new API — keep it. We will say so plainly on contact.
We do not invent a voivodeship inspectorate tariff and we do not promise that an app will “issue a KPO for you while BDO.gov is down”. We do not replace BDO.gov, the inspectorate, the marshal, the accounts package or KSeF. We do not burn a working integrator if it already holds one truth about the card and will make 1 January. You write to contact: how many generation sites, whether construction / field service / municipal work, which integrator or spreadsheet is alive today, whether you have an API or someone clicks in a browser. The offer comes back in 24 hours. If SaaS is enough — we will say so. If the model is odd (three companies, one vehicle, construction codes and workshop codes in one day) — we say you need your own panel, not another valley subscription.
What the 21 August 2026 notice actually says — and what you must not invent from it
The notice is dated 21 August 2026. The addressee: BDO API integrators. The cut-over: 1 January 2027. The scope: KPO and KPOK, not “all of BDO”. The full text is on the BDO site. The notice does not say paper records are coming back. It does not say KEO disappears. It does not say how many cards will fail on 2 January. It does not say the inspectorate will postpone visits. Anyone who writes “we will cut inspection risk by 80 percent” is selling weather. You are buying a dossier: which endpoint, which structure, which field, which enum. A KPO register against the new BDO API starts from that difference.
The change list in the notice is concrete and short. Modifications of some endpoint addresses — not all of them, some. New endpoints. Changes in request and response structures. Card statuses represented as enumerations. Changes to the “year” field in selected operations. Card statuses, card types and sort column names as enums. New fields covering, among other things, means of transport and reasons for rejecting or withdrawing a card. The detailed list sits in the attached spreadsheet: Zmiany-API-ewidencja.xlsx. The test environment: test-bdo.mos.gov.pl/api/swagger. Those are facts. The rest — “how many days a typical firm needs to migrate” — is not a fact. We do not add it.
The Institute’s request to integrators is equally short: read the documentation and adapt systems before 1 January 2027. After that date integrations are expected to use the API under the new specification. The notice does not grant a vacatio for “the first quarter, if we manage”. It does not say “the old endpoint will stay until June”. If your vendor says “we will do it in February, BDO will probably slack”, quote the date from the notice, not a slide. A KPO panel for the BDO API change either has a test window in the autumn 2026 calendar, or it is a promise. A promise does not haul rubble.
- Source: IOŚ–NRI notice of 21 August 2026 on bdo.mos.gov.pl, addressed to API integrators.
- Cut-over: 1 January 2027 — after that date integrations are to follow the new specification.
- API scope: Waste Transfer Notes (KPO) and Municipal Waste Transfer Notes (KPOK).
- Changes: some endpoint addresses, new endpoints, request/response structures, enums for statuses, card types and sort columns, the “year” field, new transport fields and rejection/withdrawal reasons.
- Attachment: an Excel file with the detailed list of methods and addresses.
- Test: https://test-bdo.mos.gov.pl/api/swagger/index.html
- The notice does not state inspectorate fines, card volumes or a grace date for old endpoints — we do not invent them.
- The day before (20 August) BDO.gov maintenance was announced for 25 August 2026, 19:00–22:00.
We quote those facts from the notice. We do not add “average KPO issue time in a municipality”, “the share of cards rejected in August” or “how many integrators will make it”. The Institute did not write that. August 2026 supplies a different climate, also from that service: a Tuesday-evening maintenance window and, on 17 August, a notice on registration of foreign entities after 12 August. Those are three different regimes in one week: the API, the authority’s availability, EPR/PPWR. A KPO register against the new BDO API does not settle EPR. It does not pretend one tile joins the batteries regulation to a rubble haul. It splits the cards.
25 August, 19:00–22:00: maintenance that shows BDO.gov will not haul your rubble
The notice of 20 August 2026 is as short as a card on an office door: 25 August 2026, 19:00–22:00, works on upkeep and infrastructure updates, possible transient access issues, a request to allow for the slot in work planning. It does not promise “the system will definitely work from 22:01”. It does not list endpoints that will drop. It is a window. If your site shift ends at 20:00 and the driver is to haul 17 05 04, and the only path is a click in BDO.gov, you stop. That is not an integrator fault. That is the absence of a queue on your side.
An operational panel does not “bypass BDO”. It queues. A draft card, mass, code, generation site, vehicle, consignee — that lives with you while the authority has a window. The send goes when the API answers. If the API does not answer, the driver sees draft, waiting on the authority, not a green “sent” because someone typed it into a spreadsheet with hope. A “sent” lie during maintenance is worse than a red status. A red status can be explained to an inspector. A green one without a number in BDO.gov cannot. A KPO register against the new BDO API learns that on the August window, before 1 January rewrites the contract with the endpoint.
The same window is a test of your roster, not only of the API. If the only person with a BDO.gov login leaves at 16:00 and maintenance is in the evening, you do not have a procedure. You have a hope that “it will go in in the morning”. In the morning the truck has already left or it is standing a second day. Android in the cab, with an operator login rather than the bookkeeper’s, is cheaper than a second day of standstill. It does not replace the authority. It gives a draft and a photo while the authority sleeps. We describe the same field-job mechanism in the field service app — a different trade, the same problem: the authority does not work to your shift.
We do not promise that GESOFT will “keep BDO.gov up during maintenance”. Nobody will, because it is not your server. We promise a queue and a status you are not ashamed of at an inspection. If your current integrator already has that — keep it. A question on contact can be: “does our boxed product queue for the 25 August window”. Sometimes the answer is: yes, do not write code. That is a complete offer. Better to hear it in September 2026 than on 2 January, when the new endpoint will not take the old JSON and you have already forgotten the August outage.
17 August: the foreign placer, PPWR and the authorised representative — another regime, the same register
On 17 August 2026 bdo.mos.gov.pl published a notice on registration of foreign entities. Applications to the BDO Register by foreign entities placing packaged products and batteries, filed after 12 August 2026, will be examined in the light of the duty to appoint an authorised EPR representative, where EU law requires it. The source of the notice: the Marshal’s Office of the Mazowieckie Voivodeship. This is not a KPO. It is the register. Mixing an EPR register with a rubble-haul card in one spreadsheet is what you later pay for at an inspection that does not know which row to look at.
The notice points to two bases: Article 56(3) of Regulation (EU) 2023/1542 of 12 July 2023 on batteries, and Article 45(3) of Regulation (EU) 2025/40 of 19 December 2024 on packaging and packaging waste (PPWR). The representative is appointed by written authorisation. Where the duty exists, the register application or the update is filed by the representative. We do not guess who exactly falls under Article 3(1)(15)(c) and (d) PPWR “by eye”. You read the regulation and a law firm. The panel holds a scan of the authorisation and a date. It does not replace the law firm.
Why is this in a KPO article? Because in August 2026 the same BDO portal tells you three things in four days: the 2027 API, Tuesday maintenance, EPR after 12 August. A firm that “has BDO” as one folder on a disk will lose the difference. A KPO register against the new BDO API is the haul layer. The EPR register is the placing-on-the-market layer. If you place packaging and haul rubble, you have two dossiers. GESOFT does not join them into an “ESG dashboard”. We join the haul to an API that is changing. EPR stays with the law firm and the register application — unless you yourselves ask for a scan file in a law-firm CRM, which is another product.
- Notice date: 17 August 2026; application threshold: after 12 August 2026.
- Addressee: foreign entities placing packaged products and batteries.
- Duty: an authorised EPR representative where EU law requires it.
- Bases cited by the Marshal’s Office: Art. 56(3) Reg. (EU) 2023/1542 (batteries); Art. 45(3) Reg. (EU) 2025/40 (PPWR).
- Form: written authorisation; the representative files the application.
- This is not the 21 August KPO API change — do not mix regimes in one register row.
If you do not place packaging or batteries from abroad, you leave this chapter to someone else’s lawyers. One lesson remains: the BDO.gov portal is a shared inbox for many statutes. Your panel must not be a copy of that inbox. It must be a slice: haul, card, vehicle, code. The tighter the slice, the smaller the chance that on 1 January 2027 a KPO status-enum change will break an EPR application that this endpoint does not even serve. A tight slice is not poverty. It is a conscious choice of custom software instead of a combine harvester.
The 3 August petition: noise about BDO that is not an API specification
On 3 August 2026 gov.pl/klimat published a petition on changes to the EPR system, BDO and burdens on micro-enterprises, with an expected review date of 3 November 2026. We cite the petition’s existence and date. We do not cite it as binding law and we do not guess the ministry’s reply. A panel does not implement a petition. It implements an API specification and a card the inspectorate can compare with BDO.gov. Anyone who builds a roadmap on a petition is building on noise. Noise does not haul 17 01 01.
What must live with you, and what stays in BDO.gov — a split a combine cannot make
BDO.gov is the official register and the official record. It stays. We do not burn it, we do not “replace it with a cloud”, we do not promise a mirror that is always faster than the authority. What must live with you is what the authority does not see at the moment of a site decision: which crew, which skip, which mass from a weighbridge or an estimate, which photo of the heap, who approved, whether the truck may leave. A KPO register against the new BDO API is a bridge. A bridge has two abutments. One is the card in BDO.gov. The other is the job in the panel. Anyone who builds only the official abutment clicks in a browser and has no history of the decision. Anyone who builds only the job abutment has pretty photos and no card number.
A boxed integrator often knows the official abutment: send a KPO, fetch a status, show a list. It weakens on the job abutment when the model is not “one company, one warehouse, one code a day”. A construction firm has three sites, one vehicle and a code that changes in the afternoon because someone put polystyrene into the rubble. Field service has waste oil at the customer’s, not in your hall. Municipal work has a KPOK, not a KPO. If the box has one “waste” card, on 1 January 2027 it will get a new enum and still will not know which job this is. A new endpoint does not fix a model. It fixes an HTTP contract.
The split we defend: BDO.gov holds the card and the official status. The panel holds the job, the asset, the photo, the mass, the person and the card id after sending. Accounts hold the haul invoice and — from 2026 — a KSeF number if that invoice goes through KSeF. Three systems. One key: the job id. If the key is “site name in the notes”, you will lose the card when the API changes, because notes are not an enum. The 21 August notice is polite to those who already have an id. It is brutal to those who have a “status (type it yourself)” column.
We do not migrate you from BDO.gov to GESOFT. It cannot be done. It is not allowed. Anyone who sells “you no longer need to enter BDO” is selling risk. You enter when you must: an application, a fee, a report, a correction the API will not give you. The panel is to take daily card-clicking off you, not the authority. That is the same honesty we describe for construction-firm software: sites, crews, measurements — and separately a document you must not fake inside a CRM. A KPO is that kind of document.
KPO, KPOK, KEO: three documents, three places where the old script will split
The 21 August notice covers KPO and KPOK. KEO — the waste record card — is not in the title of that update. We do not guess whether KEO will get a similar change “while they are at it”. We take the scope literally. If an integrator writes “we are changing all of BDO from 1 January”, you ask: where is that in the Institute’s spreadsheet. A KPO register against the new BDO API splits three documents in the model, even if the same bookkeeper clicks them today. A KPO is a transfer. A KPOK is a municipal transfer. A KEO is the holder’s record. Mixing them in one “waste” table ends with the new KPOK endpoint overwriting your KEO status because the column had the same name.
A KPOK is not “a KPO with municipality in the notes”. A different document, a different endpoint (the notice announces changes for both), a different counterparty, a different regime. A firm that hauls both construction rubble and municipal waste under a commune contract has two streams. One vehicle is not an argument for one card. It is an argument for an asset card and two document cards. A panel that cannot do that will on 1 January receive two sets of enums and one row. The row will beat the enum. You will lose with the inspectorate, because BDO.gov will have two histories and you will have one.
KEO remains the holder’s daily truth: receipt, generation, transfer, stock. We do not replace the duty to keep records in BDO.gov. We add a bridge: when a KPO goes out, KEO on your side knows this is not “sent in the chat”. It knows there is a card id or an error status. If you still complete KEO by hand a day later, the KPO API change will still catch you — because a transfer without a consistent id is what the new status enum will pull to the surface. Not as a fine. As a card rejection, which the notice now adds as a field.
- KPO — waste transfer note: the 21 August notice changes its API from 1 January 2027.
- KPOK — municipal waste transfer note: the same notice, a separate document, separate endpoints.
- KEO — waste record card: it is not the title of this update; we do not guess a similar change.
- New fields in the notice: means of transport, rejection and withdrawal reasons — transfer-card fields, not “KEO notes”.
- The “year” field in selected operations: if your script hard-wires the year from the server clock, you check the Institute’s spreadsheet, not a hunch.
- A status enum instead of a free string: “sent?”, “OK”, “to fix” stop being a legal payload.
If you only keep KEO in the browser and the consignee issues the KPO, this chapter still concerns you. The new API on the consignee’s side will fail on your mass or code error, and the rejection reason will come back as a field you currently have nowhere to store. Store the rejection on the job, not in the driver’s head. In a week the driver will say “it kind of went through”. The field in the 21 August notice exists so that “kind of” has a name.
Construction, field service, municipal work: who is the producer when the contract is silent
The Waste Act is explicit about construction, demolition, renovation, tank cleaning, cleaning, maintenance and repair services: the producer is the service provider, unless the contract says otherwise. That is not new in August 2026. It is a standing hook on which the inspectorate hangs firms that say “it is the client’s waste”. A KPO register against the new BDO API does not settle a legal dispute. It holds who is the producer on this card and a scan of the annex if you shift the duty. No annex plus a card in the client’s name while you are breaking out a floor — that is not an integration. That is a wish.
On a construction site the hook hurts twice: many generation sites, subcontractors, “shared” skips, a code someone types from memory. The crew panel — the same one that counts measurements in construction-firm software — should know that a skip leaving is a waste event, not only a cost. We do not burn the site programme if it is alive. We add an event: place, code, mass, photo, whether it may go. KPO sending can stay in the office. The “go / stop” decision must be at the gate. A new API status enum will not help if the gate received an SMS “go, accounts will click in the morning”.
Field service: oil, filters, spent equipment at the customer’s. The generation site is not your hall. A card that always stubs the registered office address is lying in the payload, and the 2027 API structure will not be kinder about that. The technician’s Android — as in the field service app — collects address, photo and code on site. The office does not guess from the invoice. If you clean buildings, the same mechanism is in the cleaning-firm app: checklist, photo, waste from the premises. We do not mix that with a municipal KPOK unless you really are the municipal contractor.
Municipal work and KPOK: a commune contract, a different document, a different endpoint. If you haul both “construction” and municipal waste, two profiles in the panel. One driver login, two card templates. On 1 January 2027 both templates read the Institute’s new spreadsheet. Neither inherits fields from the other “because it is convenient”. Inheritance convenience is what breaks an enum. An enum exists so that convenience stops being a payload.
Android on site: photo, mass, code, status — before the API accepts the card
A driver does not fill in Swagger. A driver sees: go, stop, take a photo, enter the mass from the weighbridge or the skip lid. A KPO register against the new BDO API is short on Android because it is long in the office. The office maps the enum, the endpoint, the year, the rejection reason. The cab maps the event. If you give the driver the full BDO.gov form on a phone, you will still stop at 19:00 on 25 August, and on 2 January you will stop on a field he does not understand. Your own four-field screen will survive an API change, because the API will change behind the screen, not on it.
A photo is not decoration. It is evidence that 17 05 04 is not a bag of paint. The inspectorate is under no duty to believe a code from memory. A photo with a timestamp, GPS (if you enable it, with notice to the crew) and a job id is cheaper than a dispute. We do not promise that a photo “closes an inspection”. We promise that you have a file. Retention follows your policy, not our “keep forever” cloud. That is GDPR in web applications plus ordinary order. We do not build a data lake of rubble.
Mass: from a weighbridge, from the lid, from an estimate — three qualities, three flags. The new API structure does not excuse you from the truth about mass. If you still paste 10 000 kg “because skip” while the weighbridge showed something else, the 2027 rejection field will have a place for that. The panel shows the mismatch before you send. That is not AI. That is an if. An if is cheaper than a card correction, which the Confirmations Module — according to the BDO notice of 14 July 2026 — is not planned to offer as document correction. We quote that notice carefully: it concerns the Confirmations Module, not KPO. The lesson is the same: a correction is often harder than a careful first send.
- The driver opens the job: site, proposed code, whether it may go.
- A photo of the heap or skip; a timestamp; optional GPS after consent and notice.
- Mass: weighbridge / lid / estimate — a separate quality flag, not one cell.
- The card draft goes to the office queue; the cab sees “draft” or “sent + id”, never green without an id.
- An API rejection (the new 2027 field) returns to the same job, not a group chat.
- The office maps the enum and endpoint; the cab does not see Swagger.
- During a BDO.gov window (such as 25 August 19:00–22:00) the draft waits; the truck does not get a false “sent”.
- 2FA and a separate operator login — the bookkeeper does not lend a password to the gate.
Means of transport and rejection reasons: fields that an Excel “notes” column will not survive
The 21 August notice expressly adds new fields covering, among other things, means of transport and reasons for rejecting or withdrawing a card. That is the sentence that kills a “notes” column. Notes are a string. The new API — given that statuses, card types and sort columns move to enums — is not a place where “artic / van / somehow” will survive validation. A KPO register against the new BDO API must have a means-of-transport dictionary aligned with the Institute’s spreadsheet, not with your nicknames for trucks. The nickname may stay a label in the panel. The payload goes as the dictionary.
A rejection reason is a gift you do not want until the first card comes back. Today a rejection lives in a phone: “it didn’t go, do it again”. Tomorrow it will be a field. A field can be reported: how many cards, which reason, which crew, which code. That is not a valley KPI. It is a list you show the site manager instead of an argument. GESOFT does not promise a drop in rejections by a percentage the Institute did not publish. It promises that the reason will not die in a chat. If your integrator already returns the reason and stores it on the job — keep it. You ask for that in writing before you pay for a “2027 module”.
Withdrawal of a card is a separate event. It is not “delete the row”. A row deleted in Excel is a lie to BDO.gov, where the card may already have a number. The panel marks the withdrawal, keeps the id, keeps the reason, keeps who clicked. The new API will make that easier, because it asks for the field itself. You will make it harder if you allow deletion without a role. A “may withdraw” role is not bureaucracy. It is what remains after an inspection when someone “only corrected it”.
The means of transport joins the vehicle card in the fleet or site panel, not the dispatcher’s memory. If a truck fails and a substitute goes, the card must be able to change the means before sending. After sending there is a withdrawal or a correction at the authority, not a silent swap in JSON. That discipline is dearer than a column. It is cheaper than two cards for the same skip. Two cards are not “for safety”. They are a mess the new status enum will show side by side on a list.
Statuses as enums: why “sent?” in a cell stops being a payload
The notice says it twice, so it is not decoration: card statuses as enumerations; and card statuses, card types and sort column names as enumerations. The Institute is telling integrators: stop guessing strings. A KPO register against the new BDO API on your side also stops guessing. The mapping: Institute enum → your operational status (draft, queued, accepted, rejected, withdrawn). No “sent?”. No “OK”. No Excel colour instead of a value. A colour will not enter JSON.
Card type as an enum will split KPO from KPOK better than a note in the job title. If you still filter a list with `LIKE '%municipal%'`, on 1 January the filter will die on a sort column that also becomes an enum. That sounds like a programmer’s trifle. For a dispatcher it is a list they cannot sort on a Friday. The Vue panel shows a Polish label. The API gets the enum. You may change the label. You may not change the enum until the Institute issues another spreadsheet.
The “year” field in selected operations is the classic place where a script “worked for three years”. A hard-wired `date('Y')` year, or the year of a card that lives across New Year. The notice does not describe on the page what changes in the year field — it points to the spreadsheet. Do that: open the file, find operations with “year”, write the difference in a ticket, not in a head. GESOFT does not guess the Institute’s cell for you. GESOFT implements what the spreadsheet says and tests it on test-bdo.mos.gov.pl. Guessing is cheaper until December. In January it is dearer than a week of tests.
If you have no programmer, you still need someone who will read the spreadsheet and ask the integrator: which enums are you changing, which endpoints, when on test. An answer “we will ship an update” with no list is a refusal. Write that to contact — we can be the person who reads the spreadsheet and says “keep them, but demand the list”, or “they will not make it, we put a layer in”. A Laravel layer maps an enum. It does not map hope.
A timetable to 1 January 2027: test-bdo, the spreadsheet, who clicks, who codes
Counting from 22 August 2026, a little over four months remain until cut-over. That is not “plenty of time”. It is the reporting season, KSeF already in force in 2026, e-Delivery for CEIDG from 1 October 2026, and holidays when integrators vanish. A KPO register against the new BDO API gets its own task in the calendar, not “we will do it after the invoices”. Anyone who slots it after 15 December is testing on production on 2 January. The notice does not provide an “old endpoint until March” environment. It provides a new specification from 1 January.
A test is not a slide. It is an account on test-bdo.mos.gov.pl, a set of KPO and KPOK cards that match your codes, and a list that passes: draft, send, status, rejection, withdrawal, means of transport, year. If an integrator cannot give you test logs, they cannot give you 1 January. GESOFT puts that environment in the offer as a condition, not a “nice extra”. Without a test there is no go-live date. There is a hope date.
A split of roles: who reads the Institute’s spreadsheet (one person, a name). Who holds your code dictionaries. Who has the test login. Who accepts the enum mapping. Who teaches drivers that the screen will not change and office statuses will. Who may withdraw a card. That is not valley Scrum. It is a list without which on 2 January everyone calls the bookkeeper. The bookkeeper is not an endpoint.
- August–September 2026: Institute spreadsheet read, your one-pager of endpoints and enums, a written question to the current integrator with a reply deadline.
- September: a test-bdo account, first KPO and first KPOK on your codes, not a “documentation example”.
- October: mapping of means of transport and rejection reasons; a decision whether the box will make it or you need your own layer.
- October as well: CEIDG e-Delivery from 1.10.2026 — a separate thread, a separate box, not mixed with KPO.
- November: office training on the new statuses; Android with no screen change or with one new label.
- By 15 December: regression (draft, send, rejection, withdrawal, “API not answering” window).
- 1 January 2027: the new specification; the old script is not a plan B if the notice does not leave the old API.
- First week of January: a human on duty, not a bot, on rejection logs.
If after this list you see that the integrator is silent, you write to us earlier than 15 December. A 24-hour offer may read: “keep them, but send them this checklist” or “we put a Laravel + Vue + Android layer beside you, BDO.gov stays”. We do not put a layer for sport. We put it when the integrator’s silence is dearer than code. Price depends on the number of generation sites and on whether KPO and KPOK both really live — not on the slogan “AI in waste”. AI will not sign an enum for you.
KSeF, e-Delivery and BDO: three authorities, one firm, no “one button”
KSeF in 2026 is no longer a poster announcement. A large taxpayer — from 1 February 2026 (2024 sales above PLN 200 million including tax). The wide duty — from 1 April 2026. A KSeF number does not issue a KPO. A haul invoice is not a transfer note. The panel may pin a KSeF number to a haul job so you do not hunt in two files for what that skip cost. It cannot replace KSeF.gov. The wider account: mandatory KSeF in a company app. Mixing a KSeF payload with a BDO payload in one JSON is an error that on 1 January 2027 will punish both authorities at once.
e-Delivery: non-public entities in the National Court Register — duty from 1 April 2025; CEIDG — from 1 October 2026. An inspectorate decision, a marshal’s request, correspondence about the BDO register should not die in a box nobody opens because “waste is in Excel”. A waste panel is not an e-Delivery box. It may hold a message id and a scan when someone puts them in. It cannot impersonate the designated operator. Anyone who sells you “everything in one inbox: KSeF, BDO, e-Delivery, social security” is selling a slide. A slide has no certificate.
The accounts office that handles your KSeF will not issue a KPO from a site at 20:30 for you. You may give them a read-only card status if you wish. You do not have to. A read-only view is not the bookkeeper’s BDO.gov login on the driver’s phone. A login on the driver’s phone is a hole, not an integration. Software for an accounts office is about a client portal and KSeF. This article is about hauling. Two products. One tax number is not a reason to flatten them.
In practice the join looks like this: a haul job has an id. A KPO has a BDO.gov id when it goes out. An invoice has a KSeF number when it goes out. A request has an e-Delivery id when it arrives. The panel shows three ids on the job or says plainly that it does not hold the third. Missing the third id is more honest than a false “received”. A KPO register against the new BDO API is responsible for the first two in the waste world. You leave the third with the law firm or the person who owns the box. GESOFT can build a list of requests if you ask. It will not build it “while doing KPO”, because “while doing” produces bad GDPR and bad permissions.
An inspectorate visit: a file that matches the card in BDO.gov, not a chat group
We do not invent inspection counts or an average fine. The Waste Act provides for administrative fines — you read the amount from the act and the decision, not from a blog. This text is not a tariff. It is a file checklist. An inspector will compare what you have on screen with what is in BDO.gov. If you show “sent” and the authority has nothing, you lose in the first minute. A KPO register against the new BDO API exists so that minute is boring: card id, status enum, mass, code, means of transport, who clicked.
A company chat is not a register. A screenshot of “OK, go” is not a KPO. After 1 January 2027 it is even less of a KPO, because a payload without an enum will not enter. An inspector is under no duty to read your chat. They are under a duty to read BDO.gov and your documents. The panel exports a PDF of events: draft, send, rejection, withdrawal, photos. Retention is your policy. “We keep everything in the cloud forever” is bad GDPR and a bad cost. “We delete after a week” is bad evidence. You set that with a law firm, not a slide vendor.
A generation site that is the registered office on the card and a site in another county in the photo is a classic mismatch. The new API will not fix an address lie. It will expose it if the data structures are tighter. That is why Android collects the place on the place. That is why the subcontractor contract says who the producer is. That is why we do not shout “AI will recognise the code from a photo” as a production promise. We can help with a code catalogue and a warning when the code does not match the description. The decision stays human. The inspector asks a human.
If the visit is about a parts and oil store in a workshop, not a construction site — a different code, a different card, the same bridge. Workshop software holds the job and the parts. Waste from a service job is an event, not a “note extra”. We do not burn the workshop programme. We add the waste. The inspectorate does not ask whether you have a pretty repair calendar. It asks whether 13 02 05* has a card.
SaaS, integrator, your own panel: when a box is enough, and when 1 January unmasks it
A box is enough when: one company, one card type (either KPO or KPOK, not both in chaos), generation sites you can put in a dictionary, an integrator who shows the Institute spreadsheet and test-bdo logs, a queue for a maintenance window, separate logins, no need for Android at the gate — or Android you already have that will survive a change behind the screen. Then GESOFT will write on contact: keep it. That is an offer. It is not a sales failure. It is a cost we do not charge you.
Your own panel when: three companies and one vehicle; construction plus field service plus municipal work; the producer depends on an annex; the code changes during the day; the driver must go while BDO.gov is down; the integrator is silent about 1 January; an Excel “notes” column is the only status; the bookkeeper lends a password to the gate. Then Laravel + Vue + Android (Paweł Matusiak) puts a bridge beside what already lives. We do not burn a TMS, an ERP, a site programme. The key is the job id. The wider choice: off-the-shelf or custom software and what a Laravel app costs.
A layer in the middle: the integrator stays, we map the new API, your screen does not move on 1 January. That is a common answer. Cheaper than a new combine. Dearer than hope. It needs test access and a contract in which the integrator does not hold your payload hostage. If they do — we write that in the offer too, as a risk, not as a rant. Laravel + Vue.js for panels is about how such a bridge looks from the inside: not an “app for everything”, a panel with an event log and 2FA.
- Question 1: has the integrator shown you the 21 August spreadsheet and the list of endpoints that move?
- Question 2: is there a test-bdo account and a log of KPO and KPOK on your codes?
- Question 3: are statuses an enum, or a “type it yourself” column?
- Question 4: do rejection and withdrawal return to the job, or to a chat?
- Question 5: is the means of transport a dictionary, or a nickname for the truck?
- Question 6: can Android (or the gate) draft without BDO.gov?
- Question 7: at 19:00 on 25 August did you have a queue, or a hope?
- If four of seven are “no” — the box may not make it; you write to contact.
We are not a BDO.gov reseller. We do not sell a register entry. We are not the Institute. We are a workshop that joins your job to an API that is changing. If after the offer you go elsewhere, you take the bridge specification. We do not hold haul data hostage to a licence. That is the same rule we keep for Laravel application security: CSRF, sessions, 2FA, a log — not a marketing padlock tile.
The cost of chaos: a double card, a truck at the gate, a nameless rejection — no invented fines
We will not quote an “average inspectorate fine for a missing KPO”, because the 21 August notice does not contain one and we do not lift figures from brochures. The cost you can count in your own books does not wait for a tariff. A truck that stands because the card did not go out. A second run because the first left without an id. A skip that came back because the code was wrong. A Saturday on which the bookkeeper clicks for three days of site work. Those are your rates, not ours. A KPO register against the new BDO API does not cut the vehicle rate. It cuts the number of days the rate goes into the mud because JSON failed validation.
A double card is dearer than a missing card in the short run: BDO.gov has two transfers, you have one skip. Explaining that is time you will not invoice the client. The new 2027 withdrawal field is cheaper if you know how to use it. It is dearer if you “fix” it with a second send. The panel blocks a second send when the first has an id and is not withdrawn. An if. Again an if. An if is cheaper than a law firm.
A nameless rejection costs an argument. A rejection with an enum costs a correction. The 21 August notice gives you a chance for the argument to get a name. Anyone who does not store the field stays with the argument. Anyone who stores it and does not train the crew stays with an argument plus a pretty log. A log without training is decoration. Office training in November 2026 is in the timetable not for HR. For 2 January, when the enum comes back for the first time after a real haul.
A standstill at the gate in the 25 August maintenance window is a dress rehearsal. If that evening does not hurt, either you do not haul in the evening or you have a queue. If it hurts, 1 January will hurt more, because besides availability the contract changes. Two pains at once. We do not join them into “99.9% monitoring”. We join them in a draft, waiting status. A driver who sees that status does not lie to the client that “it is already in the system”. The client may dislike the truth. The inspector likes it more.
How to talk to GESOFT: 24 hours, three answers, no slide about waste transformation
You write to contact. We do not need a “2030 circular-economy strategy” in the message. We need: number of generation sites; whether construction / field service / municipal / workshop; whether KPO and KPOK both live; which integrator or spreadsheet is alive today; whether there is an API or a browser click; whether anyone hauls in the evening; whether you stopped on 25 August. That is enough for one of three answers to come back in 24 hours: keep the box; we add an API-mapping layer; we put our own bridge with jobs and Android. A KPO register against the new BDO API starts from that trio, not from a bin mock-up.
The answer “keep the box” is complete. You get it in writing, with a list of questions for the integrator (spreadsheet, test-bdo, enum, queue, rejection). We are not that integrator’s partner. We are someone who would rather you did not pay twice. The answer “layer” means: the integrator stays, we put Laravel beside it, the key is card id and job id. The answer “own bridge” means: a browser click will not survive 1 January or the model (three companies, one vehicle) does not fit the box’s card. Price depends on that, not on the slogan “digital BDO”.
Paweł Matusiak. Laravel, Vue, Android. No team that will draw a green leaf on a slide. An event log, 2FA and a status that is allowed to be red. If after the offer you prefer another vendor — go. You take the bridge specification you should have anyway. We do not lock you in a licence that holds card ids hostage. You pay for the model. You leave Excel when the bridge starts working, not when the slide starts spinning.
At the end, plainly: the 21 August 2026 notice is short. Your problem is not short, because construction, field service, KSeF, e-Delivery and the BDO.gov maintenance window sit in one season. We do not join that into “one system for everything”. We join the haul job to a KPO/KPOK API that is changing. The rest (BDO.gov, the inspectorate, the marshal, the accounts package, KSeF.gov, the e-Delivery box) stays in its own offices. Anyone who promises you one button in place of those offices is lying. We promise a 24-hour offer and a sentence you will not hear at a circular-economy conference: we will not build that for you, because it is not allowed.
Questions you do not ask the integrator — and should, before you sign a “2027 module” annex
Before you buy “BDO API 2027 compliance”, ask about the 21 August spreadsheet, not the logo. Do you have the endpoint list in a file? Are KPO and KPOK separate? Is the status enum in the database, or in ifs in code you will not see? Is the year field mapped to the annex, not the clock? Is the means of transport the Institute’s dictionary? Does rejection return to the job? If to any of those you hear “that goes in the notes”, you are not buying compliance. You are buying hope until 31 December. A KPO register against the new BDO API is a mapping or it is a brochure. You already have the brochure on bdo.mos.gov.pl.
Ask what they do not do. Do they replace BDO.gov? (If they want to — you leave.) Do they “sort the inspectorate”? (Nobody sorts the inspectorate.) Do they issue a KPO while the API is down and mark it sent? (If so — you leave.) Do they migrate you on 31 December? (Bad.) Do they have 2FA? Do they log who withdrew a card? Those questions matter more than the number of tiles. GESOFT answers them in the offer. Another vendor should too. If they cannot, it is not because you are too small. It is because the bridge is an extra for them and 2 January for you.
The box price is often lower on the invoice and higher in manual work. A second “municipal” licence, an Excel “for construction”, an SMS “for rejection” — that is TCO nobody will put in a price list. Your own panel is often higher at the start and lower when three regimes sit in one database. We do not settle that for you without figures from your generation sites. That is why the offer comes after the site list, not before. Five sites and three regimes is harder than forty skips and one code. The box likes forty. We like the truth about five.
A “2027 module” annex with no test date is an annex about nothing. You write in: a test-bdo account by day X, a KPO/KPOK log by day Y, enum mapping in an attachment, first-week-of-January cover. If the integrator will not sign dates, GESOFT can be a layer or a witness on paper that the dates are missing. A witness is a service too. Cheap. Sometimes it is enough so that you do not extend the silence into December.
Stock, codes and mass: the dictionary without which the new endpoint will reject you anyway
The 2027 API will not teach you waste codes. A lying code will pass or fail depending on validation, not on your intuition. A code dictionary on your side is a holder’s duty, not an “AI module”. A KPO register against the new BDO API suggests a code from the site card and the last haul, not from a chat. A suggestion you can override. An override that records who and why. The inspector asks about the code, not about a language model.
Mass without quality is a theatrical number. Weighbridge, lid, estimate — the three flags we described on Android — return here as an office dictionary. If the client pays per tonne from the weighbridge and you put the lid on the KPO, the mismatch will show on the KSeF invoice and the card at once. The panel shows both. It does not “reconcile” them by magic. Reconciliation is a human decision that knows whether the weighbridge was broken. The app knows there are two sources. That is enough so that on 2 January you do not send a lid as a weighbridge because the script took the first non-empty cell.
A waste store on site — a heap, a skip, a shed — is a place, not a “note”. A stock programme in the sense of balances is not a WMS for pallets of goods. It is a list of places and stocks that KEO should know. We do not replace KEO. We make sure a haul from a place that is not in the dictionary does not leave as a card with the registered office. The new endpoint does not ask whether the heap exists. It asks for fields. You can fill the fields with a lie. The panel can make the lie harder. It cannot forbid it for you.
- A code dictionary per generation site, with override and a who/why log.
- Three mass qualities: weighbridge, lid, estimate — separate, no guessing the first cell.
- Place as a card (address, commune, site or hall), not as text in notes.
- A send block when the place has no code or a hazardous code is going out as mixed municipal.
- We do not replace the legal catalogue of codes — we hold your slice, not the whole waste world.
- A suggestion from the last haul is help, not evidence for the inspectorate.
- A KPO vs KSeF mass mismatch — a report, not automatic “reconciliation”.
- A heap without a place card does not leave in a payload with the registered office.
If you already have a goods WMS, we do not burn it so that it can hold rubble. Rubble is not an SKU. We add a list of waste places. A combine that pretends 17 05 04 is a stock item with a barcode will be pretty in a demo and dead on a wet site. Android in the rain has four fields. A WMS has a hundred. On 1 January 2027 the screen the driver will use wins, not the one that wins an IT tender.
GDPR, logs and who clicks: a waste card is not a chat group
A shared BDO.gov login is a hole a new enum will not patch on 1 January. An enum does not know who clicked. A log on your side does, if you have one. A KPO register against the new BDO API logs the panel operator, not “the company account”. 2FA — as in Laravel authentication — is not an ISO ornament. It is what remains when a former employee still knows a 2024 password. BDO.gov has its accounts. The panel has its own. Lending both onto one phone in the cab is one incident, not two tools.
A photo of a heap is personal data when a person is in the frame. You inform the crew. You do not publish the heap on the company Facebook “for transparency”. Photo retention is a policy, not a cloud default. The same GDPR we write about for other panels. A waste inspector is not a basis to keep employees’ faces in a “BDO” folder for five years. Minimisation. Export on request. A processing agreement if GESOFT hosts. If you host yourselves — an agreement too, only the other way round.
Permissions: who drafts, who sends, who withdraws, who sees the rejection reason, who exports a PDF for an inspection. A driver does not see a counterparty’s national ID. The office does not need to see GPS of every stop if that is not needed. The new API does not require everyone to see everything. It requires a correct payload. Payload and view are two screens. A combine that gives everyone full Swagger is not “transparent”. It is loud.
An audit we do not promise as a certificate and do as practice: a log, passwords, 2FA, backups, who has the test-bdo key. A PHP application security audit is a separate service when you already have a panel and do not know whether the bridge leaks. With KPO a leaking bridge is counterparties and sites, not only an “ESG image”. We do not scare. We ask for separate logins before you touch the enum. An enum without a login is a new way for an old password to break a new API.
What stays with a human: the code, the producer, the contract — the panel will not sign that for you
The new API from 1 January 2027 is a machine contract. Waste classification, the choice of producer, the annex with the client, the decision “go despite the maintenance window” — those stay human. A KPO register against the new BDO API records the decision. It does not take it for the foreman. Anyone who promises that “the system will pick the code from a photo and send” is selling you an inspectorate dispute on a subscription. We sell a dictionary, a warning and a log. The signature stays yours. That is the same line we keep for the tachograph and KSeF: the authority and the device stay, the bridge does not impersonate the authority.
A client contract that is silent about renovation waste is a delayed fuse. The panel may have a checkbox “producer under the contract / under the act”. A checkbox without a scan of the contract is decoration. A scan without a date is decoration. A date without a role who approved the annex is decoration. Three decorations look like compliance in a demo. At an inspection they look like nothing. We are not a law firm. We can hold an annex file in a CRM. A lawyer writes the annex. In August 2026 a petition about EPR and BDO will not replace an annex on site.
A driver who must go because the client is shouting is not a Swagger user. He is a status user. If the status is red (no draft, API down, a rejection without a fix), the panel must be able to say no. A dispatcher may override — with a log. Without a log the override is a chat. Chat returns us to the “friday_haul” group. The Institute’s 21 August notice does not know that group. It knows an enum. You must know both: the enum in the office, the human at the gate. A gate without a human who can say no is only GPS.
The training the Institute announces in August — webinars on the records module, KPO, KEO, a 18 August Q&A — is for people, not for a script. A script will not attend a webinar. A bookkeeper may. A foreman rather will not. A panel that requires a webinar from the driver is badly designed. A panel that requires the office to read the 21 August spreadsheet is well designed. Split those two audiences. Only then ask GESOFT for screens. A screen without an audience is a mock-up. You already have a mock-up in the test-bdo Swagger.
A haul is not only BDO: a vehicle, a weighbridge, sometimes SENT — the bridge does not impersonate PUESC
A transfer note does not travel alone. It travels in a truck. The truck has a registration, a driver, sometimes a tachograph, sometimes SENT, always a mass. A KPO register against the new BDO API may hold the registration as the means of transport — the 21 August notice is adding that field. It cannot replace SENT in PUESC and it cannot replace the tachograph. If you haul waste that SENT covers, PUESC stays. Anyone who sells you “BDO+SENT in one tile without PUESC” is selling trouble on the road and trouble in BDO.gov at once. We split the job id: BDO card, SENT filing, KSeF invoice. Three ids. One skip.
A haulage firm that carries your rubble as a subcontractor does not become your BDO. You remain the producer or the holder — depending on the contract and the act. They remain the carrier. The panel shows whose truck it is (the means-of-transport dictionary) and whose card it is (your tax number or the consignee’s, according to the role). Mixing the carrier’s tax number with the producer’s in one “counterparty” field is an error the new data structure will gladly reject. Software for a haulage firm is about the road job. Here it is about the card. If you are both, two modules, one vehicle.
The weighbridge leaving the site is often different from the consignee’s. Two measurements, two flags, one dispute. The panel does not settle the dispute. It holds both. The invoice may go from the consignee’s tonne. The KPO may need a mass at transfer. A mismatch is normal. Hiding the mismatch is not. The new rejection reason may one day name “mass”. We do not guess whether it will. We build a place for the second number. A place is cheaper than an email argument you will not find in a year.
We do not burn the tachograph, PUESC, the weighbridge or BDO.gov in order to “simplify the haul”. A simplification that loses an authority is a complication at an inspection. GESOFT simplifies the driver screen and the API mapping. The rest of the offices stay. If that sounds small as a circular-economy revolution — good. A revolution does not haul 17 05 04 in the rain. A bridge that still knows the endpoint on 2 January 2027 does.
Frequently asked questions
- Does KPO go back to paper or leave BDO.gov on 1 January 2027?
- No. The IOŚ–NRI notice of 21 August 2026 concerns the API for KPO and KPOK: endpoints, structures, enums, the year field, means of transport, rejection and withdrawal reasons. Records stay in BDO.gov. The integrator’s contract changes. A KPO register against the new BDO API adapts the bridge, not the authority.
- Does GESOFT replace BDO.gov, the inspectorate or a boxed integrator?
- Not as a rule. BDO.gov stays the authority, the inspectorate stays the inspectorate, the integrator stays if it holds one truth about the card and can show the spreadsheet and test-bdo. We add a bridge with jobs and Android, or we say “keep the box”. The wider account: off-the-shelf or custom software. On contact you may hear exactly that.
- What exactly changes in the API? How do you know?
- From the notice: some endpoint addresses, new endpoints, request/response structures, statuses, card types and sort columns as enums, the “year” field in selected operations, new fields for means of transport and for rejection and withdrawal reasons. The detail is in the Institute spreadsheet. Test: test-bdo.mos.gov.pl. We do not guess cells for the Institute.
- How does this sit with KSeF from February and April 2026?
- KSeF does not issue a KPO. A KSeF number may hang on the haul job so the invoice and the card share an id. From 1 February 2026 large taxpayers (2024 sales above PLN 200 million including tax), from 1 April the wide duty. The panel does not replace KSeF.gov. Detail: KSeF in a company app.
- Is the 25 August 2026 maintenance window the same as the 2027 API change?
- No. The 20 August notice announces works on 25 August 2026 from 19:00 to 22:00 and possible access issues. That is the authority’s availability. 1 January 2027 is a new specification. Both hurt if you have no draft queue. One does not replace the other.
- Does the 17 August notice on foreign entities concern our site crew?
- Only if you are a foreign placer of packaging or batteries filing a BDO Register application after 12 August 2026. Then an EPR representative under Reg. (EU) 2023/1542 and (EU) 2025/40 may be required. Source: the 17 August notice. Hauling rubble is another regime. Do not mix it with EPR in one row.
- Who is the producer of renovation waste if the contract is silent?
- For construction, demolition, renovation, cleaning, maintenance and repair, the Waste Act points to the service provider unless the contract says otherwise. The panel holds that role and a scan of the annex. It does not replace a law firm. It does not issue a card “in the client’s name” without an annex only because that is easier at the gate.
- Will the app issue a KPO while BDO.gov is down and mark it sent?
- No. In a maintenance window the draft waits, the status is red or “queued”, the truck does not get green without an authority id. A “sent” lie is worse than a standstill. The bridge queues. It does not impersonate the authority. The same for the tachograph and SENT: we do not replace PUESC.
- How do we join this with construction, field service and cleaning in one firm?
- Three profiles of places and codes, one vehicle if that is the fact, separate KPO/KPOK templates. Job mechanics: construction-firm software, field service, cleaning firm. One Excel “waste” row is three lies. Your own panel has three cards. SaaS often has one.
- How do we order a quote and what comes back in 24 hours?
- You write to contact: number of generation sites, construction / field service / municipal, KPO and KPOK, integrator or Excel, whether there is an API, whether you stopped on 25 August. GESOFT (Paweł Matusiak) returns in 24 hours with one of three answers: keep the box; a mapping layer; your own bridge. No circular-economy slide. A list of what we do not replace (BDO.gov, the inspectorate, accounts, KSeF.gov, SENT/PUESC).
Describe your project