[{"data":1,"prerenderedAt":983},["ShallowReactive",2],{"blog-article-en-custom-erp-wholesale-distribution":3,"blog-related-en-custom-erp-wholesale-distribution":666},{"_path":4,"_dir":5,"_draft":6,"_partial":6,"_locale":7,"title":8,"description":9,"seoTitle":10,"locale":7,"translationSlug":11,"date":12,"updated":13,"image":14,"author":15,"tags":18,"takeaways":23,"faq":29,"body":51,"_type":660,"_id":661,"_source":662,"_file":663,"_stem":664,"_extension":665},"/blog/custom-erp-wholesale-distribution","blog",false,"en","Custom ERP for Wholesalers and Distributors: Where the Margin Goes","Customer pricing, volume rebates, WhatsApp orders and credit limits: where an off-the-shelf ERP fails a wholesaler, where AI helps and what custom costs.","ERP for Wholesale Distributors: When to Build Custom","erp-distribuicao-grossista-medida","2026-09-26","2026-11-14","/images/blog/erp-distribuicao-grossista.jpg",{"name":16,"role":17},"Pedro Santos","Principal Software Architect",[19,20,21,22],"Logistics","ERP","Custom Software","B2B Sales",[24,25,26,27,28],"In a wholesale business, an off-the-shelf ERP rarely fails at accounting or at issuing invoices. It fails in the commercial layer: the cascade of customer-specific prices, orders arriving through several channels, and working out the margin that is left after rebates, free goods and delivery.","The pricing engine is the heart of the project. It has to apply the rules in a written order and explain, line by line, why a price is what it is, and it is validated by recalculating real invoices before it goes live.","Certified invoicing does not need replacing. The custom ERP prepares the order and the price and integrates with the tax-certified invoicing software, which keeps issuing invoices and delivery notes and handling the tax reporting.","AI has three concrete uses for a distributor: turning WhatsApp messages and emails into draft orders, suggesting each customer's usual order, and flagging when a customer stops buying a product family.","A commercial core costs between €30,000 and €50,000 and an ERP with warehouse management between €50,000 and €80,000. For a mid-sized wholesaler the project takes 18 to 26 weeks, including a period running in parallel with the current system.",[30,33,36,39,42,45,48],{"q":31,"a":32},"Is an off-the-shelf ERP not enough for a distribution business?","It is, when the catalogue is short, the price list is much the same for everyone and orders come in through one or two channels. It stops being enough when the price matrix lives in a separate spreadsheet, invoices get corrected with credit notes and nobody can tell you the real margin per customer without combining data from two systems.",{"q":34,"a":35},"Do we have to stop using our certified invoicing software?","No, and we do not usually recommend it. The custom ERP handles pricing, orders, the warehouse and margin, and sends the documents to the tax-certified software the company already uses, which keeps issuing invoices and delivery notes and handling the tax reporting. The final design should always be confirmed with the company's accountant.",{"q":37,"a":38},"Can AI really read orders that arrive over WhatsApp?","It can turn the message, the photo of a handwritten list or the attached spreadsheet into a draft order with references from your catalogue, and that is where it saves time. At first it should not place orders on its own: someone checks the cases where the system is unsure, and that volume falls as the corrections teach it how each customer writes.",{"q":40,"a":41},"How much does an ERP for wholesale distribution cost, and how long does it take?","A commercial core, with products, customers, the price matrix and orders, comes in between €30,000 and €50,000. With warehouse management, picking and returns, between €50,000 and €80,000, and with multiple warehouses and full traceability, from €80,000. For a mid-sized wholesaler it takes 18 to 26 weeks, including migration and a parallel run.",{"q":43,"a":44},"Can the sales reps work without a signal?","They should be able to, and it is a requirement we write down at the discovery stage. The app stores the catalogue, the price list and each customer's history locally, accepts the order offline and syncs when the connection comes back, with defined rules for what happens if stock or the credit limit changed in the meantime.",{"q":46,"a":47},"Could a customer extranet replace this project?","It complements it rather than replacing it. An extranet with online ordering lets your most organised customers order on their own, but it needs a reliable pricing engine and credit rules behind it, and many of your restaurant or building-site customers will keep sending messages. That is why the usual order is the commercial core first and the extranet second.",{"q":49,"a":50},"Does a prototype built with ChatGPT, Claude or Gemini lower the price?","Usually yes. A working prototype of the order screen or the price matrix shows the rules the company wants and shortens discovery. User accounts, real data, a connection to the ERP and invoicing, backups and testing are still missing, and the pricing engine always has to be validated against real invoices.",{"type":52,"children":53,"toc":634},"root",[54,62,67,72,79,84,90,95,100,106,111,156,162,169,174,179,185,190,195,201,206,211,217,231,236,241,247,252,263,273,283,296,302,307,320,326,336,346,364,370,376,381,387,392,398,403,409,414,420,525,538,558,564,569,574,580,613],{"type":55,"tag":56,"props":57,"children":58},"element","p",{},[59],{"type":60,"value":61},"text","Thursday, half past eight in the morning, at a distributor with three warehouses\nand around six thousand product lines. The person who handles orders has thirty\nor so unread WhatsApp messages, half of them photos of lists scribbled on a\nrestaurant counter. There are four emails with spreadsheets attached, each in\nits own format, and the phone has already rung twice with someone asking for\n\"same as last week, but two more cases of olive oil\".",{"type":55,"tag":56,"props":63,"children":64},{},[65],{"type":60,"value":66},"Last week, an invoice went out at the standard list price instead of the agreed\none, because the summer promotion overlapped with the product-family discount\nand nobody knew which of the two should win. It was fixed with a credit note.\nAt the end of the month, management sees healthy revenue figures per customer,\nwithout being able to say how much was actually left after the year-end rebate,\nthe free goods and three weekly deliveries forty kilometres away for orders worth\ntwo hundred euros.",{"type":55,"tag":56,"props":68,"children":69},{},[70],{"type":60,"value":71},"Anyone running a distribution business recognises every part of that scene. They\nalso recognise that none of it is an accounting problem.",{"type":55,"tag":73,"props":74,"children":76},"h2",{"id":75},"short-answer",[77],{"type":60,"value":78},"Short answer",{"type":55,"tag":56,"props":80,"children":81},{},[82],{"type":60,"value":83},"A wholesaler needs a custom ERP when the price matrix lives in a separate\nspreadsheet, invoices get corrected with credit notes and nobody can state the\nreal margin per customer without combining data from two systems. You do not\nusually replace everything: you build the commercial layer (pricing, orders,\ncredit and margin), connected to the tax-certified invoicing software the company\nalready uses. A commercial core costs between €30,000 and €50,000, an ERP with\nwarehouse management between €50,000 and €80,000, and for a mid-sized wholesaler\nthe project takes 18 to 26 weeks, including the parallel run with the current\nsystem.",{"type":55,"tag":73,"props":85,"children":87},{"id":86},"the-problem-sits-in-the-commercial-layer",[88],{"type":60,"value":89},"The problem sits in the commercial layer",{"type":55,"tag":56,"props":91,"children":92},{},[93],{"type":60,"value":94},"In a wholesale business, the invoice is usually fine from a tax point of view.\nWhat goes wrong is what happens before and after it: how you arrive at the\nright price for that customer, on that day, at that quantity; how the order\ncomes in, wherever it comes from; and the sum of what is left once everything\nthat happens outside the invoice is accounted for. This is where a product\ndesigned to serve every sector stops keeping up with a business that lives on\nmargins of a few percentage points.",{"type":55,"tag":56,"props":96,"children":97},{},[98],{"type":60,"value":99},"So for a distributor, a custom ERP almost always means building that commercial\nand operational layer, connected to the certified invoicing software the company\nalready has. It is not about replacing everything. It is about putting into a\nsystem the rules that today live in the sales director's head and in three\nspreadsheets.",{"type":55,"tag":73,"props":101,"children":103},{"id":102},"signs-your-distribution-business-has-outgrown-its-system",[104],{"type":60,"value":105},"Signs your distribution business has outgrown its system",{"type":55,"tag":56,"props":107,"children":108},{},[109],{"type":60,"value":110},"Two or three of these are normal. Five or more mean the system is no longer\nkeeping up with the business:",{"type":55,"tag":112,"props":113,"children":114},"ul",{},[115,121,126,131,136,141,146,151],{"type":55,"tag":116,"props":117,"children":118},"li",{},[119],{"type":60,"value":120},"each customer's price list, or at least the exceptions, lives in a spreadsheet\noutside the ERP;",{"type":55,"tag":116,"props":122,"children":123},{},[124],{"type":60,"value":125},"there are credit notes every month for wrong prices, not for returns;",{"type":55,"tag":116,"props":127,"children":128},{},[129],{"type":60,"value":130},"nobody can name your least profitable customer without a week in Excel;",{"type":55,"tag":116,"props":132,"children":133},{},[134],{"type":60,"value":135},"the annual volume rebate is calculated by hand in January and always surprises\nsomeone;",{"type":55,"tag":116,"props":137,"children":138},{},[139],{"type":60,"value":140},"orders arriving by WhatsApp and email are retyped into the system one by one;",{"type":55,"tag":116,"props":142,"children":143},{},[144],{"type":60,"value":145},"sales reps phone the office to check stock, price or a customer's credit;",{"type":55,"tag":116,"props":147,"children":148},{},[149],{"type":60,"value":150},"a customer on credit hold is only spotted once the goods are already on the\nlorry;",{"type":55,"tag":116,"props":152,"children":153},{},[154],{"type":60,"value":155},"a batch recall means digging through paper delivery notes to find out who\nreceived it.",{"type":55,"tag":73,"props":157,"children":159},{"id":158},"where-an-off-the-shelf-erp-stumbles-in-wholesale",[160],{"type":60,"value":161},"Where an off-the-shelf ERP stumbles in wholesale",{"type":55,"tag":163,"props":164,"children":166},"h3",{"id":165},"the-right-price-is-a-cascade-not-a-number",[167],{"type":60,"value":168},"The right price is a cascade, not a number",{"type":55,"tag":56,"props":170,"children":171},{},[172],{"type":60,"value":173},"The price on an order line is the result of a sequence of rules: the base price,\nthe price list for the customer or the buying group they belong to, the\nproduct-family discount, the quantity break, the dated promotion, the net price\nnegotiated for a handful of items, the free-goods deal of the \"twelve plus one\"\nkind and, at the end of the year, the rebate on volume. Each rule on its own is\nsimple. The difficulty is in the combination: does the promotion stack on top of\nthe family discount or replace it? Does the negotiated net price ignore the\npromotion, or does the customer get whichever is better?",{"type":55,"tag":56,"props":175,"children":176},{},[177],{"type":60,"value":178},"Most often, this rule was never written down. A custom system forces you to\nwrite the order of precedence once, with a named person who decides, and\nrecords on every line which rule won. When a customer disputes\na price, the answer is on the screen instead of requiring an investigation.",{"type":55,"tag":163,"props":180,"children":182},{"id":181},"the-real-margin-only-shows-up-after-the-invoice",[183],{"type":60,"value":184},"The real margin only shows up after the invoice",{"type":55,"tag":56,"props":186,"children":187},{},[188],{"type":60,"value":189},"The invoice shows the gross margin on the line. The margin management cares about\ndeducts the rebate owed, free goods, the cost to serve (number of deliveries,\ndistance, average order value), returns and the payment terms the customer\nactually keeps to.",{"type":55,"tag":56,"props":191,"children":192},{},[193],{"type":60,"value":194},"Picture two customers with the same annual revenue. One takes a pallet a week\nand pays at 30 days. The other gets three small deliveries a week, returns goods\noften and pays at 90. On the sales report they look identical; in the real\nnumbers, one is subsidising the other. A custom ERP runs this calculation by\ncustomer, route and sales rep every month, with the rebate accrued month by month\nso that January does not look like a disaster.",{"type":55,"tag":163,"props":196,"children":198},{"id":197},"orders-arriving-from-every-direction-and-reps-without-a-signal",[199],{"type":60,"value":200},"Orders arriving from every direction, and reps without a signal",{"type":55,"tag":56,"props":202,"children":203},{},[204],{"type":60,"value":205},"Phone, WhatsApp, email with a PDF, a spreadsheet exported from the customer's own\nsystem, the rep out in the field. Forcing everyone onto a single channel works\nwith the larger, more organised customers. It does not work with the owner of a\ncafé or a site foreman, and insisting on it costs sales. The realistic answer is\na single order inbox, where everything lands, is matched to the customer and goes\nthrough the same pricing, credit and approval flow.",{"type":55,"tag":56,"props":207,"children":208},{},[209],{"type":60,"value":210},"On the sales side, the app has to show the catalogue, that customer's price,\nstock, the credit limit and the order history, and accept the order in a cellar\nor on a building site with no coverage. That means deciding in advance what\nhappens at sync time if stock ran out or the customer was put on hold that\nmorning.",{"type":55,"tag":163,"props":212,"children":214},{"id":213},"routes-batches-returns-and-credit",[215],{"type":60,"value":216},"Routes, batches, returns and credit",{"type":55,"tag":56,"props":218,"children":219},{},[220,222,229],{"type":60,"value":221},"We are not talking about fleet management here, which is a separate system (and\none we cover in the comparison of ",{"type":55,"tag":223,"props":224,"children":226},"a",{"href":225},"/en/blog/custom-erp-vs-saas-logistics",[227],{"type":60,"value":228},"custom ERP and SaaS in logistics",{"type":60,"value":230},"), but\nabout the commercial rules that depend on the route: delivery days by area, the\ncut-off time for next-day dispatch, the restaurants that only take deliveries\nbefore eleven, the building sites that open at seven, the minimum order value\nbelow which a delivery does not pay for itself.",{"type":55,"tag":56,"props":232,"children":233},{},[234],{"type":60,"value":235},"In food and drink, dispatching by expiry date and recording which batch went to\neach customer are not optional: in a recall you need to know within minutes where\nevery batch is. There are returnable crates and pallets, and in electrical\nsupplies or spare parts there are returns for defects, for errors and under\nwarranty, each with its own stock and credit treatment.",{"type":55,"tag":56,"props":237,"children":238},{},[239],{"type":60,"value":240},"A credit limit usually exists, but it gets checked late, when the invoice is\nissued. The useful rule is to check it when the order is placed, with three\npossible outcomes (go ahead, go ahead with a warning, hold) and a named person\nwho can release it, with a record of who authorised it.",{"type":55,"tag":73,"props":242,"children":244},{"id":243},"where-artificial-intelligence-comes-in-in-concrete-terms",[245],{"type":60,"value":246},"Where artificial intelligence comes in, in concrete terms",{"type":55,"tag":56,"props":248,"children":249},{},[250],{"type":60,"value":251},"There are three uses of AI that work for a distributor today and pay their way.",{"type":55,"tag":56,"props":253,"children":254},{},[255,261],{"type":55,"tag":256,"props":257,"children":258},"strong",{},[259],{"type":60,"value":260},"Reading orders from WhatsApp, email and photos.",{"type":60,"value":262}," The AI turns \"6 cs of the\nsmall ones and 2 crates of the litre\" into a draft order with the right catalogue\nreferences for that customer, with a confidence level on every line. A person\nonly checks what was left uncertain, and each correction is saved as a mapping\nfor that customer, so the checking shrinks over time.",{"type":55,"tag":56,"props":264,"children":265},{},[266,271],{"type":55,"tag":256,"props":267,"children":268},{},[269],{"type":60,"value":270},"Suggesting the usual order.",{"type":60,"value":272}," Based on order history, the system proposes to\nthe sales rep, or to the customer through an extranet, their usual basket\nadjusted for frequency and season. It stops the item the customer buys every\nmonth from being forgotten.",{"type":55,"tag":56,"props":274,"children":275},{},[276,281],{"type":55,"tag":256,"props":277,"children":278},{},[279],{"type":60,"value":280},"Flagging when a customer starts to drift away.",{"type":60,"value":282}," A customer who stops buying\naltogether gets noticed. The one that costs money is the customer who still buys\ncoffee but stopped buying cleaning products six weeks ago, because they now get\nthem elsewhere. Detecting drops by product family against that customer's own\npattern, and putting the list in front of the sales rep on Monday morning, is one\nof the uses with the easiest return to measure.",{"type":55,"tag":56,"props":284,"children":285},{},[286,288,294],{"type":60,"value":287},"None of these works on messy data. If the same product was created three times,\nthe AI will pick the wrong one without hesitating. That is why AI usually\ncomes after the pricing engine and the clean-up of the product master file. If\nthe current ERP is good enough and the only problem is order entry, AI can be connected to the existing system without changing ERP, using the checks we describe in the article on ",{"type":55,"tag":223,"props":289,"children":291},{"href":290},"/en/blog/ai-document-processing-invoices-orders",[292],{"type":60,"value":293},"AI for reading PDF invoices and orders",{"type":60,"value":295},".",{"type":55,"tag":73,"props":297,"children":299},{"id":298},"certified-invoicing-integrate-do-not-replace",[300],{"type":60,"value":301},"Certified invoicing: integrate, do not replace",{"type":55,"tag":56,"props":303,"children":304},{},[305],{"type":60,"value":306},"In Portugal, a business the size of a wholesaler generally has to issue its\ninvoices and other tax-relevant documents through software certified by the Tax\nand Customs Authority (AT). Since 2023 all of those documents carry a unique\ndocument code (ATCUD), and invoices are reported to the AT. Transport documents\nhave to be reported before the goods start moving (smaller businesses below a\nturnover threshold are exempt), and the AT returns an identification code that\nis linked to the delivery note.",{"type":55,"tag":56,"props":308,"children":309},{},[310,312,318],{"type":60,"value":311},"Building and certifying your own invoicing program is rarely worth it for a\ndistributor. The design we recommend is different: the custom ERP works out the\nprice, checks credit, prepares the load and sends the document, through an\nintegration, to the certified software the company already uses, which issues it\nand handles the reporting. The ERP gets the number and codes back and keeps the\nlink between order, delivery note and invoice. It is the same logic we describe\nin the comparison between ",{"type":55,"tag":223,"props":313,"children":315},{"href":314},"/en/blog/custom-erp-crm-vs-primavera-phc-sap",[316],{"type":60,"value":317},"custom software and Primavera, PHC, ARTSOFT or\nSAP",{"type":60,"value":319},": keep the product where it is\nstrong and build only the missing layer. The tax side of the design should\nalways be validated with the company's accountant.",{"type":55,"tag":73,"props":321,"children":323},{"id":322},"three-wrong-answers",[324],{"type":60,"value":325},"Three wrong answers",{"type":55,"tag":56,"props":327,"children":328},{},[329,334],{"type":55,"tag":256,"props":330,"children":331},{},[332],{"type":60,"value":333},"One more customisation to the current ERP.",{"type":60,"value":335}," It works for a while, until every\nproduct update breaks something and only one person at the implementation partner\nknows how it was put together.",{"type":55,"tag":56,"props":337,"children":338},{},[339,344],{"type":55,"tag":256,"props":340,"children":341},{},[342],{"type":60,"value":343},"Switching ERP over a weekend.",{"type":60,"value":345}," Replacing a wholesaler's core system in a single\ncut-over is the most expensive mistake in this kind of project. Operations do not\nstop for the migration, and a wrong price shows up on the very first invoice.",{"type":55,"tag":56,"props":347,"children":348},{},[349,354,356,362],{"type":55,"tag":256,"props":350,"children":351},{},[352],{"type":60,"value":353},"Launching an extranet and hoping WhatsApp goes away.",{"type":60,"value":355}," An ",{"type":55,"tag":223,"props":357,"children":359},{"href":358},"/en/solucoes/extranets-b2b",[360],{"type":60,"value":361},"extranet with online\nordering",{"type":60,"value":363}," is useful for customers who want to serve\nthemselves and fits well as a second phase. Without a reliable pricing engine\nbehind it, all it does is show the customer the same mistakes faster.",{"type":55,"tag":73,"props":365,"children":367},{"id":366},"from-pricing-rules-to-the-parallel-run",[368],{"type":60,"value":369},"From pricing rules to the parallel run",{"type":55,"tag":163,"props":371,"children":373},{"id":372},"_1-free-diagnosis",[374],{"type":60,"value":375},"1. Free diagnosis",{"type":55,"tag":56,"props":377,"children":378},{},[379],{"type":60,"value":380},"Around thirty minutes to understand the operation, the systems and where the\nmanual work is. There is no obligation to go ahead, and if your current system is\ngood enough, we will tell you.",{"type":55,"tag":163,"props":382,"children":384},{"id":383},"_2-discovery-and-proposal",[385],{"type":60,"value":386},"2. Discovery and proposal",{"type":55,"tag":56,"props":388,"children":389},{},[390],{"type":60,"value":391},"About three weeks. We write down the pricing cascade with the sales director,\nrule by rule. We collect a month of real orders from every channel, messages and\nphotos included, and map the integrations with invoicing, accounting, warehouse\nhandheld terminals and carriers. At the end, the scope, timeline and investment\nare fixed.",{"type":55,"tag":163,"props":393,"children":395},{"id":394},"_3-build-validated-against-real-invoices",[396],{"type":60,"value":397},"3. Build, validated against real invoices",{"type":55,"tag":56,"props":399,"children":400},{},[401],{"type":60,"value":402},"Two-week cycles, each with a demo. The pricing engine recalculates months of\ninvoices already issued, and every difference is reviewed with the sales team:\neither it is a bug in the new system, a rule nobody had written down, or an old\nmistake that was being paid for without anyone noticing.",{"type":55,"tag":163,"props":404,"children":406},{"id":405},"_4-parallel-run-and-go-live",[407],{"type":60,"value":408},"4. Parallel run and go-live",{"type":55,"tag":56,"props":410,"children":411},{},[412],{"type":60,"value":413},"Both systems run side by side for an agreed period, products, customers,\nbalances and history are migrated, and the team is trained on their own day-to-day\nwork. Three months of support are included, and the code and infrastructure\nbelong to the company.",{"type":55,"tag":73,"props":415,"children":417},{"id":416},"what-it-costs-and-how-long-it-takes",[418],{"type":60,"value":419},"What it costs and how long it takes",{"type":55,"tag":421,"props":422,"children":423},"table",{},[424,448],{"type":55,"tag":425,"props":426,"children":427},"thead",{},[428],{"type":55,"tag":429,"props":430,"children":431},"tr",{},[432,438,443],{"type":55,"tag":433,"props":434,"children":435},"th",{},[436],{"type":60,"value":437},"Scope",{"type":55,"tag":433,"props":439,"children":440},{},[441],{"type":60,"value":442},"What it includes",{"type":55,"tag":433,"props":444,"children":445},{},[446],{"type":60,"value":447},"Investment",{"type":55,"tag":449,"props":450,"children":451},"tbody",{},[452,471,489,507],{"type":55,"tag":429,"props":453,"children":454},{},[455,461,466],{"type":55,"tag":456,"props":457,"children":458},"td",{},[459],{"type":60,"value":460},"Commercial core",{"type":55,"tag":456,"props":462,"children":463},{},[464],{"type":60,"value":465},"Products, customers, price matrix, orders and link to invoicing",{"type":55,"tag":456,"props":467,"children":468},{},[469],{"type":60,"value":470},"€30,000 to €50,000",{"type":55,"tag":429,"props":472,"children":473},{},[474,479,484],{"type":55,"tag":456,"props":475,"children":476},{},[477],{"type":60,"value":478},"ERP with warehouse",{"type":55,"tag":456,"props":480,"children":481},{},[482],{"type":60,"value":483},"Adds picking, checking, handheld terminals and returns",{"type":55,"tag":456,"props":485,"children":486},{},[487],{"type":60,"value":488},"€50,000 to €80,000",{"type":55,"tag":429,"props":490,"children":491},{},[492,497,502],{"type":55,"tag":456,"props":493,"children":494},{},[495],{"type":60,"value":496},"Multi-warehouse ERP",{"type":55,"tag":456,"props":498,"children":499},{},[500],{"type":60,"value":501},"Several warehouses, transfers, batches and full traceability",{"type":55,"tag":456,"props":503,"children":504},{},[505],{"type":60,"value":506},"from €80,000",{"type":55,"tag":429,"props":508,"children":509},{},[510,515,520],{"type":55,"tag":456,"props":511,"children":512},{},[513],{"type":60,"value":514},"Extranet with ordering (add-on)",{"type":55,"tag":456,"props":516,"children":517},{},[518],{"type":60,"value":519},"Customer ordering written into the ERP, credit limits and approvals",{"type":55,"tag":456,"props":521,"children":522},{},[523],{"type":60,"value":524},"€25,000 to €45,000",{"type":55,"tag":56,"props":526,"children":527},{},[528,530,536],{"type":60,"value":529},"For a mid-sized wholesaler, the project takes between 18 and 26 weeks, covering\ndiscovery, build, migration and the parallel run (we explain where these\ntimelines come from in ",{"type":55,"tag":223,"props":531,"children":533},{"href":532},"/en/blog/how-long-a-custom-software-project-takes",[534],{"type":60,"value":535},"how long a custom software project takes",{"type":60,"value":537},"). The figure goes up with the\nreal complexity of the pricing cascade and with the number of systems to\nintegrate, especially if they have no documented way of exchanging data. It\ncomes down with a tidy product master file and with someone in the company who\nhas the authority to decide commercial rules without waiting for the next\nmeeting.",{"type":55,"tag":56,"props":539,"children":540},{},[541,543,549,551,557],{"type":60,"value":542},"It also comes down when the company already has a working prototype, built in\nChatGPT, Claude or Gemini, of the order screen or the price matrix, which is\nincreasingly common. It shortens discovery, although what no prototype brings is\nstill missing: user accounts, real data, a connection to the ERP and invoicing,\nbackups and testing. That is the work of ",{"type":55,"tag":223,"props":544,"children":546},{"href":545},"/en/solucoes/aplicacoes-feitas-com-ia-em-producao",[547],{"type":60,"value":548},"taking AI-built applications into\nproduction",{"type":60,"value":550},". To read any\nproposal, ours or someone else's, we put together a ",{"type":55,"tag":223,"props":552,"children":554},{"href":553},"/en/blog/custom-software-quote-what-it-should-include",[555],{"type":60,"value":556},"line-by-line example of what\na custom software quote should include",{"type":60,"value":295},{"type":55,"tag":73,"props":559,"children":561},{"id":560},"when-an-off-the-shelf-erp-is-enough",[562],{"type":60,"value":563},"When an off-the-shelf ERP is enough",{"type":55,"tag":56,"props":565,"children":566},{},[567],{"type":60,"value":568},"If the catalogue is small, the price list is much the same for everyone and\norders come in through one or two channels, an off-the-shelf ERP with a good\nsales module will do the job, for a fraction of this investment. It is also not\nworth it when the problem is purely one of configuration: there are companies\nusing half of the distribution features they already pay for, and the right\nfirst step is to talk to the product's partner.",{"type":55,"tag":56,"props":570,"children":571},{},[572],{"type":60,"value":573},"A custom system makes sense when commercial complexity is itself the competitive\nadvantage: prices negotiated customer by customer, terms a competitor cannot\nreplicate, a service that depends on delivering at exactly the right time.",{"type":55,"tag":73,"props":575,"children":577},{"id":576},"questions-to-answer-before-going-ahead",[578],{"type":60,"value":579},"Questions to answer before going ahead",{"type":55,"tag":112,"props":581,"children":582},{},[583,588,593,598,603,608],{"type":55,"tag":116,"props":584,"children":585},{},[586],{"type":60,"value":587},"Who decides the order of the pricing rules when two of them conflict?",{"type":55,"tag":116,"props":589,"children":590},{},[591],{"type":60,"value":592},"How many credit notes for wrong prices were issued in the last twelve months,\nand for how much?",{"type":55,"tag":116,"props":594,"children":595},{},[596],{"type":60,"value":597},"What share of orders comes in by WhatsApp, email and phone?",{"type":55,"tag":116,"props":599,"children":600},{},[601],{"type":60,"value":602},"Should the margin per customer include delivery cost and the actual payment\nterms?",{"type":55,"tag":116,"props":604,"children":605},{},[606],{"type":60,"value":607},"Which certified invoicing software will issue the documents, and does it offer\nan integration?",{"type":55,"tag":116,"props":609,"children":610},{},[611],{"type":60,"value":612},"Is the product master file clean, or are there duplicate references and\nproducts filed under the wrong family?",{"type":55,"tag":56,"props":614,"children":615},{},[616,618,624,626,632],{"type":60,"value":617},"Our ",{"type":55,"tag":223,"props":619,"children":621},{"href":620},"/en/solucoes/erp-distribuicao-grossista",[622],{"type":60,"value":623},"ERP for wholesale distribution",{"type":60,"value":625}," is\nexactly this work: putting into a system the commercial rules that today live in\nspreadsheets and in the memory of whoever has been with the company longest,\nconnected to certified invoicing and with reliable data for AI to work on. If\nthe opening scene sounded familiar, you can ",{"type":55,"tag":223,"props":627,"children":629},{"href":628},"/en/contacto",[630],{"type":60,"value":631},"request a free\ndiagnosis",{"type":60,"value":633},". In a first conversation, with no commitment, we work out where margin is leaking and whether building makes sense, and only then talk about a proposal.",{"title":635,"searchDepth":636,"depth":636,"links":637},"",3,[638,640,641,642,648,649,650,651,657,658,659],{"id":75,"depth":639,"text":78},2,{"id":86,"depth":639,"text":89},{"id":102,"depth":639,"text":105},{"id":158,"depth":639,"text":161,"children":643},[644,645,646,647],{"id":165,"depth":636,"text":168},{"id":181,"depth":636,"text":184},{"id":197,"depth":636,"text":200},{"id":213,"depth":636,"text":216},{"id":243,"depth":639,"text":246},{"id":298,"depth":639,"text":301},{"id":322,"depth":639,"text":325},{"id":366,"depth":639,"text":369,"children":652},[653,654,655,656],{"id":372,"depth":636,"text":375},{"id":383,"depth":636,"text":386},{"id":394,"depth":636,"text":397},{"id":405,"depth":636,"text":408},{"id":416,"depth":639,"text":419},{"id":560,"depth":639,"text":563},{"id":576,"depth":639,"text":579},"markdown","content:en:blog:custom-erp-wholesale-distribution.md","content","en/blog/custom-erp-wholesale-distribution.md","en/blog/custom-erp-wholesale-distribution","md",[667,674,683,692,700,709,716,723,730,737,744,751,759,766,773,781,787,793,800,807,814,821,827,835,841,848,855,862,870,878,885,892,898,905,912,919,925,933,940,947,954,961,968,976],{"_path":668,"title":669,"description":670,"date":13,"image":671,"tags":672},"/blog/custom-software-quote-what-it-should-include","What a Custom Software Quote Should Include: A Line-by-Line Example","The line items a custom software quote should break down, a line-by-line example, the costs left out and the warning signs to check before signing.","/images/blog/orcamento-software-medida.jpg",[673,21],"Costs & Decision",{"_path":675,"title":676,"description":677,"date":678,"image":679,"tags":680},"/blog/real-estate-crm-software-portugal-how-to-choose","Real Estate CRM Software in Portugal: How to Choose the Right One for Your Agency","Portals, listings, viewings, commissions and IMPIC obligations: what a real estate CRM has to handle in Portugal and when a custom-built one pays off.","2026-11-09","/images/blog/crm-imobiliario-portugal.jpg",[681,682,21],"Real Estate","CRM",{"_path":684,"title":685,"description":686,"date":687,"image":688,"tags":689},"/blog/is-your-company-data-ready-for-ai","Is Your Company Data Ready for AI? How to Tell Before You Invest","What each type of AI project asks of your data, an eight-question self-assessment, and why you do not need a data lake before your first AI project.","2026-10-29","/images/blog/dados-prontos-ia.jpg",[690,691,673,21],"Artificial Intelligence","Business Intelligence",{"_path":693,"title":694,"description":695,"date":696,"image":697,"tags":698},"/blog/ai-cash-flow-treasury-forecasting","Cash Flow Forecasting: Stop Running Treasury on Bank Statements and a Friday Spreadsheet","Consolidated multi-bank position, automatic reconciliation and a 13-week cash flow forecast. Where AI genuinely helps and where simple statistics are enough.","2026-10-24","/images/blog/previsao-tesouraria.jpg",[691,690,699,673],"Automation",{"_path":701,"title":702,"description":703,"date":704,"image":705,"tags":706},"/blog/ai-clinical-documentation-consultations","AI for Clinical Documentation: Fewer Hours Writing, Without Losing Control of the Note","How AI transcribes and summarises consultations, drafts letters and writes into clinical software, with the clinician signing off. GDPR, MDR and costs.","2026-10-19","/images/blog/ia-documentacao-clinica.jpg",[707,690,708],"Healthcare","Compliance",{"_path":710,"title":711,"description":712,"date":713,"image":714,"tags":715},"/blog/fleet-rent-a-car-management-software-ai","Custom Rent-a-Car Software: Real Fleet Status, AI Inspections and Dynamic Pricing","Real availability, inspection photos compared by AI, fines passed to the renter on time and occupancy-based pricing: what a rent-a-car operation needs.","2026-10-14","/images/blog/frotas-rent-a-car.jpg",[19,21,690],{"_path":717,"title":718,"description":719,"date":720,"image":721,"tags":722},"/blog/ai-recruitment-hr-ai-act-high-risk","AI in Recruitment and HR: What to Automate and What the AI Act Treats as High Risk","What AI can safely do in HR, what the AI Act classifies as high risk in recruitment, and how to design systems that support decisions without making them.","2026-10-08","/images/blog/ia-recrutamento-rh.jpg",[690,708,699,21],{"_path":724,"title":725,"description":726,"date":727,"image":728,"tags":729},"/blog/field-service-management-software-technical-teams","Software for Field Technical Teams: From the Call to the Invoice Without Paper","Work orders, an offline app, parts in the van, contracts with SLAs and an invoice at close-out: what a system for field technicians really has to solve.","2026-10-03","/images/blog/equipas-tecnicas-terreno.jpg",[21,699,690],{"_path":731,"title":732,"description":733,"date":734,"image":735,"tags":736},"/blog/ai-document-processing-invoices-orders","Invoices, Purchase Orders and Delivery Notes in PDF: How AI Reads Them and Posts Them to the ERP Without Silent Errors","How AI reads supplier invoices, purchase orders and delivery notes from email, checks them against the ERP and leaves only exceptions to your team.","2026-09-19","/images/blog/ia-processamento-documentos.jpg",[699,690,20,673],{"_path":738,"title":739,"description":740,"date":741,"image":742,"tags":743},"/blog/modernise-legacy-software-without-stopping-operations","The Old System Nobody Wants to Touch: How to Modernise It Without Stopping Operations","Access, Visual Basic, Delphi or a 15-year-old ERP: how to replace old software one module at a time, migrate data in parallel and keep the business running.","2026-09-12","/images/blog/modernizar-software-legado.jpg",[21,20,673],{"_path":745,"title":746,"description":747,"date":748,"image":749,"tags":750},"/blog/ai-prototype-to-production","Your Team Built an AI Prototype. What It Takes to Get to Production","More and more teams build applications with ChatGPT, Codex or Claude Code. What changes when that software has to be secure, reliable and able to scale to production.","2026-09-05","/images/blog/ai-prototype-to-production.jpg",[21,690,708,673],{"_path":752,"title":753,"description":754,"date":755,"image":756,"tags":757},"/blog/integrate-ai-business-processes-digital-brain","How to Integrate AI into Business Processes Without Adding Another Isolated Tool","Learn how a Digital Brain connects documents, ERP, CRM and email to turn AI into real work, with security, control and measurable return.","2026-08-26","/images/blog/cerebro-digital.jpg",[690,758,699,673],"AI Agents",{"_path":760,"title":761,"description":762,"date":763,"image":764,"tags":765},"/blog/how-long-a-custom-software-project-takes","How Long a Custom Software or AI Project Actually Takes","Real timelines by project type, what happens inside each phase, and the four things on the client side that delay projects more than any technical decision.","2026-08-22","/images/blog/prazos-projeto-software-medida.jpg",[673,21,690,699],{"_path":767,"title":768,"description":769,"date":770,"image":771,"tags":772},"/blog/add-ai-to-existing-business-software","Adding AI to the Software Your Company Already Uses, Without Replacing It","How AI connects to the ERP, the CRM and the files you already have, what changes when a system has no ready-made connection, and what each scenario actually costs.","2026-08-16","/images/blog/integrar-ia-software-existente.jpg",[690,21,20,673],{"_path":774,"title":775,"description":776,"date":777,"image":778,"tags":779},"/blog/how-to-choose-an-ai-agent-partner","How to Choose Who Builds Your Company AI Agents","Seven criteria to separate those who deliver from those who give a good demo: code ownership, fixed scope, what happens when the AI is wrong, and where the data lives.","2026-08-09","/images/blog/agentes-ia-empresariais-suporte-b2b.jpg",[758,673,780],"B2B Portals",{"_path":782,"title":783,"description":784,"date":785,"image":778,"tags":786},"/blog/gdpr-ai-act-before-ai-agents-production","GDPR and the AI Act: What to Check Before Putting an AI Agent in Production","What the GDPR and the AI Act actually require from a company using AI agents, the five points that cover most cases, and the mistake that costs the most.","2026-08-02",[708,758],{"_path":788,"title":789,"description":790,"date":791,"image":756,"tags":792},"/blog/how-much-ai-costs-company-portugal","How Much Does It Cost to Implement AI in a Company in Portugal in 2026","Real price ranges for AI agents, internal platforms and custom software in Portugal, what drives the figure up, and the running cost that never appears in proposals.","2026-07-26",[673,690,758],{"_path":794,"title":795,"description":796,"date":797,"image":798,"tags":799},"/blog/custom-erp-crm-vs-primavera-phc-sap","Custom ERP and CRM or Primavera, PHC, ARTSOFT and SAP: How to Decide","Primavera, PHC, ARTSOFT and SAP fit most companies. The three signs the product stopped fitting, and why replacing everything rarely pays off.","2026-07-19","/images/blog/agribusiness-erp.jpg",[20,682,673],{"_path":801,"title":802,"description":803,"date":804,"image":805,"tags":806},"/blog/custom-ai-agents-vs-generic-tools","Custom AI Agents or Generic Tools: When Building Is Worth It","ChatGPT and Copilot solve individual productivity. When the process needs company data and has to act in your systems, the maths changes. Criteria for deciding.","2026-07-12","/images/blog/automacao-vendas-ia.jpg",[758,690,673],{"_path":808,"title":809,"description":810,"date":811,"image":812,"tags":813},"/blog/custom-real-estate-crm-high-ticket-deals","Custom Real Estate CRM: The Key to Closing High-Ticket Deals","Discover why generic CRMs fail in the luxury market and how a custom-built real estate CRM with AI integration accelerates closing high-ticket deals.","2026-06-08","/images/blog/crm-real-estate.jpg",[682,681,690],{"_path":815,"title":816,"description":817,"date":818,"image":819,"tags":820},"/blog/legal-erp-integrated-crm-lead-capture","From Followers to Clients: How a Legal ERP with Integrated CRM Transforms Lead Capture","What changes when client acquisition and case management live in the same system, and why most of the enquiries generated on social channels are lost before they ever reach a fee proposal.","2026-05-21","/images/blog/erp-juridico-crm.jpg",[21,682,699],{"_path":822,"title":823,"description":824,"date":825,"image":805,"tags":826},"/blog/ai-sales-automation","How AI Automation Shortens Sales Cycles and Boosts Conversion Rates","Discover how AI sales automation eliminates manual administrative work, accelerates high-value B2B deals, and transforms your CRM.","2026-05-14",[690,699,22],{"_path":828,"title":829,"description":830,"date":831,"image":832,"tags":833},"/blog/e-commerce-checkout-optimization","Why Your Online Store is Losing Sales at Checkout (and How to Fix It)","Discover why an outdated e-commerce platform turns customers away at checkout and how modern payment integrations immediately increase your conversion rate.","2026-05-12","/images/blog/otimizacao-checkout-e-commerce.jpg",[834,21],"Retail & E-commerce",{"_path":836,"title":837,"description":838,"date":839,"image":756,"tags":840},"/blog/digital-brain-institutional-memory-smes","What if Your Company Had a Digital Brain? The Revolution of Institutional Memory in SMEs","Discover how a Digital Brain powered by Private AI can centralize company knowledge, eliminate the Bus Factor, and scale your operations securely.","2026-05-08",[690,699],{"_path":842,"title":843,"description":844,"date":845,"image":846,"tags":847},"/blog/ai-chatbot-qualifies-leads-24h","Multiply Your Sales: How an AI Chatbot Qualifies Leads 24 Hours a Day","Discover how a custom Artificial Intelligence chatbot can interact, qualify high-value potential clients, and schedule meetings while your team sleeps.","2026-05-02","/images/blog/chatbot-ia-qualifica-leads.jpg",[690,22,699],{"_path":849,"title":850,"description":851,"date":852,"image":853,"tags":854},"/blog/custom-wms-ai-inventory-management","Zero-Touch Inventory Management: How Custom WMS & AI Reduce Stockouts","Discover how a custom Warehouse Management System (WMS) powered by AI reduces stockouts and automates replenishments in retail and distribution operations.","2026-04-24","/images/blog/wms-medida-ia-gestao-inventario.jpg",[834,690,19],{"_path":856,"title":857,"description":858,"date":859,"image":860,"tags":861},"/blog/custom-erp-consulting-firms-project-management","Ending Consultancy Chaos: 10 SaaS Tools vs 1 Custom ERP","Discover why dozens of SaaS tools destroy consultancy profit margins and how a custom ERP safely restores holistic financial control.","2026-04-20","/images/blog/finance-automation.jpg",[21,20],{"_path":863,"title":864,"description":865,"date":866,"image":867,"tags":868},"/blog/custom-eqms-manufacturing-quality-control","Paperless Quality Control: The Value of Custom e-QMS in Manufacturing","Discover how a custom e-QMS replaces manual factory floor processes and accelerates audits in manufacturing.","2026-04-17","/images/blog/eqms-sistema-controlo-qualidade-industria.jpg",[869,21,690],"Manufacturing",{"_path":871,"title":872,"description":873,"date":874,"image":875,"tags":876},"/blog/law-firm-management-software-ai","Law Firm Management Software: How AI Solves the Problem of Slow Contract Analysis","Discover how a custom ERP and management software for law firms integrates AI to analyze contracts and scale billable hours.","2026-04-15","/images/blog/software-gestao-advogados-ia.jpg",[690,21,877],"Legal Sector",{"_path":879,"title":880,"description":881,"date":882,"image":883,"tags":884},"/blog/custom-crm-vs-salesforce","What Is a Custom CRM and Why Salesforce Might Be Holding Your Business Back","The signs a generic CRM is no longer enough, what changes with a custom system, and how licence costs compare against ownership over a three to five year horizon.","2026-04-10","/images/blog/crm-medida-vs-salesforce.jpg",[682,22,21,673],{"_path":886,"title":887,"description":888,"date":889,"image":890,"tags":891},"/blog/custom-vendor-portals-procurement","Custom Vendor Portals: The Secret Strategy for a Resilient Supply Chain","Discover how bespoke Vendor Portals guarantee efficiency, rock-solid compliance, and total management control across complex procurement operations.","2026-04-09","/images/blog/portais-fornecedores-medida-procurement.jpg",[780,19],{"_path":893,"title":894,"description":895,"date":896,"image":778,"tags":897},"/blog/enterprise-ai-agents-b2b-support","Enterprise AI Agents: Reimagining Complex B2B Customer Support","How AI Agents integrated into your ERP transform B2B support, resolving complex queries without human intervention and scaling operations.","2026-04-08",[690,699],{"_path":899,"title":900,"description":901,"date":902,"image":903,"tags":904},"/blog/custom-erp-enterprise-groups-holdings","Multi-Company Management Without Chaos: The Strategic Advantage of a Custom ERP","Discover how Enterprise Groups and Holdings are abandoning rigid ERPs in favor of custom software to centralize management and scale profitably.","2026-04-06","/images/blog/erp-medida-grupos-empresariais-holdings.jpg",[21,20],{"_path":906,"title":907,"description":908,"date":909,"image":910,"tags":911},"/blog/traditional-mes-ai-smart-system","How to Transform Your Traditional MES into an AI-Driven Smart System","Passive MES systems bottleneck factory efficiency. Learn how to integrate Artificial Intelligence for predictive maintenance and near zero downtime.","2026-04-01","/images/blog/tradicional-mes-ai-smart-system.jpg",[869,690,21],{"_path":913,"title":914,"description":915,"date":916,"image":917,"tags":918},"/blog/custom-erp-vs-saas-logistics","Custom ERP vs SaaS: What Works Best for Logistics Operations?","Generic SaaS logistics platforms create bottlenecks. Learn why a custom ERP transforms distribution scalability and lowers long-term operational costs.","2026-03-23","/images/blog/erp-logistics.jpg",[19,20,21,673],{"_path":920,"title":921,"description":922,"date":923,"image":860,"tags":924},"/blog/backoffice-financial-automation","Backoffice Automation in Financial Services: Security and Efficiency","Manual approvals and document handling slow responses and create compliance risks. Discover how financial backoffice automation transforms operations.","2026-03-16",[699,708],{"_path":926,"title":927,"description":928,"date":929,"image":930,"tags":931},"/blog/end-of-excel-construction","The End of Excel in Construction: Centralizing Project Management","Budgets and planning scattered across spreadsheets cause massive financial overruns. Learn how a custom ERP safely centralizes construction management.","2026-03-09","/images/blog/excel-construction.jpg",[932,20,21],"Construction",{"_path":934,"title":935,"description":936,"date":937,"image":938,"tags":939},"/blog/predictive-maintenance-manufacturing","Predictive Maintenance in Manufacturing: Using AI to Prevent Downtime","Unexpected assembly line failures destroy margins. Discover how predictive maintenance software uses AI to prevent breakdowns before they occur.","2026-03-02","/images/blog/predictive-maintenance.jpg",[869,690],{"_path":941,"title":942,"description":943,"date":944,"image":945,"tags":946},"/blog/ai-crm-real-estate","How AI is Transforming Lead Qualification in Real Estate CRMs","Real estate teams waste hours on unqualified leads. Discover how a custom CRM with AI agents eliminates manual prospecting and boosts conversion.","2026-02-23","/images/blog/ai-real-estate.jpg",[681,682,690,699],{"_path":948,"title":949,"description":950,"date":951,"image":952,"tags":953},"/blog/b2b-custom-extranet-portals","B2B Extranets: Retaining Enterprise Clients with Custom Portals","PDF and email ordering generate B2B friction. Discover how bespoke Extranet Portals streamline corporate sales and secure long-term client relationships.","2026-02-16","/images/blog/b2b-extranet.jpg",[780,869,699],{"_path":955,"title":956,"description":957,"date":958,"image":959,"tags":960},"/blog/custom-bi-dashboards-retail","Custom Business Intelligence Dashboards for Multi-Store Retail","Data silos between e-commerce, retail, and warehouses destroy margins. Learn how custom BI Dashboards centralize operations and drive decisions.","2026-02-09","/images/blog/retail-dashboard.jpg",[834,691,21],{"_path":962,"title":963,"description":964,"date":965,"image":798,"tags":966},"/blog/agribusiness-custom-erp","Scaling Agribusiness: Why You Should Avoid Generic Management Software","Agricultural seasonality and traceability collide with traditional ERPs. Discover how custom software fully digitalizes agribusiness operations.","2026-02-02",[967,20,21,869],"Agribusiness",{"_path":969,"title":970,"description":971,"date":972,"image":973,"tags":974},"/blog/staff-management-hospitality","Staff Management in Hospitality: Ending Roster Disorganization","Rosters in Excel and WhatsApp groups cost you shift coverage, maintenance traceability and GDPR compliance. What changes with a custom internal portal.","2026-01-26","/images/blog/hospitality-staff.jpg",[975,780,699],"Hospitality",{"_path":977,"title":978,"description":979,"date":980,"image":981,"tags":982},"/blog/ai-clinical-scheduling","Clinical Scheduling Automation: Reducing No-Shows with AI Agents","Uncommunicated patient no-shows destroy daily clinic profitability. Learn how custom clinic scheduling software powered by AI actively eliminates friction.","2026-01-19","/images/blog/ai-clinic.jpg",[707,690,699],1794655864414]