Vbooking
Try
All articles
Commerce28 July 2026 10 min readTurbo

Running B2C and B2B on the Same Travel Platform

Why retail and trade sales belong on one commerce stack, and how to structure pricing, credit, and permissions so neither channel suffers.

Most travel businesses start as one thing and grow into two. A retail agency starts taking corporate accounts. A tour operator starts letting sub-agents resell packages. A DMC starts fielding requests from wholesalers who want net rates instead of retail prices. Within a few years, the same company is quietly running two businesses: a consumer storefront and a trade channel, each with its own pricing logic, credit terms, and reporting needs.

The instinct is to solve this with two systems: a booking engine for consumers and a separate portal, spreadsheet, or manual process for agents and wholesalers. It works for a while, but every month the seams show a little more. Rates go stale in one system and not the other. A change in cancellation policy gets applied to the website but not the agent portal. Finance reconciles two ledgers by hand. Support cannot tell whether a booking came from a walk-in customer or a sub-agent, so it cannot answer basic questions about margin or exposure.

Vbooking's Turbo engine is built on the premise that B2C and B2B are not two products, they are two views onto the same inventory, the same rules engine, and the same operational core. This article lays out how to structure a unified platform so that retail customers, registered agents, and wholesale partners can all transact through the same backbone without stepping on each other, and what typically goes wrong when teams split the stack instead.

Why one platform beats two stacks

The case for unification is not aesthetic, it is operational. Every piece of content in a travel business, whether a hotel contract, a flight fare, or a packaged itinerary, has to be priced, allotted, and governed by cancellation and payment rules. If that content lives in one system for consumers and is copied or re-entered into another for trade partners, someone has to keep the two in sync manually. That synchronization work scales linearly with the size of the catalog and the number of channels, and it is exactly the kind of work that breaks first when the business grows quickly.

A single platform also means a single source of truth for availability. When a retail customer and a sub-agent are competing for the same room block or the same seats on a charter, only a shared inventory ledger prevents overselling. Split stacks solve this with buffers, holdbacks, and end-of-day reconciliation, all of which cost yield. A unified engine simply decrements the same pool regardless of which channel made the booking.

The channel is a lens, not a silo

The right mental model is that B2C and B2B are lenses applied to the same commerce core. The same trip, hotel, or package can be viewed by an anonymous consumer at retail price, by a logged-in loyalty member at a discounted price, and by a registered travel agent at a net rate with a markup they control themselves. The underlying product record does not change; what changes is which pricing rule, which payment method, and which branding template gets applied based on who is looking at it.

Agent portals as a first-class surface

A dedicated agent portal is not a nice-to-have bolted onto the consumer site, it is a first-class surface with its own priorities. Agents need to search and quote faster than consumers because they are often on the phone with a traveler while working the screen. They need to see net rates and commission or markup separately, generate PDF quotes and itineraries with their own branding, and track a book of business rather than a single trip. None of this is naturally served by a retail-first interface with a login wall stapled on.

Turbo's approach is to give agents a purpose-built workspace that reads from the same inventory and rules engine as the consumer site, but is designed around search speed, multi-passenger itineraries, and quoting workflows. Agents log in and see their negotiated rates, their credit line, and their commission structure automatically applied, with no separate integration required on Vbooking's side.

  • Fast, keyboard-friendly search built for phone-based selling, not browsing
  • Quote and hold functionality that reserves inventory without full payment
  • Branded PDF and email itineraries carrying the agent's own logo and contact details
  • A book-of-business view showing upcoming departures, balances due, and commission earned
  • Bulk booking tools for group and series business that consumers never need

Credit lines and payment terms

Consumers pay at the point of booking, in full, with a card. Trade partners rarely do. Agents typically operate on a credit line with periodic settlement, wholesalers may work on net-90 terms, and some corporate accounts pay by invoice against a purchase order. A platform that only understands card-at-checkout cannot serve these relationships without a workaround, and workarounds are where errors and disputes creep in.

Travel team working on a booking dashboard
Credit lines and payment terms

A unified platform needs a payment terms layer that sits alongside, not instead of, the standard checkout flow. Each partner account should carry its own terms: a credit limit, a payment cycle, an interest or late-fee policy if applicable, and an approval workflow for bookings that would push a partner over their limit. Vbooking's Turbo engine models this as an account attribute, so the same booking flow that charges a consumer's card can instead draw against a partner's credit line and generate an invoice at the end of the settlement cycle.

Settlement itself should be automatic wherever possible. Rather than exporting a list of bookings to a spreadsheet at month end, the platform should generate a statement per partner, apply any adjustments for cancellations or amendments, and hand off a clean file to accounting. This is one of the areas where split stacks cost the most quiet money: manual settlement is slow, error-prone, and delays cash collection.

Differential pricing and markup control

The heart of any B2C/B2B platform is the ability to show different prices to different audiences from the same underlying cost. Consumers see a retail price. Loyalty members might see a discounted retail price. Agents see a net rate and are free to add their own markup, within limits the operator sets. Wholesalers see a deeper net rate reflecting volume commitments. All of these prices trace back to the same base cost and the same margin target, expressed through a pricing rules engine rather than manually maintained rate sheets.

Markup rules, not markup chaos

Letting agents set their own markup is good for adoption, but unrestricted markup freedom creates two problems: agents can undercut the operator's own retail price, and agents can overcharge in ways that damage the traveler's trust in the brand. The fix is a markup policy engine that defines a floor, a ceiling, and default value per product category, so an agent has genuine flexibility inside guardrails the operator controls centrally.

ChannelBase price sourceMarkup controlTypical payment method
Retail consumerList priceNone, price is fixedCard at booking
Loyalty memberList price minus tier discountNone, discount is automaticCard or stored wallet
Registered agentNet rateAgent-set, within min/max boundsCredit line, settled periodically
Wholesale partnerContracted net ratePartner-set for their own resaleInvoice on agreed terms

This structure also makes reporting meaningful. When every price traces back to a rule rather than a manual override, the operator can answer questions like which agent segment generates the most margin, which markup bands correlate with higher conversion, and where net rates are being undercut by the retail channel. None of that analysis is possible when B2B pricing lives in side agreements and email threads.

Permissions and role design

A platform serving both channels needs a permission model that goes well beyond admin versus customer. Agents need visibility into their own bookings but not those of other agencies. Agency managers need visibility into their whole team's bookings but not into another agency's. Wholesale account managers on the operator's side need to see performance by partner without seeing the operator's own retail consumer data mixed in. Getting this wrong either locks out legitimate users or, worse, exposes one partner's pricing and volume to another.

Sales channels connected to one core
Permissions and role design
  1. 1Define account types first: consumer, individual agent, agency admin, wholesale partner, internal staff
  2. 2Attach entitlements to account type, such as which rate tiers, products, and regions are visible
  3. 3Layer team-level permissions inside agency accounts so managers see their staff's activity
  4. 4Apply data scoping at the query level, not just the interface level, so exports and reports respect the same boundaries
  5. 5Review permissions quarterly as partners change tiers, teams grow, or accounts are closed

Internal staff permissions matter just as much. A reservations agent supporting consumers should not need access to wholesale contract terms, and a partner account manager should not be able to alter retail pricing rules. Role-based access on the operator's own side keeps the platform safe from internal error as the team scales past the point where everyone knows everyone else's job.

Branding that flexes without forking the codebase

White-label branding is often the feature that decides whether an agency signs up at all. Agents want their clients to see the agency's name and logo, not the platform operator's, on quotes, itineraries, and confirmation emails. Wholesalers reselling to sub-agents may want a further layer of white-labeling underneath their own. Handling this with separate deployed sites per partner is not sustainable past a handful of partners.

Pricing and margin control
Branding that flexes without forking the codebase

The workable pattern is a theming layer that swaps logo, color palette, contact details, and document templates per account, while the booking logic, inventory, and rules engine stay shared. Turbo applies branding as metadata attached to the account rather than as a separate build, so onboarding a new white-label partner is a configuration task measured in hours, not a development project measured in weeks.

Example

Onboarding a new wholesale partner without forking the platform

  1. 1Create the partner account and assign it to the wholesale account type with its contracted net rate table
  2. 2Set payment terms, credit limit, and settlement cycle in the finance module
  3. 3Apply the partner's branding package: logo, colors, and document footer text
  4. 4Configure the partner's markup floor and ceiling for the product categories they will resell
  5. 5Assign the partner's team members with appropriately scoped permissions
  6. 6Run a test booking end to end, checking invoice generation and branded itinerary output before go-live

Reporting that serves both channels

Once B2C and B2B share a platform, reporting has to answer two audiences at once: the operator, who needs a consolidated view across every channel, and each partner, who needs a scoped view of only their own activity. A unified data model makes both possible from the same underlying bookings table, filtered by account scope, rather than requiring separate reporting pipelines for each channel.

The moment we could see retail and agent bookings on one dashboard, we stopped arguing about which channel was actually driving margin and started managing both on the same numbers.
Commercial director, multi-brand tour operator

Operators typically want channel mix, margin by segment, and partner performance rankings. Partners want their own booking volume, commission or markup earned, and outstanding balance. Building both views from one schema, rather than reconciling two separate systems after the fact, is what makes the reporting trustworthy enough to base commercial decisions on.

Weekly

Channel mix (B2C vs B2B share of GMV)

Monthly

Average markup applied by agent segment

Daily

Outstanding partner receivables vs credit limit

Weekly

Rebooking and cancellation rate by channel

Common pitfalls when teams split the stack

Even organizations that intend to run a unified platform sometimes drift back into a split architecture because it feels faster in the short term. A sales team under pressure to close a wholesale deal spins up a private spreadsheet for rates. A developer under deadline hardcodes an agent discount directly into the consumer checkout rather than routing it through the pricing engine. Each shortcut is individually defensible and collectively expensive.

Travel advisor reviewing packages on a tablet
Common pitfalls when teams split the stack
  • Rate sheets maintained outside the platform that drift out of sync with live inventory
  • Agent discounts hardcoded into checkout logic instead of expressed as pricing rules
  • Credit limits enforced by memory or email rather than by the booking engine itself
  • Separate branding builds per partner that require a developer for every onboarding
  • Consumer and trade bookings landing in different tables, making consolidated reporting a manual exercise

Every one of these pitfalls has the same root cause: treating B2B as an exception bolted onto a B2C system, rather than designing the commerce core to serve both from the start. The fix is rarely a full rebuild. It is usually a matter of moving the exceptions, the hardcoded discounts, the side spreadsheets, the manual credit checks, back into the platform's rules engine where they can be governed, audited, and reported on consistently.

Conclusion

Retail and trade sales are not two businesses that happen to share a brand, they are two views of the same commerce operation. A platform that models accounts, pricing, credit, permissions, and branding as configurable layers over a shared inventory and rules engine can serve a walk-in traveler and a wholesale partner from the same booking, the same night, without duplicating effort or risking inconsistency. Vbooking's Turbo engine is built around that principle, so that growing a trade channel never means forking the platform that built the consumer business in the first place.

Keep reading

All articles
Commerce
4 August 202610 min read

One Booking Engine, Every Sales Channel

Why travel businesses that run inventory, pricing and rules through one engine beat those juggling separate stacks for web, agents and apps.

TurboRead

Build What's Next

Want the full picture?