← All insights

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.

  1. 01Account
  2. 02Price
  3. 03Order
  4. 04Accept
  5. 05Track
Short answer

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.

What a trade buyer does in the portal and the ERP record behind each task
Buyer taskRecord it depends onDirectionHow fresh it must be
Sign in and see the company’s accountCustomer account, ship-to addresses, account statusERP to portalOn change; a closed account must stop ordering the same day
Browse the products the company may buyItems, customer assortment, customer item codes, selling unitsERP or product master to portalOn a schedule, usually daily or hourly
See the agreed pricePrice list or customer price, quantity breaks, validity datesERP to portalPublished on change and checked again when the order is placed
See stock and a delivery dateAvailable quantity by warehouse and expected receiptsERP or warehouse system to portalClose to live when the buyer is in the cart
Place a purchase orderSales order with the buyer’s PO numberPortal to ERPImmediately, with an answer back
Track any order, however it was placedOrder lines, status, shipments and trackingERP to portalOn each event
Download invoices, see the balance and payInvoices, open items, available credit, paymentsBoth directionsOn each event; balances at least daily
Ask for a quote or a new delivery addressQuote request, address requestPortal to ERP or CRMImmediately, 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.

System-of-record map for a B2B customer portal
RecordOwnerWhat the portal may doFields that must map
Company accountERPDisplay it; request changesERP customer number, legal name, tax ID, currency, payment terms, price group, account status
Ship-to and bill-to addressesERPLet buyers pick one; request a new one for approvalAddress ID, tax zone, delivery rules, default warehouse
Buyer userPortalCreate, assign roles, disableUser ID, linked ERP contact ID, company ID, role, spending limit
Approval rules inside the customer’s companyPortalRoute orders to the customer’s approverApprover, threshold, result, time
Assortment and customer item codesERP or product masterDisplay; search by the customer’s own codeItem, customer part number, selling unit, pack size
Contract priceERP pricingDisplay; send the price it showed with the orderPrice list ID, item, unit, quantity break, currency, valid from and to
Credit limit and termsERP or financeShow available credit and terms; never approve credit itselfTerms code, credit limit, open balance, hold flag
OrderPortal until submitted, then ERPCreate and submit; display the ERP statusPortal order ID, buyer’s PO number, ERP order number, line IDs, revision
Shipment and invoiceERP or warehouse systemDisplay and downloadShipment ID, lines and quantities, tracking, invoice number, due date
PaymentPayment provider, then ERPTake the payment; show it once the ERP applies itPayment 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.

Choosing between published data and a live ERP check
DataPublish to the portal whenCheck live whenA common middle route
Catalogue and assortmentAlmost always: it changes slowlyRarely neededPublish nightly and on change
Contract pricesPrice lists are stable and change on known datesPrices come from complex rules, such as cost-plus or rebates, that the portal cannot reproducePublish for browsing; recheck price at checkout
Stock and datesStock moves slowly or orders are planned aheadFast-moving stock or orders that commit scarce stockPublish every few minutes; recheck availability in the cart
Credit positionA daily figure is acceptable for displayCheckout must stop orders over the limitShow the daily figure; let the ERP decide on submission
Order status and invoicesAlways event-driven: send the change when it happensNot needed if events arrive reliablyEvents 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.

PO 7781 from cart to accepted order
  1. 01
    Submit the cartBuyer in the portal

    Portal order P-55012, PO 7781, customer C-2041, ship-to S-02, three lines with the prices shown

  2. 02
    Approve the spendCustomer’s approver, in the portal

    Approver, approval time and the approved order value

  3. 03
    Validate account, address and pricesERP

    Account active, ship-to valid, prices current or repriced

  4. 04
    Check creditERP or finance

    Released, or held with a reason and an account owner

  5. 05
    Answer the portalERP

    ERP order SO-88140, status for each line, any changes and their reason

  6. 06
    Report progressERP and warehouse

    Shipments by line, tracking, open quantity and the invoice

Each step names the system that decides and what it passes on. The portal never marks the order accepted itself.

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:

Order states a portal must be able to show
State from the ERPWhat the buyer seesWho acts next
Received, not yet processedOrder received; confirmation to followNobody, unless it stays here past the agreed time
AcceptedConfirmed lines, prices and expected datesWarehouse
Accepted with changesWhat changed (price, quantity or date) and whyBuyer, if the change needs their agreement
HeldUnder review, with a plain reason such as credit or a product checkAccount owner or credit controller
Rejected line or orderWhich line, why, and what to do insteadBuyer, with the account owner told
Partly shippedShipped lines with tracking and what remains openWarehouse for the rest
Shipped and invoicedTracking, invoice number, amount and due dateBuyer’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.

Twelve tests for a B2B customer portal and its ERP connection
#TestPass whenFail signs
1A 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.
2A 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.
3A 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.
4An 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.
5One 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.
6The 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.
7The 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.
8Customer 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.
9The 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.
10A 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.
11A 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.
12A 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?

Six moves from a clean account master to a portal buyers rely on
  1. 01
    Clean 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.

  2. 02
    Agree owners and responses

    Use the record map above. Write down the order states, the price rule and who watches the queue of failed messages.

  3. 03
    Launch read-only first

    Order history, tracking, invoices and statements. This cuts “where is my order?” calls before any ordering risk is taken.

  4. 04
    Add ordering for a pilot group

    A handful of accounts with different terms and branches. Compare every portal order with its ERP order daily.

  5. 05
    Add payments and credit display

    Only once payments are applied in the ERP automatically and reconciled daily.

  6. 06
    Expand 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.

Find the handoff that needs fixing.

Bring one real order, the systems it crosses and the exceptions your team handles manually. We can turn that journey into an implementation scope.

Discuss your workflow