Sales and invoicing

Session Manager — open a tab, close to invoice

The Session Manager is your front desk in one page. Open a tab for any customer — walk-in, someone who already booked, someone who paid for a shop item — add whatever they buy while they're with you (services, retail items, discounts), and close the session with one click to raise the invoice. If they paid online in advance, the invoice comes out already partially or fully settled — no manual reconciliation.

What a session is

Every customer flow BusinessSensor supports lands in the same list here:

  • Walk-in — a customer walked in, no online preamble. You open a fresh session and add lines as they buy.
  • Shop link — a customer paid for a shop item through the /shop/{slug} link. Their paid session shows up here for you to fulfil and close.
  • Sales order — you sent a pay link, they paid, the SO is waiting to be delivered.
  • Resource booking — a booking (spa/salon/table) was confirmed online.

All four are the same primitive under the hood. The Session Manager is where operator-side add-more-stuff and close-to-invoice happens for any of them.

Before you start

  • A tenant Department must be configured — the invoice's selling department comes from the session, and sessions default to your first department if not stamped.
  • A PaymentMethod with GatewayProvider matching your gateway must exist for auto-payment posting to work. For most tenants that's a method labelled "Paystack" with GatewayProvider="Paystack" and a DefaultDestinationAccount set to the bank account that receives Paystack settlements. If it's not set up, invoices from paid sessions still get created — you just have to add the payment manually.

Steps — open a walk-in session

  1. Open Front office → Sessions.
  2. Click + New walk-in session. You land on the editor for the fresh session.
  3. Add lines using the form at the bottom of the page:
    • Type — Service, Inventory, Discount, TaxItem, or Charges.
    • Description — free text (e.g. "Bottle of water", "Late fee").
    • Item ID — optional. If the line is a real inventory item, put its item ID here so stock deducts on invoice-close. If it's a free-form charge (a discount, a tip, a service that's not in your catalog), leave blank.
    • Qty / Rate / Amount — if you fill Qty and Rate the Amount auto-computes; otherwise type the Amount directly.
    • Click the + button.
  4. Repeat for every line.
  5. Click Close to Invoice. Confirm the prompt.
  6. The system raises the invoice, tries to auto-post the payment if the session was prepaid, and navigates you to the invoice for review.

Steps — close a prepaid session (shop / SO / booking)

  1. Open Front office → Sessions. The paid session is already in the list with Status = Paid and Gateway = Paystack (or whatever gateway was used).
  2. Click the row to open the editor.
  3. If the customer bought anything extra while they were there (a drink at the spa, a haircut on top of the manicure), add those lines the same way as a walk-in.
  4. Click Close to Invoice. The invoice is raised AND the prepaid amount posts as an InvoicePayment row automatically — the toast confirms with "Invoice #N — payment X auto-posted."

Tips

  • Multiple sessions can be open at once — a busy salon might have five sessions in flight simultaneously (one per chair). Filter by Status = InService if you want to see only what's currently on the floor.
  • Cancel is not delete — cancelling a session marks it Cancelled and keeps it in history. No invoice is raised.
  • Amount is authoritative — even if Qty and Rate are set, the final Amount you see on the invoice is exactly the Amount field on the line. This lets you override without fighting the auto-compute.
  • Gateway column shows how the money came in — Paystack for online paid sessions; blank/dash for walk-in sessions and table reservations (both paid at the counter). The auto-payment posting only fires when Gateway is set AND the session is Paid.

Common problems

  • "No Department configured" on close → an admin needs to set up at least one Department under Setup → Departments. This is a one-time tenant setup step.
  • "Session has no lines to invoice" → the session is empty. Add at least one line before closing.
  • Toast says "remember to add the payment manually" for a Paid session → the auto-payment resolver couldn't find a PaymentMethod matching the gateway. Either the tenant hasn't set up a PaymentMethod row where GatewayProvider="Paystack" AND SupportsAutomation=true, or the matched row has no DefaultDestinationAccount. Add the payment on the invoice manually and check the log to see which condition triggered.
  • A shop / booking session doesn't appear in the list → it might be in Kind='ResourceBooking' status Confirmed (not yet Paid) — set the Status filter to All or turn on "Include closed / cancelled" to see everything.
  • Can't edit lines → the session is Closed or Cancelled. Both are terminal states; open a new session for corrections. (Reversing the invoice is a separate action on the invoice itself.)

See it working on your own business

Start a 45-day free trial — no card needed — and follow this guide in your own practice company.