# Custom ERP for WooCommerce: Case Study of Precious Metals Dealer Goldmichi.de

> URL: https://4eck-media.de/en/blog/custom-erp-for-woocommerce-case-study-of-precious-metals-dealer-goldmichi-de/  
> Language: en  
> Description: A custom ERP for WooCommerce is an inventory-management system that is not connected to the shop through an interface, but runs directly in WordPress as its own module and maps th…

---

A custom **ERP for WooCommerce is an inventory-management system** that is not connected to the shop through an interface, but runs directly in WordPress as its own module and maps the business processes of a specific retailer. For the precious metals dealer [Goldmichi](https://www.goldmichi.de/) in Rostock, we developed exactly that: an ERP system that manages purchases, lots, FIFO allocation, tax treatment and realised profit while retaining WooCommerce as the inventory system of record for the shop.

Previously, the entire inventory management ran in an Excel workbook with seven worksheets. In our [case study of Goldmichi’s WooCommerce shop](https://4eck-media.de/en/blog/online-store-for-precious-metal-dealers-how-goldmichi-de-maps-market-prices-tax-rules-and-buy-back-in-woocommerce/), we announced the ERP as an outlook. This article shows why standard solutions such as Xentral, JTL-Wawi or VARIO would not have been suitable in this case, how the ERP is structured and which project decisions made the difference.

    
        
            
                                                    What we implemented for Goldmichi
                            
                            
                    
                        
- Custom ERP system as a module directly in WordPress and WooCommerce
- Lot-based inventory management with FIFO allocation and realised profit per sale
- Guided purchase process with live preview, tax treatment and shop connection
- Migration of Excel inventory management with seven worksheets through a controlled import
- Automatic order reconciliation, inventory reconciliation and opening inventory for the cutover
- Immutable audit log, system status and a 36-page administrator manual
                                            
                                    
                    
    

## Starting point: inventory management in Excel, shop in WooCommerce

Michael Bastian, known to his customers as Goldmichi, trades gold, silver, platinum and palladium at Wiener Platz in Rostock, including bullion coins, bars, jewellery and dental gold. The business has two sides, and that is precisely where the complexity lies: Goldmichi does not only sell; he also buys. Every in-store purchase is a distinct transaction with a seller, document, weight, fineness, acquisition cost and a tax classification that differs from item to item.

    
        
            
                
                    

![Goldmichi Online-Shop für Edelmetalle auf Tablet und Smartphone mit Goldbarren und Goldkette](https://4eck-media.de/wp-content/uploads/2026/07/goldmichi-onlineshop-edelmetalle-kaufen-tablet-smartphone.avif "Goldmichi Online-Shop – Gold, Silber und Edelmetalle bequem online kaufen")
                
            
        
    

Before the project, this entire inventory management process ran in an Excel workbook with seven worksheets. Each sheet had its own logic, developed over years out of day-to-day business:

- **Purchases & sales:** the main inventory with purchases, sales, documents and the basis for profit calculation
- **Sales of used goods:** sales of used goods with the related source documents
- **Wholesale purchasing:** wholesale purchases and their acquisition costs
- **Silver platinum differential:** silver and platinum positions subject to margin taxation
- **Silver standard:** silver positions subject to standard taxation
- **Used goods Ag Pt Pd:** used goods in silver, platinum and palladium
- **Purchases & sales SWAP:** barter transactions in which goods are exchanged for goods

The system worked because Goldmichi held it in his head. But it had three structural weaknesses. First, there was no connection to the online shop: if a customer sold a coin through WooCommerce at night, the Excel list did not know about it until someone entered it manually. Second, calculating profit required effort because acquisition costs and sales revenue were on different sheets and the allocation of which item sold from which purchase was done by hand. Third, nothing was traceable: an overwritten cell could not be reconstructed, and with several people in the shop this became a risk.

## Standard ERP or custom development? Why we decided against the interface

The obvious question is: why not connect a ready-made inventory-management system to WooCommerce? We examined established solutions such as Xentral, JTL-Wawi and VARIO. All three are mature for conventional retail with stable purchase prices and item-based taxation. They were not suitable for Goldmichi for four reasons, none of which is a shortcoming of those systems, but rather a characteristic of precious metals trading.

Precious metals trading does not have conventional items with fixed purchase prices. A 2021 Krugerrand ounce bought from a customer has a different acquisition cost from the same coin purchased from a wholesaler three weeks later. The selling price, on the other hand, is recalculated in the shop from the metal price every ten minutes. Standard ERPs assume stable prices; here, both are in motion.

Tax treatment is tied to the individual item, not the product category. The same silver coin may be subject to standard taxation or margin taxation depending on where it came from. An ERP that determines tax from the item master data cannot map this.

Purchases and sales run through the same inventory, but through completely different channels: purchasing in the shop, selling in the shop, wholesale and through the online shop. Allocating which purchased lot was used up by which sale is the basis for determining profit and must run automatically according to FIFO.

And finally, Goldmichi is not a corporation. A system that required a months-long rollout with training and then generated daily maintenance work would have paralysed the shop instead of relieving it. The solution had to live where the daily work already happens: in the WordPress backend.

## Goldmichi ERP: inventory management as a WordPress module in WooCommerce

We developed the ERP as a standalone module within WordPress, building on our experience as a [WooCommerce agency](https://4eck-media.de/en/competencies/build-a-woocommerce-online-shop-with-a-specialized-woocommerce-agency/). It does not sit alongside WooCommerce; it works with it. The central architectural decision was the separation of responsibilities. It is clearly defined which system maintains which data:

| Information | System of record | Rule |
| --- | --- | --- |
| Shop products, current sales prices, standard inventory | WooCommerce | Product presentation and availability continue to be maintained in WooCommerce |
| Purchases, acquisition costs, lots, movements, realised profit | Goldmichi ERP | Every purchase is recorded once; historical movements are never overwritten |
| Shop sales | WooCommerce to ERP | Completed orders are automatically allocated to ERP lots |
| Corrections | ERP review workflow | Always preview, review the effects, leave an audit trail |

WooCommerce therefore remains the inventory system of record for the shop. The ERP also knows the layer beneath it: which item was purchased from whom, when and at what price, and how much of it is still available. The dynamic price calculation from the shop project remains untouched and continues to be the only process that automatically writes sales prices.

**In brief:** Goldmichi ERP is a lot-based inventory-management and profit cockpit that runs as a module within WordPress and WooCommerce. Every purchase is recorded as a lot with acquisition cost, weight, fineness and tax treatment. Shop sales are automatically allocated via FIFO to the oldest suitable lot, creating the realised profit. All movements are immutable; corrections are made through counter-movements with an audit trail. WooCommerce remains the system of record for products, prices and shop inventory.

### An overview of the WooCommerce ERP modules

The ERP has its own navigation bar in the WordPress backend that reflects the daily workflow: purchases & sales, record purchase, inventory, reports, master data. Eleven areas sit behind it:

| Module | Purpose |
| --- | --- |
| Purchases & sales cockpit | Realised profit, inventory at acquisition cost, average margin, share of shop sales, notices about open orders and sold-out products |
| Manual transactions | Five purpose-specific workflows: record purchase, record sale, sales return, adjust inventory, cancel movement |
| Excel import | Controlled adoption of the existing workbook with preview, duplicate check and duplicate decision |
| Workbooks | The seven source sheets with line status, review notes and result totals |
| Master data | Parties (sellers, buyers, suppliers), documents, lots, movements |
| Reports | Inventory as of a reporting date and realised profit by period, traceable down to the individual lot |
| Reconciliations | Opening inventory (cutover), inventory reconciliation, order reconciliation |
| Product editor | Filter WooCommerce inventory, bulk changes with preview, saved views |
| Log | Immutable audit record with the before-and-after state of every change |
| Data protection & retention | Protected business data versus automatically redacted operating data |
| System status | 26 technical and operational checks with a traffic-light indicator before risky write actions |

    
        
            
                
                    

![Benutzerhandbuch zum ERP für WooCommerce](https://4eck-media.de/wp-content/uploads/2026/09/mockup-erp-woocommerce-handbuch.avif "Benutzerhandbuch zum ERP für WooCommerce")
                
            
        
    

A 36-page user manual explains the ERP system in detail and is an important aid especially for new employees who are not yet familiar with the processes.

## Inventory management with lots, FIFO and an immutable journal

Anyone who wants to understand the ERP needs to know three terms: lot, movement, document.

Every purchase creates a **lot**. A lot is a quantity of an item with a fixed acquisition cost, total weight, fineness, tax treatment and a reference to the document and the party from which the goods originate. Two Krugerrands from two purchases are two lots, even when they are sold in the shop under the same product.

Every change to a lot is a **movement**: receipt, sale, return, correction, cancellation. Movements are never deleted or overwritten. If something is wrong, the ERP writes a counter-movement that refers to the original. The original remains visible. That sounds like accounting, and that is exactly the intention: inventory results solely from the journal, not from an editable number field.

When a product is sold through the shop, the ERP automatically allocates the sale to the oldest suitable lot (**FIFO**). The realised profit is created from the stored sales price and that lot’s acquisition cost. Order reconciliation is idempotent: if an order is checked several times, it is still posted only once.

The result in the cockpit answers the three questions that matter in day-to-day business:

1. What was purchased and what is still available?
2. What was sold through WooCommerce or directly?
3. What profit was realised from the actual sales price and the recorded acquisition cost?

One detail we deliberately built in: unsold goods generate no profit, and inventory value is the historical acquisition cost, not the current metal value. The ERP is an operational cockpit and makes no claims that belong on the balance sheet.

## The purchase process in the ERP: five steps, one preview, no surprises

The most important daily transaction is purchasing. We built it as a guided workflow in which a live preview on the right shows at all times what would be posted next, without anything yet being written.

1. **Seller and document:** Select or create a party, confirm the date, enter the document number or have the ERP assign one.
2. **Item and quantity:** Description, precious metal, quantity, total weight in grams, total acquisition cost. Optionally acquisition cost per unit, incidental costs and price per gram, but only with documentary proof.
3. **WooCommerce connection:** Either link an existing shop product (the normal case; after posting, the quantity increases shop inventory), create a new product draft (with price parameters for the metal-price automation, but unpublished), or save the purchase only in the ERP.
4. **Tax and internal information:** Margin taxation, standard taxation or “unresolved”. Without proof, it remains “unresolved”. The ERP does not estimate tax treatment.
5. **Review and post:** The “effects of posting” box lists what will change. Posting becomes immutable only after explicit confirmation.

The status “unresolved” is not a stopgap, but intentional. In the Excel system, tax was set on entry, sometimes from memory. In the ERP, a specific classification may only be recorded with proof, and unresolved positions are visibly marked in documents and reports until accounting approves them.

## Migration from Excel to the ERP: seven worksheets, one controlled import

The Excel workbook was not only the current state; it was also the only source for the history. That is why we did not build the Excel import as a one-off script, but as a module with review stages.

The uploaded file initially remains a preview. Every line receives a status: ready, note, posting error, posted, duplicate review open, duplicate excluded or source error. Lists that have grown over years inevitably contain similar lines, and a decision was needed here that no algorithm can make alone: is this another real item or an accidental duplicate? Duplicate review presents these groups, and an administrator decides using the original document and physical inventory. The import posting is released only when all duplicates have been decided and all source errors clarified.

At the same time, **opening inventory** adopts the WooCommerce quantities already present in the shop as valued ERP lots. Where no verified acquisition cost exists, the lot remains marked “provisionally valued”, with zero profit, and is later updated through “correct acquisition cost”. Here too, the rule applies: shop inventory is not touched during the cutover.

## Operational safety: preview, audit log, emergency release

The ERP is used by several people, not all of them every day. That is why every write action follows the same pattern: input, preview of effects, explicit confirmation, immutable audit entry. For every event, the log shows object, action, source, user, request ID and the state before and after.

A special case shows how seriously we took the separation of systems: if an administrator changes the inventory of an ERP-managed product directly in the WooCommerce product editor, a dialogue appears. “Cancel” restores the ERP value and takes the user to purchasing. “Save emergency change” requires a reason, writes an audit entry and leaves the reconciliation open. The gap then appears in inventory reconciliation and can only be closed through a proper purchase or correction. The system permits the intervention, but it does not allow it to go unnoticed.

Before risky actions, the manual recommends checking **system status**: PHP version, WordPress, WooCommerce, database, ERP schema, HPOS, Action Scheduler and operational notes such as outdated metal-price data or an incomplete cutover. Red means: stop the write action and fix the problem first.

## What an operational ERP for WooCommerce deliberately is not

Honesty is part of a case study. Goldmichi ERP is an operational inventory-management and profit cockpit. It does not replace financial accounting or tax advice, DATEV, a cash register system, or legally binding invoicing or tax processes. The displayed tax treatments are operational labels that must be approved by accounting. The SWAP transaction, meaning goods exchanged for goods, is prepared in the system but locked until the specialist rules are fully defined. We prefer one transaction type fewer to one that could post incorrectly.

## Technical specifications of the WooCommerce ERP

| Area | Implementation |
| --- | --- |
| Platform | WordPress 7.1.1, WooCommerce 11.1, PHP 8.4 |
| Architecture | Standalone module with its own database tables, HPOS-compatible, background jobs via Action Scheduler |
| Inventory logic | Lot-based, FIFO allocation, immutable movement journal with counter-movements |
| Shop connection | WooCommerce remains the system of record, automatic order reconciliation, optional ERP inventory projection |
| Price management | Unchanged through the metal-price automation from the shop project |
| Migration | Excel import with preview, status classes, duplicate and repeat review, cutover through opening inventory |
| Traceability | Immutable audit log with before-and-after state, data-protection module with protected data classes |
| Documentation | 36-page administrator manual with daily checklist and troubleshooting table |
| Project scope | PLACEHOLDER: project duration and budget range |

## Learnings for ERP projects with WooCommerce

Four insights that can be transferred to other WooCommerce inventory-management projects:

- **Processes first, then software.** The seven Excel worksheets were not legacy baggage, but the most precise process description we could have received. We understood them line by line before a line of code was written.
- **Define responsibilities in writing.** The table “Which system maintains which data” was the project’s most important document. It prevented more discussion than any feature.
- **Never overwrite anything.** A journal with counter-movements costs a little more in development, but saves every discussion about how a number came to be.
- **Make uncertainty visible instead of estimating it away.** “Unresolved” and “provisionally valued” are statuses, not errors. A system that honestly states what it does not know is worth more in retail than one that always provides a number.

We describe the shop on which the ERP is built in our [case study of Goldmichi’s WooCommerce shop](https://4eck-media.de/en/blog/online-store-for-precious-metal-dealers-how-goldmichi-de-maps-market-prices-tax-rules-and-buy-back-in-woocommerce/). You can explore the online shop itself at [goldmichi.de](https://www.goldmichi.de/).

    
        
            

## More about WooCommerce, WordPress and custom development

                            

More shop projects and technical insights from our agency practice.

                    
        
                            
                    
                        [![Custom ERP for WooCommerce: Case Study of Precious Metals Dealer Goldmichi.de](https://4eck-media.de/wp-content/uploads/2026/09/goldmichi-erp-blog.avif "Custom ERP for WooCommerce: Case Study of Precious Metals Dealer Goldmichi.de")](https://4eck-media.de/en/blog/custom-erp-for-woocommerce-case-study-of-precious-metals-dealer-goldmichi-de/ "Custom ERP for WooCommerce: Case Study of Precious Metals Dealer Goldmichi.de")
                        
                            [Custom ERP for WooCommerce: Case Study of Precious Metals Dealer Goldmichi.de](https://4eck-media.de/en/blog/custom-erp-for-woocommerce-case-study-of-precious-metals-dealer-goldmichi-de/)
                                                            
                                    Matthias Petri
                                
                            

                                                    
                    
                

                            
                    
                        [![AI search page structure](https://4eck-media.de/wp-content/uploads/2026/09/ki-suche-checkliste-seitenaufbau.avif "AI search page structure")](https://4eck-media.de/en/blog/the-optimal-page-for-ai-search-structure-checklist-and-research-findings-for-2026/ "The optimal page for AI search: Structure, checklist and research findings for 2026")
                        
                            [The optimal page for AI search: Structure, checklist and research findings for 2026](https://4eck-media.de/en/blog/the-optimal-page-for-ai-search-structure-checklist-and-research-findings-for-2026/)
                                                            
                                    Matthias Petri
                                
                            

                                                    
                    
                

                            
                    
                        [![Markdown Negotiation beats LLMS.TXT](https://4eck-media.de/wp-content/uploads/2026/09/llms-txt-vs-markdown.avif "Markdown Negotiation beats LLMS.TXT")](https://4eck-media.de/en/blog/markdown-negotiation-beats-llms-txt/ "Markdown Negotiation beats llms.txt")
                        
                            [Markdown Negotiation beats llms.txt](https://4eck-media.de/en/blog/markdown-negotiation-beats-llms-txt/)
                                                            
                                    Matthias Petri
                                
                            

                                                    
                    
                

                            
                    
                        [![Old and new Genuss-Ferien websites on laptops with AccessibilityChecker scores of 24 and 90 points](https://4eck-media.de/wp-content/uploads/2026/10/genuss-ferien-website-relaunch-camping-mueritz-1.avif "Website relaunch for Genuss-Ferien: new web design and improved digital accessibility.")](https://4eck-media.de/en/blog/website-relaunch-for-genuss-ferien-a-holiday-feeling-that-begins-online/ "Website relaunch for Genuss-Ferien: A holiday feeling that begins online")
                        
                            [Website relaunch for Genuss-Ferien: A holiday feeling that begins online](https://4eck-media.de/en/blog/website-relaunch-for-genuss-ferien-a-holiday-feeling-that-begins-online/)
                                                            
                                    Matthias Petri
                                
                            

                                                    
                    
                

                    
    

    
        
                        
                                    

## FAQ: Custom ERP system for WooCommerce

                                
                                                                        
                                
                                    When is a custom ERP for WooCommerce worthwhile instead of a standard solution such as Xentral or JTL?
                                    
                                                                            
                                
                                
                                    

When business processes differ from the assumptions of ready-made systems: variable acquisition costs per item, tax treatment at line-item level, purchasing and sales through the same inventory, or prices that are continuously derived from external rates. Anyone mapping more workarounds than processes with a standard ERP is often better served by a custom development, and above all a safer one.

                                    
                                                                            
                                
                            
                                                    
                                
                                    Does a custom ERP run in WooCommerce or alongside it?
                                    
                                                                            
                                
                                
                                    

It runs in WooCommerce. WooCommerce remains the system of record for products, prices and shop inventory. The ERP knows the layer beneath it: purchases, lots, acquisition costs, movements and realised profit. The two systems are connected through order reconciliation.

                                    
                                                                            
                                
                            
                                                    
                                
                                    How do you migrate Excel inventory management to a WooCommerce ERP?
                                    
                                                                            
                                
                                
                                    

Through a controlled import with a preview. Each line receives a status; duplicates and repeats are presented and decided by a person using the original document. Posting happens only after all decisions have been made. Existing shop inventory is adopted separately through opening inventory as valued lots.

                                    
                                                                            
                                
                            
                                                    
                                
                                    What happens in the ERP if someone posts an error?
                                    
                                                                            
                                
                                
                                    

Nothing is deleted. For every error case, there is a purpose-specific transaction: return, correction with a reason or cancellation with a counter-movement. The original remains visible; the log shows before and after.

                                    
                                                                            
                                
                            
                                                    
                                
                                    Does a WooCommerce ERP replace accounting or tax advice?
                                    
                                                                            
                                
                                
                                    

No. It is an operational inventory-management and profit cockpit. Tax classifications are labels that must be approved by accounting. DATEV, the cash register system and legally binding invoicing processes remain outside it.

                                    
                                                                            
                                
                            
                                                    
                                
                                    Can a custom WooCommerce ERP be transferred to other industries?
                                    
                                                                            
                                
                                
                                    

The architecture can: lot-based inventory, FIFO, an immutable journal, a preview before every posting and a clear agreement on which system maintains which data. This works for any trade involving purchases, used goods, margin taxation or strongly fluctuating acquisition costs, such as antiques, watches, used technology or vehicles. The specialist logic is developed anew for every customer from their real processes.

                                    
                                                                            
                                
                            
                                                    
                                
                                    How long does it take to develop an ERP for WooCommerce?
                                    
                                                                            
                                
                                
                                    

PLACEHOLDER: information about the Goldmichi project duration. The duration depends less on the code than on process discovery and data migration. Those who have organised their Excel lists and documents shorten both phases considerably.

                                    
                                                                            
                                
                            
                                                            
            
        
    

## Inventory management still in Excel, but your shop already in WooCommerce?

We look at your processes and tell you honestly whether a custom solution makes sense or a standard connection is sufficient. Since 2010, 4eck Media has developed [WordPress](https://4eck-media.de/en/competencies/wordpress-agency-websites-that-work-for-your-business/) and [WooCommerce projects](https://4eck-media.de/en/competencies/build-a-woocommerce-online-shop-with-a-specialized-woocommerce-agency/) and is ranked number 1 among e-commerce agencies in the Werbeagentur.de scoring (as of: INSERT-DATE). [Talk to us about your ERP project.](https://4eck-media.de/en/contact/)
