File Service Portal for B&R Chiptuning
B&R Chiptuning runs a digital tuning file service for dealers: they upload a vehicle’s ECU file and receive a modified file in return. Batunet took over the portal for this in 2017, moved it onto a new Laravel foundation and has developed it ever since — with a dealer portal and sub-dealers, credit-based billing, checksum matching against the file library and an embeddable vehicle and pricing database. The business logic has stayed; the framework has been renewed several times.
The case in one minute.
- Client
- B&R Chiptuning — digital tuning file service for dealers. Billing is in euros; the interface is available in German and English.
- Role
- Technical development of the portal since 2017 — business logic, framework upgrades and APIs.
- Timeframe
- Version history from March 2017 to February 2026. We took over an existing Laravel application.
- User areas
- Separate areas for administration, dealers and sub-dealers; features such as file service, file check and the vehicle database are controlled via permissions.
- File service
- Order with original file, vehicle data, requested performance stage, flash tool and priority. The team processes the file and returns it, and the credit balance is charged.
- File check
- Checksum matching of an uploaded file against the tuning file library in object storage, run asynchronously via a queue. A match can be purchased directly with credits.
- Billing
- Multiple credit accounts, including time-limited subscription credits. Bookings with transaction history in locked database transactions, payment via PayPal and Sofortüberweisung, at times also Klarna, invoices as PDF.
- Embedding
- Vehicle and pricing database as a white-label subscription: bound to the dealer’s domain, in their colors, with their own markups per brand.
- Automation
- Weekly sync of the vehicle and performance catalog with an external data source, cleanup runs based on retention periods, subscription reminders and text messages to the team for new orders.
- Technical development
- Rebuilt on Laravel 5.4 in 2017, Laravel 5.8 in 2019, Laravel 10 with PHP 8.1 in 2025 — the steps after 2017 carried out while in production.
A portal that could never stand still.
At its core, B&R Chiptuning’s portal is a digital tuning file service: a dealer uploads a vehicle’s ECU file and receives a modified file in return. That one sentence describes the product completely — and explains nothing about the system it has become.
Because around this workflow, a business system has grown over the years: a dealer portal with sub-dealers and individual terms, credit accounts instead of a shopping cart, multiple payment methods, matching against the existing file library, an embeddable vehicle and pricing database, invoices, tickets, logging. Each of these extensions went into a system that was already running.
Batunet took over the portal in 2017. The application was already running on Laravel 5.1; in the same year, it was moved onto a new Laravel foundation and the business logic was moved into its own layer. Since then, the task was never to build the right thing once. It was to keep the portal evolvable over years — functionally and technically at the same time.
Three roles, one pricing structure.
The portal is aimed at dealers. They work with their own terms and in turn create sub-dealers who submit files through their own login. Administration processes the orders, maintains the library, catalog and prices, and sees everything. Which features an account may use — file service, file check, vehicle database — is controlled via permissions.
The price a dealer sees is derived from their price group, not from a single price list. On top of that comes the embeddable vehicle and pricing database: dealers subscribe to it and use it on their own website — bound to their domain, in their colors, with fixed or percentage markups per brand. The same logic, a different layout, no second system.
Rules like these are why a platform like this can’t be bought as off-the-shelf software. They aren’t complicated because someone made them complicated — they are the business.
- Dealers
- Dealer portal with their own price group, Creating their own sub-dealers, Embeddable vehicle and pricing database for their own website, Credits, subscriptions and invoices
- Sub-dealers
- Their own login, File upload and their own files, Created by the parent dealer
- Administration
- Processing file orders, Maintaining the tuning file library, Catalog and price maintenance, Excel exports, Ticket system, Activity log
Two paths to a tuning file.
A file can reach the portal in two ways, and the two are deliberately kept separate. The file check is a search: it checks whether a matching file already exists in the library. The file service is an order: the dealer uploads the original file with vehicle data, requested performance stage and the flash tool used; the team processes it and returns the finished file.
What matters here is what doesn’t happen. The system doesn’t read the uploaded ECU file, doesn’t identify a vehicle and doesn’t guess anything. The file check computes a checksum and compares it with the checksums of the library in object storage — it either finds an identical file or it doesn’t. Neither AI nor content analysis is involved, and that is intentional: a method that guesses would be the wrong method in a workflow that ends with a charge.
The library itself grows through administration. It uploads tuning files in chunks so that large files don’t fail on a timeout; storage is in object storage, not on the application server.

- 01
Upload
The dealer uploads the file; it is stored in object storage.
- 02
Matching
The file check runs as a background job via a queue and compares the checksum with the existing library.
- 03
Result
Matches and non-matches are sent to the dealer by email.
- 04
Purchase
A match can be purchased with credits and is then available for download for a limited time.
- 05
Order
Without a match, the path leads to the file service: an order with vehicle data, performance stage, flash tool and priority. The team is notified by text message and email.
- 06
Delivery
The team uploads the modified file and sets the price; the credit balance is charged and the dealer is notified by email.
Credits instead of a shopping cart.
Billing isn’t per order but via credits. That sounds simpler than a shopping cart, and it isn’t: there are several credit accounts side by side, including subscription credits that expire after thirty days. When a modified file is billed, a subscription credit is used first and only then regular credit.
Every booking is created as a transaction inside a database transaction with a row lock. Beneath the balance there is a transaction history, and two simultaneous operations can’t spend the same credit.
Top-ups are made via PayPal and Sofortüberweisung, at times also via Klarna — payment methods each with their own flows, their own callbacks and their own failure cases. After payment, the invoice record with a sequential number is created automatically; the PDF invoice is generated from it, including the notes for customers inside and outside the EU. In a system like this, a payment method added later is never just an integration: it has to fit into booking logic that already exists.
What happens without a request.
Part of the system works when nobody is watching. The scheduler runs a weekly sync of the vehicle catalog with stock and tuned performance figures against an external technical data source — structured hierarchically and with retries on errors. Interface maintenance here isn’t a one-time connection but ongoing work: connection, error handling, format changes.
On top of that come cleanup runs that purge files after defined retention periods, and reminders before a database subscription expires. Dealers are notified by email; when a new order comes in, a text message also goes to the team. Changes to the relevant objects are logged so it remains traceable who changed what and when.
We don’t name the data sources themselves. They belong to B&R Chiptuning’s business, not to this case.
Several framework generations, one running system.
A framework ages faster than the business that runs on it. When we took over in 2017, the portal ran on Laravel 5.1, and in the same year it was rebuilt on Laravel 5.4. Laravel 5.8 followed in 2019, and in 2025 the jump to Laravel 10 with PHP 8.1 — the versions in between were skipped, and the migrations were regenerated from the existing database schema.
That is the real point of this case. A rewrite is tempting because it gets rid of the past. But in doing so, it throws away exactly the business logic that has evolved over years: pricing rules, role logic, status flows, edge cases that nobody can fully describe anymore because they are written down nowhere except in the code. If you want to keep that logic, you have to move the technical foundation beneath it while it is in production.
That is exactly what happened here: the business logic has stayed and kept growing — sub-dealer subscriptions, prioritization, subscription credits, additional payment methods — while the technical foundation was renewed several times. What makes software long-lived isn’t that it is never touched. It’s that it can be touched.
- 01
2017
Takeover, rebuild on Laravel 5.4, dealer portal, payment methods, embeddable vehicle database, activity log.
- 02
2019
Laravel 5.8 and a new API for the vehicle database.
- 03
2020
File library moved to object storage, chunked uploads.
- 04
2021 to 2024
Ticket system, order prioritization, additional flash tools, Klarna, subscriptions for sub-dealers.
- 05
2025
Subscription credits, Laravel 10 with PHP 8.1, queue for file matching, new SMS provider.
- 06
2026
Bulk actions in administration and further refinements to the existing system.
Where this case connects.
Questions about this case
Do you develop custom chiptuning software?
Yes. B&R Chiptuning’s portal is exactly that: file upload, a tuning file library with checksum matching, a dealer portal, credit-based billing and payment processing — not customized off-the-shelf software, but a system that has grown with the business since 2017.
How does the automatic matching of uploaded files work?
Through a checksum comparison against the existing file library. If the system finds an identical file, it can be purchased with credits; if it finds none, the path leads to the file service, where the team processes the file. By design, no file content is interpreted and no vehicle is identified — in a workflow that ends with a charge, a method that guesses would be the wrong one.
Can dealers and sub-dealers with their own terms be modeled?
Yes, and that is a core part of this system. Administration, dealers and sub-dealers work in separate areas of the same portal. Dealers create their own sub-dealers, work with their own price group and can use a vehicle and pricing database as a white-label component on their own website.
Are the credit system and payment processing part of the scope?
Yes. Multiple credit accounts including time-limited subscription credits, a transaction history, payment via PayPal and Sofortüberweisung, and automatically generated invoices with PDF output are part of the business logic, not a connected third-party system.
What do you do when the framework of a production platform is outdated?
We carry it forward instead of replacing it. After the 2017 rebuild, this portal was modernized through Laravel 5.8 up to Laravel 10 while it stayed in production. A big-bang rewrite is the more expensive path: it throws away the business logic built up over time, which is where the real value lies.
Since when has Batunet been working on B&R Chiptuning’s portal?
Since 2017. We took over an existing Laravel application; the version history since then runs to February 2026 and covers the 2017 rebuild, two further framework jumps and numerous functional extensions.
Continue your engineering journey.
Related concepts, decisions, playbooks and perspectives — as one connected path, not a list of links.
Let’s talk about your project.
No sales team. A direct conversation with the management.
