Use caseCustom softwareKnowledge and search
A customer portal where B2B clients track orders, download documents and ask questions
A B2B customer portal on NetSuite or SAP Business One: live orders and shipments, invoices and certificates, and an AI assistant scoped to each account.
A blueprint, not a client story. The business described is illustrative; the architecture, integrations and trade-offs are real, and this is how I would build it. By Ergini, .
The short version
A self-service portal for the B2B customers of distributors and manufacturers. Each customer company gets its own users and roles, live order and shipment status synced from the ERP and carriers, and every invoice, delivery note and certificate of conformity in one place. Buyers can reorder from their history. An assistant answers questions over that customer's own data only, and hands anything commercial, such as expedites, credits or price questions, to the account manager.
- Best for
- Distributors and manufacturers whose customer service spends the day answering order-status and document requests by email and phone.
- Connects to
- NetSuite, SAP Business One, Carrier APIs or the TMS, Document storage (SharePoint or a DMS), Outlook and Microsoft 365, Postgres
- The AI does
- Answers questions about the customer's own orders, shipments and documents, and turns requests it cannot settle into tasks for the right person.
- People do
- Account managers handle expedites, credits and prices; quality staff approve which certificates are published; each customer's admin manages their own users.
- Built as
- Custom Software Development, quoted per scope
The inside sales desk that is really a lookup service
Picture an industrial parts distributor: bearings, seals, hydraulic fittings and fasteners, about 600 B2B customers, most of them maintenance and purchasing teams at factories. Orders run through NetSuite. Eight people in inside sales and customer service take the calls and the email.
A large part of their day is lookups. Has order 4471 shipped? Can you resend last month's invoices, our accounts payable lost them. We need the 3.1 inspection certificates for the flanges on delivery 8812 before the auditor arrives on Thursday. Each answer sits in a system the customer cannot see: the ERP, the carrier's tracking, a certificates folder on SharePoint. The staff member is a human API between the customer and three databases.
The cost is more than time. Customer service cannot take on new accounts without hiring, quotes wait while someone hunts for a delivery note, and a missing certificate can hold up a customer's goods-in inspection. A portal fixes most of it by giving each customer the view the staff already have, limited to their own account. The assistant comes last, because it is only as good as the data behind it.
One certificate request, handled by hand
The request is simple. Answering it is not.
- The email lands in the shared customer service inbox: 'please send the material certificates for our order from 14 August'.
- Someone finds the customer in NetSuite and sees three orders from that week, so they write back to ask which one.
- With the order confirmed, they open the fulfillment to see which items shipped from which batches.
- They search the certificates folder on SharePoint by supplier and batch; one certificate is filed under the supplier's heat number instead.
- They check it is the current revision, attach four PDFs and reply, usually the next day.
- Two weeks later the customer's quality team asks again, because the first reply went to a buyer who has since left.
None of it needs judgement, apart from knowing which folder each supplier's certificates end up in.
What the portal shows, where it comes from, and how fresh it is
Each screen has one source of truth and a stated freshness. The portal never calls the ERP on a page view; it serves its own synced copy and says how old it is.
| In the portal | Source of truth | How it stays current |
|---|---|---|
| Orders, line by line | NetSuite sales orders, or SAP Business One orders | Changed records pulled every few minutes by last-modified date, plus a full reconciliation every night |
| Shipments and delivery status | Carrier APIs or the TMS | Tracking events by webhook where the carrier offers one, polling where it does not |
| Proof of delivery | The carrier | Fetched when the delivered event arrives and stored with the shipment |
| Invoices and credit notes | The ERP | Published when posted; the PDF is rendered once and never regenerated |
| Delivery notes | ERP fulfillments | Created with the fulfillment |
| Certificates of conformity, EN 10204 3.1 certificates, safety data sheets | Document storage, linked to item and batch | Searchable once quality staff approve them for publishing |
| Reorder | The customer's own price list in the ERP | Prices read at the moment of reorder; the order lands in the ERP as a draft |
How the assistant answers inside one customer's account
The assistant is a thin layer over the portal's own data. Everything it sees is already filtered to the signed-in user's company and permissions, in code, before the model is involved.
01 Trigger · Portal session
A customer user asks a question
In the portal's assistant panel, signed in as a user of one customer company, with a role such as buyer, accounts payable or quality.
02 Plain code · Postgres read model
Scope the data first
The query layer adds the company ID and the user's permissions (ship-to locations, whether they may see prices and invoices) to every lookup. The model is given no tool that accepts a company ID.
03 AI model · Structured output
Work out what is being asked
A small model maps the question to lookups: order status, shipment, documents, invoice copies, reorder, or something else. It pulls out order numbers, dates, item codes and batch numbers under a strict output schema.
04 System · Read model, carrier API
Run the lookups
Plain queries against the synced orders, shipments and document index, plus a live carrier call when the last tracking event is more than an hour old. If the carrier times out, the answer uses the last known event and says when it was recorded.
05 Decision
Answer, hand over, or admit a gap?
Rules in code decide, not the model.
- Status, documents, invoice copies, delivery history then answered, with links to the records
- Anything that commits the business: an expedite, a price, a credit, a delivery date the ERP does not show then a request to the account manager, with the context attached
- Data older than the freshness limit, or nothing found then an honest answer that says so, plus a task for customer service
06 AI model
Write the answer from the records only
A larger model writes a short reply in the user's language from the returned records. It may not state dates, prices or stock that the records do not contain.
07 Person · Outlook
The account manager takes commercial requests
They arrive in the account manager's queue and inbox with the customer, the orders and the question. The reply goes back into the portal thread.
08 Result
Log every question and answer
Stored per company with the lookups behind each answer. Questions the assistant could not answer become a list of missing data and documents.
A quality manager's question, and the lookups that answer it
Two questions in one message, one of them a document request that used to take a day.
Customer portal, Wednesday 08:12
Quality manager · Portal
Did the flanges from our August order arrive? I need the 3.1 certs for them before Thursday's audit.
- find_orders(month: "2026-08", item_text: "flange")company taken from the session / 1 match: SO-44710, ordered 14 Aug, 2 flange lines, fulfilled 18 Aug
- get_shipment(order: "SO-44710")DHL Freight / delivered 20 Aug 09:41 / proof of delivery on file
- find_documents(order: "SO-44710", type: "EN 10204 3.1")2 of 2 lines covered / heat 7731, rev 1 / heat 7734, rev 2, supersedes rev 1 / both approved for publishing
Assistant · Portal
Yes. Order SO-44710 was delivered on 20 August at 09:41, and the proof of delivery is on file. Both flange lines have EN 10204 3.1 certificates, for heats 7731 and 7734. The supplier reissued the certificate for heat 7734, so the link is to revision 2, the current one. You can download both here.
- No handover needed. The question, the lookups and the documents linked are logged against the customer's account.
Who is responsible for what in the portal
The AI model
Understand the question and extract order numbers, items and batches
Customers write in their own words and languages, which a model handles well.
Write the answer from the returned records
Short replies that cite the order and link the documents.
Plain code
Company scoping and user permissions
Enforced in the query layer on every lookup; the model cannot ask for another account.
Syncing orders, shipments and documents
Scheduled and event-driven jobs, reconciled against the ERP every night.
Deciding what needs a person
Expedites, prices, credits and promised dates follow fixed rules.
A person
Approving certificates for publishing
Quality staff confirm the document matches the item and batch before a customer can download it.
Expedites, credits and prices
They commit the business, so the account manager decides.
Managing the customer's own users
Each customer's admin invites and removes colleagues; your staff can override.
Where customer portals disappoint, and how this one avoids it
The portal shows yesterday's truth
A portal that says 'not shipped' when the goods left this morning trains customers to call anyway. Changed records sync every few minutes, everything is reconciled nightly, pages show an 'as of' time, and the team is alerted when a sync falls behind. NetSuite also caps concurrent API requests per account, which is one more reason the portal reads its own copy instead of the ERP.
A user who left the customer company
B2B accounts outlive their users. Customer admins manage their own colleagues, logins expire after long inactivity, and staff can deactivate a user the moment a customer says someone has left. Large customers can sign in through their own identity provider over SAML or OpenID Connect, which removes leavers automatically.
The wrong revision of a certificate
Suppliers reissue certificates, and an auditor needs the current one. Documents carry item, batch and revision; publishing a new revision makes it the one search and the assistant return, while staff still see the history. Nothing goes live until quality staff approve it.
Nobody logs in
Portals fail on adoption more often than on code, and 'one more system to log into' is the objection. Customer service replies with a direct link to the order, invoice emails link to the invoice page, and the first login is a magic link. Email keeps working; the portal is simply the faster answer. The inbox side is covered in shared inbox triage.
The assistant makes a commercial promise
'Can you get it here by Friday?' is a request, not a lookup. The assistant cannot state a delivery date the ERP or carrier has not given, cannot quote outside the customer's price list, and turns every such request into a task for the account manager.
The customer's security review
Larger customers send supplier security questionnaires before their staff may use a portal, and NIS2 has made them more common in regulated sectors. Plan for MFA, SSO, an audit log of who downloaded what, EU hosting, a DPA that names the model provider as a sub-processor, a penetration test before launch, and a disclosure in the assistant panel, since the EU AI Act requires telling people when they are talking to an AI.
ERP portal, B2B shop or a custom build?
Check what your ERP already offers. NetSuite sells SuiteCommerce, including a My Account portal for B2B self-service, and SAP Business One partners offer web portal add-ons. If customers mainly need order history and invoice copies, and all of that lives in the ERP, the vendor's option is the least work to run. If the goal is online ordering, with catalogs, customer-specific prices and quick order forms, B2B commerce platforms such as Shopify B2B, Sana Commerce and OroCommerce are built for it.
A custom portal earns its place when the job is service across several systems rather than a web shop: orders in the ERP, shipments in a TMS or with several carriers, certificates in SharePoint, and rules about which user sees what. Off-the-shelf portals tend to show what one system holds, and certificate and tracking questions are exactly the ones that span systems.
The hybrid is common and sensible: keep a B2B shop for ordering, build the service portal beside it, and share the sign-in. Reorders from the portal land in the ERP as drafts for the same review an emailed order gets, which is where order entry automation takes over. Each draft is keyed on the portal's order ID, so a double submit creates one draft, not two.
How you would know it is working
A blueprint has no results to report, so here is what I would measure from the first week instead, on your own data.
- Lookup requests reaching customer service
- Emails and calls about order status, invoice copies and certificates per week, tagged in the shared inbox, against the months before launch.
- Active customer companies
- Share of the 600 accounts with at least one user signing in each month, and how many users per company.
- Sync lag
- Minutes between a change in the ERP or a carrier event and its appearance in the portal, with an alert above the limit.
- Assistant answer rate
- Questions answered from data versus handed over or unanswered. The unanswered ones become a list of missing data and documents.
- Certificate turnaround
- Time from shipment to the certificate being published in the portal, which is where requests used to wait.
What a build like this costs
This is built as Custom Software Development, which is quoted per scope after a free 30-minute call rather than from a fixed table, because the range of what counts as custom software is too wide for one honest number.
What it costs to run
Hosting for a portal of this size is modest. The assistant's model spend grows with the number of questions, usually a few cents or less per question with a small model doing the routing. Carrier API fees depend on the carriers and any tracking aggregator you use.
What moves the price
- How many systems feed the portal: one ERP, or an ERP plus a TMS, several carriers and a document store
- Whether the ERP is in the cloud, like NetSuite, or on premises, like many SAP Business One installs, which adds a secure connector
- Permission depth: one login per company, or roles, ship-to restrictions and price visibility per user
- The document backlog: how many certificates must be indexed and linked to items and batches before launch
- Security requirements from your largest customers: SSO, penetration testing, audit exports
Who this is for
- Industrial distributors whose customers need certificates and delivery documents for their own audits and goods-in checks
- Manufacturers on NetSuite or SAP Business One whose customer service answers status questions all day
- Wholesalers with a B2B shop for ordering and nothing for service: tracking, invoices, documents
- Contract manufacturers and logistics providers whose customers want one place for orders, shipments and paperwork
Questions people ask about this
How do I build a portal where each customer sees only their own orders and documents?
Treat each customer company as a tenant and enforce the filter in the data layer, not in the screens. Every query carries the company ID and the user's permissions, backed by row-level security in the database, so a missing check on one page cannot leak another customer's orders. Users belong to a company with roles, and the company's admin manages them. The stack I use is in my SaaS tech stack post.
What should a B2B customer portal include?
For a distributor or manufacturer, the core is live order status, shipment tracking with proof of delivery, invoice and credit note copies, delivery notes and product documents such as certificates of conformity, plus reorders from history. Each customer company needs its own users and roles. An assistant is worth adding once that data is reliable, not before.
Can a customer portal connect to NetSuite or SAP Business One?
Yes. NetSuite exposes orders, fulfillments and invoices through SuiteTalk REST, RESTlets and saved searches, and SAP Business One through its Service Layer. The portal syncs what it needs into its own database instead of calling the ERP on every page view, which respects NetSuite's concurrency limits and keeps working when an on-premises B1 server is slow or offline.
Can an AI assistant answer customers' questions about their own orders safely?
Yes, if the data is scoped before the model sees it. Every lookup is filtered to the signed-in user's company and permissions in code, the assistant has no way to request another account, and it may only state facts the records return. Anything commercial, such as an expedite, a price or a credit, goes to the account manager instead of being answered.
How much does a custom customer portal cost, and how long does it take?
It is quoted per scope, because the effort depends on how many systems feed it and how deep the permissions go. A portal over one cloud ERP with orders, invoices and documents is a much smaller project than one joining an on-premises ERP, a TMS, several carriers and a certificate archive. The custom software page explains how scoping works.
How do we get B2B customers to actually use the portal?
Make it the fastest answer, not a mandatory detour. Customer service replies link straight to the order or document, invoice emails link to the invoice page, first logins use a magic link, and customer admins invite their own colleagues. Email keeps working. Most customers switch once the portal answers faster than a reply would.