Pro Feature

Per-Channel Delivery Pricing

Each platform gets its own price per item. No more overwriting your dine-in price when importing Grab data. Commission accounting happens automatically.

The problem with one price per item

Most POS systems and restaurant tools store a single price per menu item. The moment you bring in data from a delivery platform, that price gets overwritten. Suddenly your dine-in reports are wrong, your margins look off, and you can't tell what revenue came from which channel.

How most systems work

  • ONE price per item — shared across all channels
  • Importing delivery data overwrites the dine-in price
  • Delivery commissions tracked separately (if at all)
  • No way to see real revenue per channel

How BasilBook works

  • Separate price per platform per item
  • Dine-in price never touched by delivery imports
  • Commission auto-calculated from platform rate
  • Revenue split by channel, food vs beverage, in every report

Platform Configuration

Add delivery platforms with a name and commission rate. Grab at 25%, FoodPanda at 30%, Nham24 at 20% — each platform is configured individually so your accounting is always accurate.

Add platforms with name + commission rate

Grab 25%, FoodPanda 30%, Nham24 20% — fully configurable per platform.

Auto-created during POS import

Import a POPOK report that mentions Grab? The platform is created automatically with the default commission rate.

Toggle active/inactive

Stop using a platform? Deactivate it without deleting historical data. Reactivate anytime.

delivery_platforms.namedelivery_platforms.commissionRatedelivery_platforms.isActive

Per-Channel Pricing

Each sale item can have a different price on every delivery platform. Your dine-in price stays untouched when Grab data comes in — because delivery prices are stored separately.

Different price per platform per item

Pad Thai might be $8 dine-in, $9 on Grab, and $8.50 on FoodPanda. Each price is tracked independently.

Base price isolated from delivery prices

The sellingPrice on the item is your dine-in base price. It only updates from the default/dine-in channel — never from delivery imports.

View and edit channel prices

Open any sale item edit modal to see and adjust prices per platform. No more guessing which price is which.

sale_item_prices.saleItemIdsale_item_prices.channelsale_item_prices.price

Import Intelligence

When you import POS data, BasilBook collects the price per channel per product and upserts it into the per-channel pricing table. Only the default/dine-in price updates the main sellingPrice — everything else is stored separately.

Prices collected per channel per product

Each line in the import carries a channel. The price is stored against that specific channel — not globally.

Idempotent upserts

Re-import the same file? Prices are upserted, not duplicated. The unique key is saleItemId + channel.

No false "price changed" warnings

Because delivery prices are isolated, importing Grab data at $9 does not trigger a warning that your $8 dine-in price changed.

sale_item_prices.channelsale_items.sellingPricesystem_logs.changes

Commission Accounting

Every delivery sale automatically generates balanced journal entries that split gross revenue into net receivable and commission expense. Revenue is classified by item category — food vs beverage — so your income statement is always granular.

Dr Delivery Receivable (net amount)

The amount the platform owes you after their cut. Cleared when you receive settlement.

Dr Commission Expense (commission amount)

Commission = gross amount x platform rate. Recognized immediately at time of sale.

Cr Delivery Food Revenue (4210) or Delivery Beverage Revenue (4220)

Revenue classified by item category. Food items credit 4210, beverage items credit 4220.

journal_entries (Dr Delivery Receivable)journal_entries (Dr Commission Expense)journal_entries (Cr 4210 / 4220)

Stop losing margin to delivery confusion

Per-channel pricing, automatic commission accounting, and delivery receivable tracking — all built into every import and every journal entry.