A large construction company places a purchase order for materials. The order is placed by a site supervisor at a job site in the outer suburbs. The goods should be delivered to that same job site. But the invoice needs to go to the company's accounts payable department in the CBD, under the company's ABN, with the correct PO number attached so the finance team can match it to the procurement approval that authorised the spend in the first place.
Three different entities, three different addresses, one transaction. The buyer. The ship-to. The bill-to. B2B commerce has operated this way for decades β on paper, via phone, via EDI systems built in the 1980s. The moment that workflow moves online, most e-commerce platforms immediately fail to model it.
Why Retail Checkout Doesn't Transfer
Every major e-commerce platform was built, at its core, for a retail transaction. One person, one credit card, one shipping address, one email for the receipt. The billing address is a card verification field β it just confirms the cardholder's registered address. It's not an entity. It doesn't have a credit limit. It can't have payment terms of NET_30.
When businesses try to sell wholesale or trade through these platforms, they inherit this architecture and bolt on the bits that don't fit. The result is a checkout flow that asks a trade buyer to enter a personal shipping address β which might be a job site they've never used before β and a billing address that's their finance department but the system treats as just another address field with no downstream significance.
The invoice goes to the buyer's personal email, because that's who has the platform account. The finance team never sees it. The PO number doesn't exist as a field. Three weeks later, someone is on the phone trying to reconcile a payment against an order that the AP system can't find.
B2B buyers aren't consumers making bigger purchases. They're operating within procurement structures that were designed before the web existed β and the web needs to meet them where they are, not the other way around.
What the Competition Offers
Standard Shopify has no native bill-to/ship-to separation. The billing address is a card field, and shipping addresses are saved per customer account. To handle a company with multiple delivery sites and a central billing entity, you need custom development or an enterprise app β the kind of app that charges $200/month and typically requires several hours of setup per company account.
Shopify Plus adds some B2B primitives, but company accounts at that level still don't natively support the concept of a named billing entity with its own payment terms and credit balance that sits separately from the physical delivery locations. If you want true bill-to/ship-to separation with per-buyer access controls on ship-to locations, you're commissioning custom Liquid themes and back-end work. This is a project, not a feature.
WooCommerce has no company account model at all. Each order belongs to a WordPress user. To approximate multi-user company accounts, you're installing role management plugins, custom checkout fields, and an order routing layer β each of which adds fragility without adding the structural logic you actually need.
BigCommerce's B2B Edition, their dedicated trade product, does handle this properly. The entry price is several thousand dollars a month. If you're a national distributor managing hundreds of trade accounts, that's a reasonable infrastructure investment. If you're a local supplier with twelve wholesale clients and a few hundred SKUs, you're paying enterprise overhead for a problem that doesn't require enterprise scale to solve.
The Structure That Reflects How B2B Actually Works
In Mika Store's B2B module, a company account is its own entity β separate from any individual buyer. Under that company account, you define two sets of records.
The first is a Bill-To profile. This is the invoicing entity: the legal name on the invoice, their ABN or tax identifier, the billing email address that the invoice goes to, and the payment terms β whether they pay immediately by card, or on NET_15, NET_30, NET_60 terms, or against a credit balance. The bill-to profile has a credit limit and a running balance. When a trade buyer places an order, the system checks whether there's sufficient credit available before the checkout proceeds.
The second set is Ship-To locations. These are the physical places goods can be delivered to β the head office, the warehouse, the regional branch, the job site. Each one has a name ("Brisbane Warehouse", "Site 14 β Mackay"), a recipient name and phone number, and a full delivery address. A company account can have as many ship-to locations as it needs, and each can be independently activated or deactivated as the business relationship changes.
At checkout, a trade buyer selects their company, picks the ship-to location relevant to this order, confirms the bill-to entity, enters their PO number, and submits. The order records all three independently: who placed it, where it's going, and who's being invoiced. The invoice email goes to the bill-to billing address, not the buyer's personal email. The delivery paperwork goes to the ship-to recipient. The accounts payable team gets what they need without the buyer having to orchestrate it manually.
Buyer Permissions and Spending Controls
Not every buyer in a company account should have access to every ship-to location. A regional sales rep shouldn't be able to ship goods to a site they're not authorised for. A junior buyer might be allowed to place orders but only up to a certain dollar value without manager approval.
Buyer permissions in Mika Store let you configure both. For each buyer within a company account, you specify which ship-to locations they're allowed to select at checkout. If they try to use a location outside their permissions, the checkout stops them. You can also set a per-buyer spending cap β orders above that threshold require approval before they're fulfilled, creating a lightweight procurement guardrail that doesn't require an ERP to enforce.
From the merchant side, the company account dashboard shows the full picture: which buyers are active, what their permissions are, what their spending cap is, the current credit balance against the bill-to profile, and the complete order history organised by ship-to location. It's the kind of view an account manager needs when a client calls asking about the status of an order β all the information, in one place, without digging through flat order lists.
How Mika Store Handles This
The bill-to/ship-to separation is a standard part of Mika Store's B2B module, available from Growth tier upward. You don't configure it through a plugin. You don't need to customise a checkout theme. You define your company accounts, their bill-to entities, and their ship-to locations in the merchant dashboard β the same place you manage your catalogue, your promotions, and your order fulfilment.
For businesses that sell to both retail and trade customers, the storefront handles both cleanly. Retail buyers experience a standard checkout. Authenticated trade buyers get the B2B checkout flow β company selection, ship-to picker, PO field β that meets the expectations of a procurement environment. The two flows don't collide, and managing them doesn't require separate systems.
If your business has been running trade accounts through a spreadsheet, an email thread, or a phone order form because your online store couldn't model how procurement actually works β this is what proper B2B infrastructure looks like at a scale that's proportional to the problem.