B2B customer portal: what should it read from and send to your ERP?
Which system owns each account, price, credit and order record, when to publish data or check it live, how a portal order becomes an accepted ERP order, and twelve tests to run before trade customers log in.
- 01Account
- 02Price
- 03Order
- 04Accept
- 05Track
A B2B customer portal should read accounts, contract prices, credit, stock, orders, shipments and invoices from the ERP, and send the ERP requests: purchase orders, quote requests, payments and account changes. The portal owns logins and buyer permissions; the ERP decides whether each request is accepted. Give every request a shared ID and a response the buyer can see, and test that a held or rejected order reaches both the buyer and the account owner.
A distributor launches a trade portal. Buyers log in, see their prices and place orders. Within a month, customer service is busier than before: buyers ask why an order marked “confirmed” never shipped, why a phone order is missing from their history, and why an invoice they paid online produced a reminder letter. The portal works. The connections behind it were designed for the happy path only. This guide maps the records a portal needs, who owns each one, and how to prove the handoffs before launch.
What does a B2B customer portal need from the ERP?
A B2B customer portal is a signed-in website where a business customer’s buyers see their own prices, place and repeat orders, track deliveries, and download or pay invoices. Almost everything the buyer looks at is already a record in the seller’s ERP: the customer account, the negotiated price, the credit position, the order, the shipment and the invoice. The portal is a window onto those records, plus a way to send requests back.
That is why a portal project is mostly an integration project. The screens can be configured in weeks. The work that decides whether buyers trust the portal is mapping each record, agreeing which system may change it, and handling the answers the ERP gives. This guide is for distributors, wholesalers and manufacturers that sell to trade accounts and already run an ERP. If you are still choosing the portal itself, the B2B buyer workflow test and the B2B ecommerce platform comparison come first.
| Buyer task | Record it depends on | Direction | How fresh it must be |
|---|---|---|---|
| Sign in and see the company’s account | Customer account, ship-to addresses, account status | ERP to portal | On change; a closed account must stop ordering the same day |
| Browse the products the company may buy | Items, customer assortment, customer item codes, selling units | ERP or product master to portal | On a schedule, usually daily or hourly |
| See the agreed price | Price list or customer price, quantity breaks, validity dates | ERP to portal | Published on change and checked again when the order is placed |
| See stock and a delivery date | Available quantity by warehouse and expected receipts | ERP or warehouse system to portal | Close to live when the buyer is in the cart |
| Place a purchase order | Sales order with the buyer’s PO number | Portal to ERP | Immediately, with an answer back |
| Track any order, however it was placed | Order lines, status, shipments and tracking | ERP to portal | On each event |
| Download invoices, see the balance and pay | Invoices, open items, available credit, payments | Both directions | On each event; balances at least daily |
| Ask for a quote or a new delivery address | Quote request, address request | Portal to ERP or CRM | Immediately, with an owner and a reply |
Which system should own each portal record?
Each record needs one owner: the system where it is created and corrected. Other systems may display it or ask for a change, but they do not change it themselves. In most trade businesses the ERP owns the commercial and financial records, and the portal owns who can log in and what each person may do.
| Record | Owner | What the portal may do | Fields that must map |
|---|---|---|---|
| Company account | ERP | Display it; request changes | ERP customer number, legal name, tax ID, currency, payment terms, price group, account status |
| Ship-to and bill-to addresses | ERP | Let buyers pick one; request a new one for approval | Address ID, tax zone, delivery rules, default warehouse |
| Buyer user | Portal | Create, assign roles, disable | User ID, linked ERP contact ID, company ID, role, spending limit |
| Approval rules inside the customer’s company | Portal | Route orders to the customer’s approver | Approver, threshold, result, time |
| Assortment and customer item codes | ERP or product master | Display; search by the customer’s own code | Item, customer part number, selling unit, pack size |
| Contract price | ERP pricing | Display; send the price it showed with the order | Price list ID, item, unit, quantity break, currency, valid from and to |
| Credit limit and terms | ERP or finance | Show available credit and terms; never approve credit itself | Terms code, credit limit, open balance, hold flag |
| Order | Portal until submitted, then ERP | Create and submit; display the ERP status | Portal order ID, buyer’s PO number, ERP order number, line IDs, revision |
| Shipment and invoice | ERP or warehouse system | Display and download | Shipment ID, lines and quantities, tracking, invoice number, due date |
| Payment | Payment provider, then ERP | Take the payment; show it once the ERP applies it | Payment reference, invoice allocation, amount, date |
Two rows cause most of the trouble. The first is the split between a person and a company. A buyer’s email address is a portal user, not a new customer. If self-registration creates an ERP customer for every sign-up, finance ends up with three accounts for one business and three separate credit limits. Link each user to an existing ERP customer and contact, and keep new sign-ups pending until sales or finance approves them.
The second is the order. While the buyer is building a cart, the portal owns it. Once it is submitted, the ERP decides whether it becomes a sales order, and the portal must show that decision rather than its own. A portal that shows “confirmed” because it sent a message has made a promise the ERP has not.
Should prices and stock sync on a schedule or be checked live?
A portal can get ERP data in two ways. It can receive a published copy (the ERP sends price lists or stock levels when they change, or on a timer) or it can ask the ERP live, at the moment a buyer opens a page or the cart. Published data is fast and keeps working if the ERP is slow or down, but it can be out of date. Live checks are current, but every page view becomes an ERP request, and the portal stalls when the ERP does.
| Data | Publish to the portal when | Check live when | A common middle route |
|---|---|---|---|
| Catalogue and assortment | Almost always: it changes slowly | Rarely needed | Publish nightly and on change |
| Contract prices | Price lists are stable and change on known dates | Prices come from complex rules, such as cost-plus or rebates, that the portal cannot reproduce | Publish for browsing; recheck price at checkout |
| Stock and dates | Stock moves slowly or orders are planned ahead | Fast-moving stock or orders that commit scarce stock | Publish every few minutes; recheck availability in the cart |
| Credit position | A daily figure is acceptable for display | Checkout must stop orders over the limit | Show the daily figure; let the ERP decide on submission |
| Order status and invoices | Always event-driven: send the change when it happens | Not needed if events arrive reliably | Events plus a nightly comparison to catch anything missed |
Whichever route you choose, agree the price rule before launch: if the price changes between the cart and the ERP’s acceptance, which price stands? A workable rule is that the portal sends the price it showed, the ERP reprices on acceptance, and any difference comes back as “accepted with changes” for the buyer to see. A silent change becomes a dispute when the invoice arrives.
How does a portal order become an accepted ERP order?
The illustrative order below comes from a contractor account, customer C-2041, with three branches. A buyer at the Eastside branch orders three lines under the company’s purchase order 7781. One line is above the buyer’s spending limit, and the account is close to its credit limit.
- 01Submit the cartBuyer in the portal
Portal order P-55012, PO 7781, customer C-2041, ship-to S-02, three lines with the prices shown
- 02Approve the spendCustomer’s approver, in the portal
Approver, approval time and the approved order value
- 03Validate account, address and pricesERP
Account active, ship-to valid, prices current or repriced
- 04Check creditERP or finance
Released, or held with a reason and an account owner
- 05Answer the portalERP
ERP order SO-88140, status for each line, any changes and their reason
- 06Report progressERP and warehouse
Shipments by line, tracking, open quantity and the invoice
The answer back to the portal matters as much as the order going in. Agree a short list of states, what the buyer sees for each, and who acts next:
| State from the ERP | What the buyer sees | Who acts next |
|---|---|---|
| Received, not yet processed | Order received; confirmation to follow | Nobody, unless it stays here past the agreed time |
| Accepted | Confirmed lines, prices and expected dates | Warehouse |
| Accepted with changes | What changed (price, quantity or date) and why | Buyer, if the change needs their agreement |
| Held | Under review, with a plain reason such as credit or a product check | Account owner or credit controller |
| Rejected line or order | Which line, why, and what to do instead | Buyer, with the account owner told |
| Partly shipped | Shipped lines with tracking and what remains open | Warehouse for the rest |
| Shipped and invoiced | Tracking, invoice number, amount and due date | Buyer’s accounts payable |
Should the portal show phone, email and EDI orders, invoices and payments?
Yes. A buyer does not care how an order reached you. If the portal shows only orders placed in the portal, buyers still phone to ask about the rest, and much of the reason to build it disappears. Read order history from the ERP, where every channel ends up, and show each order with the buyer’s PO number, because that is the number the buyer searches for. Reorder from history should copy the ERP lines and then reprice them, not reuse last year’s price.
Invoices and payments need the same care. Show open invoices, credit notes and the balance from the ERP’s receivables records. When a buyer pays in the portal, the payment must reach the ERP, be applied to the right invoices and update the available credit. If the payment provider confirms the payment but the ERP never applies it, the next reminder letter goes to a customer who has already paid. The payment reconciliation guide shows how to trace each card payment through the provider’s payout to the bank.
For distributors whose portal is one of several order routes alongside sales reps, email and EDI, the wholesale order management guide shows how all of those routes land in the same ERP order process. Sales reps need the same history in their CRM; the CRM and ERP integration guide covers that side.
How do you test a B2B portal and ERP integration before launch?
Run these tests with real customer accounts, price lists and stock copied into a test environment, not with demonstration data. Write the expected result for each one before it runs. Most of them are failures on purpose, because the normal order is the one most likely to work already.
| # | Test | Pass when | Fail signs |
|---|---|---|---|
| 1 | A new buyer registers with an email address from an existing customer. | The request waits for approval and then links to the existing ERP customer. | A new ERP customer is created. |
| 2 | A buyer at one company changes an order number in the address bar to another company’s order. | Access is refused. | Another company’s order, price or invoice appears. |
| 3 | A contract price expires between adding to the cart and submitting. | The buyer sees the new price before confirming, or the ERP returns “accepted with changes”. | The order is accepted at the expired price, or repriced without notice. |
| 4 | An order takes the account over its credit limit. | The ERP holds it, the buyer sees “under review” and the account owner gets a task. | The portal shows the order as confirmed. |
| 5 | One line is for a discontinued item. | That line is rejected with a reason, and the other lines follow the agreed rule. | The whole order fails with a technical error. |
| 6 | The connection times out after the ERP has created the order, and the portal retries. | There is still one ERP order. | Two ERP orders exist for one portal order. |
| 7 | The ERP is unavailable for 30 minutes during ordering. | Orders wait in a queue, buyers see “received”, and the queue clears in order once the ERP returns. | Orders are lost, or buyers cannot submit at all. |
| 8 | Customer service enters a phone order in the ERP. | It appears in the buyer’s portal history within the agreed time and can be reordered. | Only portal orders are visible. |
| 9 | The warehouse ships 15 of 18 cartons. | The portal shows the shipped lines with tracking and three cartons still open. | The whole order shows as shipped. |
| 10 | A buyer pays two invoices in the portal. | Both invoices close in the ERP, available credit updates and no reminder is sent. | The invoices stay open in the ERP. |
| 11 | A buyer who has left the customer’s company is disabled. | They cannot sign in, and colleagues can still see the orders they placed. | Their access continues, or their orders disappear. |
| 12 | A buyer requests a new delivery address. | It cannot be used until it is approved and created in the ERP. | Orders ship to a typed address with no tax or freight check. |
Test 2 is a security test, not an integration detail. The 2025 edition of the OWASP Top 10 ranks broken access control first among web application risks. In a portal it means one customer seeing another’s contract prices. Check it on every page that takes an order, invoice or account ID.
How do you roll out a B2B customer portal without disrupting orders?
- 01Clean the account and price records
Merge duplicate customers and contacts, confirm ship-to addresses and close expired price lists. The portal will show every error to the customer.
- 02Agree owners and responses
Use the record map above. Write down the order states, the price rule and who watches the queue of failed messages.
- 03Launch read-only first
Order history, tracking, invoices and statements. This cuts “where is my order?” calls before any ordering risk is taken.
- 04Add ordering for a pilot group
A handful of accounts with different terms and branches. Compare every portal order with its ERP order daily.
- 05Add payments and credit display
Only once payments are applied in the ERP automatically and reconciled daily.
- 06Expand and keep reconciling
Add accounts in groups. Keep a daily comparison of portal orders, ERP orders and payments, and review rejected messages every day.
Budget for the work that continues after launch: someone to approve new users and addresses, keep price lists current, and clear the failed-message queue every day. A portal with nobody watching its exceptions slowly sends buyers back to the phone. The e-commerce and B2B service describes how Harmatiq plans and connects buyer portals, and the ecommerce ERP integration guide covers the message design, retries and reconciliation behind every handoff above.
Bring one real order, the systems it crosses and the exceptions your team handles manually. We can turn that journey into an implementation scope.