A shop assistant completing a sale on the sell.ke POS, with a barcode scanner and a receipt printer on the counter

    The complete feature list

    Everything sell.ke does, in one page

    The till, the online shop and the books in one system — with an assistant that speaks Swahili and does the setup for you. Below is what that means in practice: 139 capabilities across 15 modules, each one something you can find after you sign in.

    Where a capability costs more, the card says which plan it starts on. Everything else is on every plan, including Starter at KES 1,499/month — and every plan opens with a 7-day trial that asks for no card.

    A card with no plan badge is on every plan, Starter included.

    One order, many tenders, and a record of who did what.

    Selling at the counter

    The counter is where money is lost quietly: a discount nobody approved, a void nobody saw, a customer who pays half in cash and half on M-Pesa and ends up paying neither. The till handles the messy sale properly — one order can carry any combination of tenders, and it will not close until they add up to the total.

    Everything that reverses a sale reverses the stock and the ledger with it. A void is a movement in the audit trail, not a gap in it, which is what makes the daily figures worth reading.

    Split payments on a single order

    Cash, M-Pesa STK push, a paybill or till reference, bank transfer, card and store credit in any combination. The sale stays open until the tendered total matches the order total, so a part-paid sale cannot be recorded as complete by mistake.

    Hold and resume orders

    Park a basket when the customer goes back for one more thing, serve the queue behind them, then pull the order back up with its lines and its price list intact. Nothing is re-keyed.

    Manager PIN on discounts, voids and refunds

    Each of the three is gated independently, so you can allow one and block the others. The staff member who authorised it and the time they did are recorded on the transaction.

    Refunds and voids that reverse stock

    A reversed sale puts the goods back as a stock movement and posts the reversing journal entry. The stock figure and the books stay in agreement instead of drifting apart quietly.

    Cash drawer counted by denomination

    Count the drawer note by note at open and at close. A shortfall becomes a figure you can investigate against recorded tenders rather than a feeling that something is off.

    Scan-to-cart barcode selling

    A USB or Bluetooth scanner at the counter, or the phone camera in the Android app. The same scan assigns a barcode to a product when you are setting the catalogue up.

    Receipts on thermal roll or A4

    Numbered in sequence per business, printed to any ESC/POS printer or A4, with the branch logo and the tax details on them.

    Email the receipt instead of printing it

    Basic and up

    Send the customer a copy from the POS at the moment of sale, or re-send it later against the order.

    QR-verified receipts

    Basic and up

    A scannable code on the receipt lets anyone check the real purchase details against the record. It is how a forged refund receipt gets caught at the counter rather than at the stock take.

    Kitchen display

    Each line moves pending, preparing, ready, served. The counter can answer "is it coming?" without walking to the kitchen, and the kitchen works a queue instead of a pile of slips.

    Order-time modifiers

    Basic and up

    No onions, extra shot, large size — each modifier carries its own price and its own ingredient consumption, so the menu stays one product instead of nine.

    Quotations that convert to a sale

    Build a quote, send it, mark it accepted or rejected, and turn an accepted quote into an order without re-keying a line.

    Sell on credit

    Basic and up

    Put the sale on a customer's account against their credit limit. The balance shows on their profile and in the receivables report rather than in a notebook.

    Switch the price list mid-order

    Growth and up

    A retail basket that turns out to be a wholesale order re-prices in place — the lines stay, the rates change, and the margin is still correct.

    Offline mode with auto-sync

    Power cuts and dropped lines do not stop the counter. Sales queue locally, print and reserve stock, then sync when the connection returns.

    Point of sale, in depth

    Every tender its own record, attached to the sale that produced it.

    Getting paid, however they pay

    Card, mobile money, cash, bank transfer or on account — money moves the way it actually moves in the merchant's market. In East Africa that means an STK push at the counter and a paybill or till for customers who prefer it; everywhere it means cards, cash with a drawer that has to balance, and transfers matched to the invoice. The shortcode and the payment-provider account are the merchant's own, so funds land in the business's account without sell.ke sitting in between.

    Every tender is its own record attached to the order. That is the detail that matters when a confirmation arrives late: the sale is never lost, and the cashier is never forced to choose between giving away the goods and turning the customer away.

    M-Pesa STK push at the counter

    Basic and up

    The cashier sends the prompt, the customer approves on their phone, and the sale closes on the confirmation rather than on the cashier's word.

    Paybill and till (C2B) confirmation

    Basic and up

    Register your C2B validation and confirmation URLs once, and payments made straight to your shortcode land against the order as they arrive.

    Manual M-Pesa for merchants without Daraja

    Basic and up

    Show the paybill or till on the storefront, let the customer submit the code they received, and confirm or reject it yourself. Both sides get an email at each step.

    Unmatched payment queue and reconciliation

    Basic and up

    A C2B payment that arrives with no order to attach to lands in an unmatched list. You reconcile it to the right sale instead of hunting through an SMS inbox.

    Card, bank and mobile money through your own Paystack

    Basic and up

    Connect your own Paystack account and collect on the online store and at the counter. Settlement is between Paystack and you.

    Payment links for an order

    Basic and up

    Generate a link for an unpaid order and send it to the customer to pay remotely — useful for phone orders and deliveries paid on confirmation.

    Cash, bank transfer and store credit

    The tenders that need no integration are first-class records too, including credit notes issued against a return.

    Payment confirmed before the sale is called done

    A prepaid order stays pending until the money records; a cash-on-collection order confirms at the counter. The status a customer sees is the status of their money.

    M-Pesa integration, in depth

    One product record that survives contact with a real shop.

    Products, variants and pack sizes

    Most catalogues break on the second week, when a shirt needs three sizes, soda sells by the crate and the piece, and somebody adds "Coca Cola 500ml" twice. The product model here carries variants, units and barcodes on one record, so the same item is one row no matter how many ways you sell it.

    Getting the list in is usually the whole setup job, so there are three ways to do it: a CSV template with a row-by-row preview, manual entry, or handing Amina a supplier invoice or a photo of your price list and letting her build it.

    Variants with their own price, stock and barcode

    Colour, size, flavour — each variant holds its own stock at each branch and its own images, under one parent product.

    Multi-unit pack sizes

    A crate, a six-pack and a single off the same stock, each with its own price and barcode, with stock tracked so selling a crate moves twelve pieces.

    Unit conversion

    Ask what a quantity in one unit is worth in another, so a stock figure in pieces can be read as crates without anybody doing arithmetic on a phone.

    Raw materials that are not sellable

    Flour, cooking gas, packaging. They are counted in stock and consumed by recipes but hidden from the POS, the product list and the storefront, so nobody sells a kilo of yeast by accident.

    Recipes and bills of materials

    Basic and up

    A plate of chips consumes potatoes, oil and a container. Selling it moves the ingredients, and the portions you can still make are a number rather than a guess.

    Optional recipe ingredients

    Basic and up

    A garnish that has run out should not cap the portions you can sell. Optional ingredients are consumed when present and ignored when not.

    Categories with images and bulk re-assignment

    Categories carry their own images for the storefront, and products can be moved between them in bulk rather than one at a time.

    Digital and service products

    Growth and up

    Sell a haircut, a delivery slot or a downloadable file alongside stocked goods, without inventing a fake stock figure for it.

    CSV import with preview and row checks

    Download the template, upload the file, see exactly which rows will create, update or fail — before anything is written.

    Amina-assisted import

    Hand her a supplier invoice or a photo of your price list and she builds the products, with you approving the result rather than typing it.

    Buying price history per product

    What you paid, each time you bought it. The line that tells you a supplier has been walking their price up.

    Setting the catalogue up

    Every movement recorded, every count independent.

    Stock you can trust

    A stock figure is only worth reading if every change to it left a record. Purchases, sales, transfers, adjustments, wastage and opening balances are all movements here, each carrying the user who made it and the reason they gave, so a discrepancy has a history rather than a shrug.

    The controls around the figure matter as much as the figure. Adjustments can require approval, daily counts are blind by design, and expiry is tracked at batch level so the oldest stock leaves first without anyone having to remember to check.

    Stock level per product, per branch

    Branches share one catalogue but hold their own stock, so what Kisumu has is never what Nairobi has by accident.

    A movement ledger for every change

    Purchase, sale, transfer, adjustment, opening stock and wastage, each with the user, the reason and the resulting balance.

    Adjustments behind an approval workflow

    Basic and up

    Bind a multi-stage workflow to stock adjustments, so writing off stock is a request somebody approves rather than a number somebody types.

    Stock takes with variance

    Count, submit, and see the difference against the system figure per line before you commit it.

    Blind daily stock confirmation

    Staff are given a list of products to count with no quantity pre-filled — nothing on screen can bias the number they type. It is the cheapest theft control in the system.

    Transfers between branches

    Basic and up

    A transfer is a recorded movement out of one branch and into another, with an audit trail, not a re-count at both ends.

    Low-stock alerts and reorder levels

    Set the level per product and get told before you are out, rather than when a customer asks for something you cannot sell.

    Batch and lot tracking with expiry

    Stock arriving on a purchase order or an opening count creates a batch with its own expiry date, consumed first-expired-first-out so the oldest goods leave first.

    Expiry reporting and notifications

    Basic and up

    See what expires in the next thirty days across every branch, and get told about it on a schedule instead of finding out at the shelf.

    Serialised units — VIN, serial or IMEI

    Growth and up

    Track individual physical units with their own cost ledger and consignment ownership, settle a consigned unit when it sells, write one off and restore it if the write-off was wrong.

    Bulk stock export and import

    Export every tracked unit to a spreadsheet, edit the quantities in the tool your team already knows, and re-upload the file.

    One answer to "what did this cost?"

    Cost resolves through a defined precedence — the unit, then the variant, then the product, then the catalogue cost — so the margin figure on a report is computed the same way everywhere it appears.

    Inventory management, in depth

    Wholesale, retail and the offer you are running this week, off one catalogue.

    Prices, price lists and promotions

    Every selling price in the system comes out of one resolver. Whether the sale is at the counter, on the website, to a walk-in or to a distributor buying forty cartons, the same rules decide the number — which is why a wholesale price can never quietly leak onto the storefront.

    Above the resolver sit the things a business actually asks for: a wholesale list with quantity breaks, a branch that charges differently, a coupon code for a campaign, and VAT handled the way the channel expects it.

    Price lists with quantity breaks

    Growth and up

    Ten cartons at one rate, forty at another. The break applies at the line, so the customer gets the right price without the cashier looking anything up.

    Rule-driven lists

    Growth and up

    Generate a whole list from a rule — a markup on cost, a discount off retail — instead of typing hundreds of prices and maintaining them by hand.

    Targeting by channel, branch and customer

    Growth and up

    A list can apply to the online shop only, to two branches, or to the customers you have assigned to it. Targets are explicit, so nothing applies by accident.

    Preview before you publish

    Growth and up

    Ask what a given customer, at a given branch, buying a given quantity, will actually pay — and see which rule decided it.

    Line and order discounts, manager-gated

    Discount a line or the whole order behind a manager PIN, with the authoriser recorded. Discounts stop being invisible.

    Online-store promotions

    Basic and up

    Percentage off, a fixed amount off, free delivery, or buy-one-get-one — running automatically or behind a coupon code, with start and end dates.

    Tax rates, inclusive or exclusive

    Configure the rates you charge, set a default, and apply them per product. The receipt shows the split the way KRA expects it.

    Tax-inclusive storefront prices

    Online shoppers see one number with VAT already in it, and the tax is extracted behind the scenes for reporting rather than added at the last step.

    Per-branch pricing

    Basic and up

    A branch with different rent and different customers can charge differently, while the product record stays the same everywhere.

    Pricing and promotions, in depth

    A real website on your own domain, not a catalogue link.

    An online shop off the same stock

    The storefront reads the same products, the same branch stock and the same price lists as the till. There is no sync job to fail overnight and no second ecommerce subscription — a web order and a counter sale move the same stock and land in the same report, tagged by channel so you can see which one is actually growing.

    It is a website, so it is treated like one: your own domain with HTTPS issued automatically, a theme matched to your trade, banners and page sections you arrange yourself, and server-rendered pages so Google and WhatsApp see your products rather than an empty shell.

    Your own domain with automatic HTTPS

    Basic and up

    Point the domain at us and the certificate is issued on first request. No certificate renewals to forget, no hosting bill separate from the POS.

    Themes matched to the trade

    Basic and up

    A pharmacy, a hardware shop and a boutique do not want the same layout. Themes are recommended by business type and switched from a settings screen, not a rebuild.

    Banners and reorderable page sections

    Basic and up

    Build the home page out of sections — featured products, a category row, a promotion banner — and drag them into the order you want.

    Checkout that takes Kenyan money

    Basic and up

    M-Pesa STK push, a manually confirmed paybill or till code, Paystack card and bank, cash on delivery, or an order sent straight to WhatsApp for the customers who only want to chat.

    Order tracking without an account

    Basic and up

    Customers follow their order from a tokenised link or look it up by phone number and order code. No password to forget on a KES 600 purchase.

    Branch-aware carts

    Basic and up

    The shopper picks a branch and the cart prices and reserves against that branch's stock, so a checkout never promises something the nearest shop does not have.

    Product inquiries

    Basic and up

    A question asked on a product page reaches you as a record with the product attached, instead of a WhatsApp message you lose by Thursday.

    Built-in technical SEO

    Basic and up

    Per-host robots.txt and sitemap.xml, canonical URLs, and pre-rendered HTML for crawlers and link previews. The shop is indexable the day it is published.

    Listing in the sell.ke store directory

    Basic and up

    Published shops appear in the public directory of active Kenyan stores, which is a discovery channel you did not have to buy.

    Setting up the online store

    Zones with their own rates, and a rider the order is actually assigned to.

    Delivery that pays for itself

    Flat-rate delivery is a margin leak with a friendly name: the KES 200 that covers Kilimani loses money on Rongai. Zones carry their own rates, the rate for the delivery address is the rate charged, and the fee is snapshotted onto the order so a later price change never rewrites history.

    Past the fee, delivery is an operational record — who it is assigned to, what state it is in, and what proof exists that it arrived. Orders from the counter and from the website both create one, so there is a single list to work from.

    Delivery options with their own zones and rates

    Basic and up

    Set up bike, van or courier as options, then give each one zones with their own prices. The zone rate is authoritative — the option's own amount never quietly overrides it.

    Options attached per product

    Basic and up

    A fridge and a packet of tea do not ship the same way. Assign options at the catalogue level so the checkout offers only what is actually possible.

    The fee is snapshotted onto the order

    Basic and up

    Changing a zone rate tomorrow does not change what yesterday's customer was charged, which is what makes the delivery line in the report reconcilable.

    Riders, assignment and unassignment

    Basic and up

    Assign a delivery to a rider, reassign it when plans change, and see each rider's open load rather than asking on a group chat.

    A status pipeline with an admin override

    Basic and up

    Pending, assigned, in transit, delivered, failed — driven by the rider, correctable by an administrator when reality and the app disagree.

    Proof of delivery

    Basic and up

    Capture confirmation at the door, so a "it never arrived" dispute is settled by a record instead of by whoever argues hardest.

    A delivery summary you can read in ten seconds

    Basic and up

    What is out, what is late, what is done, and what it earned in fees today.

    Free-delivery promotions

    Basic and up

    Run free delivery over a basket threshold as a promotion, with the cost visible in the report rather than hidden in the margin.

    Delivery zones and fees, in depth

    One profile that follows the customer across branches and channels.

    Customers, credit and loyalty

    A customer who buys at the counter in Nakuru, orders online on Friday and returns something in Nairobi is one person with one history. Profiles are shared across branches and channels, so the purchase history, the credit balance and the loyalty points all live on the same record.

    Credit is where small businesses in Kenya lose the most money to goodwill. A credit limit on the profile and an ageing report behind it turns "he always pays eventually" into a number with a date on it.

    Profiles shared across branches and channels

    The same customer at the till, on the website and in the delivery list — not three records that have to be merged later.

    Lookup at the counter by phone number

    Find the customer in a second while they are standing there, or create the record from the sale without leaving it.

    Full purchase history

    Every order, every channel, every branch. It is also the fastest way to check whether a returned item was actually bought from you.

    Credit limits and on-account sales

    Basic and up

    Set a limit per customer, sell against it, and have the till refuse the sale that would breach it.

    Receivables ageing

    Growth and up

    Who owes what, and for how long, straight out of the ledger rather than out of a spreadsheet somebody maintains.

    Loyalty points, earned and redeemed

    Growth and up

    Points accrue on qualifying sales and are redeemed as a tender, with a full history per customer so a disputed balance is auditable.

    Manual loyalty adjustments with a trail

    Growth and up

    Fix a balance when something goes wrong, with the adjustment recorded as an event rather than silently overwriting the number.

    Inquiries and messages tied to the customer

    Basic and up

    Questions from the online shop land against a record, so following up is a list rather than a memory exercise.

    Customers and loyalty, in depth

    Cost enters the system where the goods do.

    Buying, suppliers and approvals

    Margin is decided on the way in, not on the way out. Purchase orders carry the agreed cost, receiving them sets the cost on the stock that arrives, and the difference between what you ordered and what turned up is a variance you can see rather than a shortfall you absorb.

    Around that sits the control layer a growing business asks for: requisitions from staff who need stock, approval workflows with ordered stages, and supplier payments that post to the ledger instead of leaving the books to be reconstructed later.

    Suppliers with their own records

    Contacts, terms and the history of what you have bought from them and what you paid for it.

    Purchase orders — draft, send, receive, cancel

    A PO moves through real states, and receiving it is the event that creates the stock and sets its cost.

    Partial receipts

    Half the order arrives on Tuesday and the rest on Friday. Receive what came, leave the balance open, and keep one PO rather than three.

    Goods received notes that set cost

    The cost that arrives with the goods is the cost the margin is calculated against, per batch, so a price rise on one delivery does not silently rewrite the last one.

    Requisitions with submit, approve and reject

    Staff request what they need, a manager approves or rejects it with a reason, and the request is a record either way. Available on every plan.

    Approval workflows with ordered stages

    Basic and up

    Build a workflow with as many stages as the decision needs, and bind it to a module — stock adjustments or user management — so the control applies everywhere, not just where someone remembered it.

    Supplier payments posted to the ledger

    Growth and up

    Record what you paid a supplier and against which invoices, and watch payables fall instead of maintaining a second list.

    Expenses

    Growth and up

    Rent, power, transport and wages recorded against accounts, so the profit figure is a profit figure rather than a gross margin wearing its name.

    Purchase and supplier analytics

    Basic and up

    Purchase-order history, supplier stock positions and buying-price tracking over time — the reports that show you a supplier drifting upward.

    Purchasing and approvals, in depth

    A trial balance, not a CSV to hand your accountant.

    Real double-entry books

    Most POS systems in this market stop at a sales total and call it accounting. This one posts every sale, purchase, payment, refund and write-off to a double-entry chart of accounts as it happens, which means the financial statements are generated rather than assembled.

    The practical difference shows up at year end. Instead of exporting twelve months of transactions for somebody to rebuild, you hand over a trial balance, a profit and loss, a balance sheet and a cash flow statement that already agree with each other.

    Chart of accounts you control

    Growth and up

    Start from a sensible default and add the accounts your business actually uses, rather than forcing your business into somebody else's chart.

    Automatic posting from operations

    Growth and up

    Sales, cost of sales, purchases, supplier payments, refunds and stock write-offs post themselves. The ledger does not depend on anybody remembering to write it up.

    Journal entries and reversals

    Growth and up

    Post a manual entry when you need to, and reverse one when it was wrong — as a reversing entry, never as a deletion.

    Opening balances

    Growth and up

    Bring a live business onto the system mid-year without pretending it started trading today.

    Profit and loss, balance sheet, cash flow, trial balance

    Growth and up

    The four statements, for any date range, from the same ledger the till writes to.

    General ledger with drill-down

    Growth and up

    Follow a figure on a statement down to the account, the entry and the sale that caused it.

    Accounts receivable and accounts payable

    Growth and up

    What customers owe you and what you owe suppliers, aged, from the same source of truth as everything else.

    Margin by product, branch and channel

    Growth and up

    Because cost is captured on the way in, margin is a real number at every level rather than an estimate applied after the fact.

    Reports and accounting, in depth

    The numbers you check daily, and the ones that find problems.

    Dashboards, reports and analytics

    The dashboard answers the daily questions — what sold, what it made, who sold it, how people paid — for today, this week or any range you choose. Because the online shop and the till share one order table, every figure can be split by channel to show which side of the business is actually growing.

    Behind the dashboard sits the analytics layer: what is moving fast, what is about to expire, what a supplier has been doing to your buying price, and how many portions you can still make. These are the reports that find a problem before it becomes a write-off.

    Daily dashboard

    Sales, profit, order count and average basket for the period, per branch or across all of them.

    Split by channel

    Filter any report to counter sales or web sales, so a growing online shop is visible rather than blended into one total.

    Top products and product-level sales

    What sells, what it earns, and what it earns after cost — which are frequently not the same list.

    Cashier and staff performance

    Sales per user, discounts given, voids authorised. Useful for commission, and more useful for patterns.

    Payment method breakdown

    Cash versus M-Pesa versus card versus credit, which is how you reconcile the drawer against the shortcode.

    Category and inventory reporting

    Sales by category, stock valuation and movement summaries across branches.

    Advanced analytics

    Basic and up

    Item-sales detail, purchase-order analysis, expiry exposure, supplier stock, fast-moving lines, buying-price tracking and portions-in-stock for kitchens.

    Per-role dashboard permissions

    Hide the sales, stock or financial sections of the dashboard from roles that should not see them, so a supervisor can run a branch without reading its margins.

    Exports

    Take any of it to a spreadsheet when you need to work it a different way.

    Reports and accounting, in depth

    Permissions per role, scope per branch, a record of everything.

    Branches, staff and control

    Branches share one catalogue and hold their own stock, staff, prices and printer settings. Reports run per branch or across the chain, and a manager's access stops at the branch they run — a Kisumu supervisor does not need to see Nairobi's margins.

    Control is granular because the alternative is an admin login shared by four people. Roles carry per-action permissions, sensitive actions need a manager, logins can be PIN, password or two-factor, and the system log records what happened when somebody says it did not.

    Branches with their own stock, logo and printer

    Basic and up

    Each location has its own inventory and its own receipt setup, configured centrally, with a test print so you find out it works before the queue does.

    Roles with per-action permissions

    Build the role your business actually has — cashier, supervisor, stock controller, auditor — by switching individual permissions on, not by picking from three presets.

    Staff scoped to a branch

    Basic and up

    A user belongs to a branch and sees that branch's data. Administrators move across all of them.

    PIN login at the counter

    Cashiers switch in seconds on a shared till without typing a password in front of a queue — and each sale still carries the user who made it.

    Two-factor authentication and email OTP

    Turn on a second factor for the accounts that can see money, and verify an email address before it can be used to reset a password.

    Manager verification for gated actions

    The manager approves at the till without logging the cashier out, and their identity is recorded against the action.

    Log out every session at once

    When a phone goes missing or somebody leaves, end every active session for that account immediately.

    System log and audit trail

    Who changed what, when, and from where — including the permission denials, which is how a role misconfiguration gets diagnosed in minutes.

    Approval workflows on user management

    Basic and up

    Adding or editing a user can require approval, so nobody quietly grants themselves a role over a weekend.

    API keys with rotation and usage tracking

    Enterprise

    Issue a key per integration, see what it has been calling, and rotate it without downtime.

    Branches and team control, in depth

    Ask in the language you think in; she makes the change.

    Amina, the assistant that does the work

    Amina is not a chatbot bolted onto a help page. She answers questions about your actual data — what sold, what is short, why a figure moved — and then makes the change you asked for: creating the product, building the price list, adding the delivery zone, proposing the action for you to approve.

    She works in English or Swahili and replies in whichever the question was asked in, which matters at a counter where the owner's English and the cashier's Swahili are both the working language.

    Answers about your own numbers

    Not documentation. She reads your sales, stock and margins and answers the question you asked about them.

    She makes the change, you approve it

    Products, price lists, delivery zones and more arrive as a proposal you confirm — so a misheard instruction is a rejected suggestion, not a corrupted catalogue.

    Builds your catalogue from a photo

    Hand her a supplier invoice or a picture of your price list and she turns it into products, which is the single slowest part of setting a shop up.

    English and Swahili

    Ask in either, get the answer in the same one. Shorthand like "sp" and "bp" for selling and buying price is understood the way a shopkeeper uses it.

    Nudges worth reading

    Short prompts about the thing that actually needs attention today — stock about to run out, a payment unconfirmed, a report nobody has opened.

    Checks the premise before answering

    If the question assumes something your data does not support, she says so rather than producing a confident answer built on it.

    Meet Amina

    Compliant invoices from the same till that takes the money.

    KRA eTIMS and tax compliance

    eTIMS is not optional for a business that wants its customers to claim the expense. sell.ke connects to KRA in either mode — your own VSCU instance, or KRA's hosted OSCU — with the sandbox available first so you prove the connection before you file anything real.

    Around the integration sit the everyday compliance details: tax rates configured per product, sequential receipt numbering per business, and a submission log you can point at when a figure is questioned.

    eTIMS in VSCU or OSCU mode

    Growth and up

    Connect the VSCU instance you were issued, or use KRA's hosted OSCU service with no local device to run. Both are configured per branch.

    Device initialisation

    Growth and up

    Initialise the device against KRA from the settings screen rather than from a terminal somebody has to visit.

    Sandbox and production environments

    Growth and up

    Prove the integration against KRA's sandbox first. A misconfigured device should fail in testing, not on a customer's invoice.

    A submission log

    Growth and up

    Every invoice sent, its status and its response. When something is queried, the answer is a record rather than a reconstruction.

    Tax rates per product

    Standard, zero-rated and exempt lines on the same receipt, with the split shown the way KRA expects.

    Sequential receipt numbering

    Numbered in sequence per business, so a gap in the sequence is a question with an answer.

    QR-verified receipts

    Basic and up

    Anyone can scan the receipt and see the real purchase details, which is how an altered or forged receipt is caught.

    KRA eTIMS, explained

    Hosted, offline-tolerant, and on the phone in your pocket.

    The plumbing underneath

    There is no server to buy and no proprietary terminal. sell.ke runs in a browser on a laptop you already own, on a tablet at the counter, and as an Android app on Google Play with Bluetooth receipt printing and camera barcode scanning built in.

    The parts nobody markets matter most on a Kenyan connection: sales queue offline and sync when the line returns, notifications arrive live rather than on a refresh, and every plan is billed month to month with a trial that needs no card.

    Runs on what you already have

    Browser on Windows, macOS or Android, plus the Play Store app for phones and tablets. The only hardware most shops add is a thermal printer and a scanner.

    Android app with Bluetooth printing

    80mm thermal receipts over Bluetooth, camera barcode scanning, and the same live dashboard as the desktop.

    Offline mode with automatic sync

    Take sales, print receipts and reserve stock while the connection is down. Everything reconciles when it returns — the parts that are inherently online (STK push, eTIMS, the web shop) need a live link.

    Live notifications

    In-app, streamed over a live connection, and pushed to the phone — low stock, a new web order, a payment confirmed.

    Transactional email

    Receipts, order updates, payment confirmations and rejections go out automatically, with templates that carry your business name.

    More than one shop under one login

    Owners running separate businesses switch between them without a second account or a second password.

    Plan limits published, not hidden

    Starter covers one branch, ten users and 2,000 products; Basic three branches, twenty users and 5,000 products; Growth five branches, thirty users and 15,000 products; Enterprise is unlimited branches and products with a hundred users.

    Billing by card or M-Pesa, month to month

    Subscriptions renew through Paystack with auto-renew you control, a plan-change preview before you switch, and a 7-day trial that asks for no card.

    Programmatic API access

    Enterprise

    Read your catalogue and push data from your own systems using an issued key, for the businesses that have their own software to talk to.

    Your data stays yours

    Export what you hold, and request deletion through a confirmed, tokenised process rather than an email chain.

    Setup, growth and the plumbing

    Go deeper on one feature

    Each of these takes one area apart properly — the arithmetic, the edge cases and what it costs you to get it wrong.

    Selling at the counter

    Split payments, held orders, manager-gated discounts and a drawer count that reconciles.

    Stock you can trust

    Batch and expiry, serial numbers, reorder levels, stock takes and the formulas behind them.

    Getting paid the Kenyan way

    STK push at the counter, paybill and till confirmation, M-Pesa on the website — on your own shortcode.

    An online shop off the same stock

    A branded storefront on your own domain, reading the same products, stock and prices as the till.

    Delivery that pays for itself

    Zones with their own rates, so the delivery fee covers the delivery instead of eating the margin.

    Prices, price lists and promotions

    Wholesale and retail off one product, quantity breaks, customer-specific lists, VAT-inclusive display.

    Reports and real accounting

    Double-entry books — trial balance, P&L, balance sheet — not a CSV export to somebody else's software.

    Buying, suppliers and approvals

    Purchase orders, goods-received notes, supplier bills and the cost figure every margin depends on.

    Customers and loyalty

    Credit accounts that do not go missing, loyalty that returns, and a debtor list you can actually chase.

    Branches, staff and control

    Shared catalogue, separate stock, transfers that are movements, and permissions per branch.

    Amina, the assistant that does the work

    Answers in the language you asked in, then creates the product, the price list or the zone herself.

    Setup, growth and the plumbing

    Trial, product import, opening stock, eTIMS enrolment and a custom domain — in the order they matter.

    Built for your trade

    The same platform, set up the way each of these businesses actually runs.

    General retail / duka

    The broad-intent catch-all — links out to the specific trades.

    Supermarket

    Barcode speed, thousands of SKUs, multi-cashier shifts, expiry on fresh.

    Pharmacy

    Batch numbers and expiry dates, the expiry report, dispensing by strip or tablet.

    Restaurant & café

    Kitchen display, recipes that deduct ingredients, modifier groups, table holds.

    Hardware shop

    Sell by length or weight, wholesale versus retail lists, quotations, credit accounts.

    Electronics & phone shop

    IMEI and serial tracking, warranty by unit, consignment stock, high-value write-offs.

    Wholesale & distribution

    Quantity breaks, customer price lists, cartons in and pieces out, delivery zones.

    Butchery

    Selling by weight, cuts from one carcass, daily wastage, cold-chain stock takes.

    Bakery

    Raw materials and recipes, production runs, same-day expiry, order-ahead cakes.

    Salon & beauty

    Services priced per appointment alongside retail products, staff commission visibility.

    Agrovet

    Animal-health stock with batch and expiry, seasonal demand, farmer credit accounts.

    Clothing boutique

    Size-then-colour variants, per-variant stock, the online shop as a second branch.

    Stationery & office supplies

    School-season bulk orders, quotations to institutions, credit invoicing.

    Furniture & décor

    Made-to-order lead times, deposits, delivery fees by zone on bulky goods.

    Fuel station

    Shift reconciliation, the shop attached to the forecourt, credit customers.

    Car dealership

    One unit one serial, consignment settlement, quotations, very few and very large sales.

    Questions

    Questions about the feature list

    Do I get all of these features on every plan?

    No, and the list above says which is which — a capability with no plan note is on every plan, including Starter. The gated ones cluster in three places: the online shop, M-Pesa and multi-branch open up on Basic; accounting, price lists, loyalty, serialised inventory and KRA eTIMS on Growth; API access on Enterprise. You can change plan at any time and see the price difference before you confirm it.

    Is the online shop a separate product I pay for twice?

    No. It is the same subscription and the same catalogue. The storefront reads the same products, the same branch stock and the same price lists as the till, so a web order and a counter sale move the same stock and land in the same report. Plans from Basic upward include it, with your own domain and HTTPS.

    Can I turn features off for my staff?

    Yes. Roles carry per-action permissions rather than three fixed presets, so a cashier can sell without seeing cost prices, editing products or opening reports. Discounts, voids and refunds each sit behind a manager PIN independently, and the dashboard's sales, stock and financial sections can be hidden per role.

    What if I need something that is not on this list?

    Ask. The list above is what ships today, and it is maintained against the software rather than written once and left — but plenty of it exists because a merchant asked for it first. Serialised inventory came from a car dealership, optional recipe ingredients from a kitchen whose garnish kept capping its portions.

    Does it work with M-Pesa?

    Yes, at both ends of the business. At the counter a cashier sends an STK push and the customer approves it on their phone; the sale will not close until the confirmation lands. Merchants without Daraja API access can take a paybill or till payment and confirm the reference manually. On the online shop, M-Pesa is a checkout option like any other. The shortcode is the merchant's own, so the money lands in the business's account without sell.ke sitting in between.

    Can I use it for more than one shop?

    Yes. Branches share one product catalogue but hold their own stock, so a transfer between them is a recorded movement rather than a re-count. Reports run per branch or across all of them, and staff permissions are set per branch — a Kisumu supervisor does not need to see Nairobi's margins.

    Do I need internet?

    Not to keep selling. Offline mode lets the till take sales, print receipts and reserve stock while the connection is down, then syncs everything when it returns. You do need connectivity for the parts that are inherently online: an M-Pesa STK push, an eTIMS submission and the online shop all need a live link.

    How long does setup take?

    A single-counter duka is usually selling the same day. The work is the product list, not the software: import a CSV or let Amina create products from a supplier invoice or a photo of your price list. A multi-branch business with thousands of SKUs, opening stock counts and an eTIMS enrolment should plan a week and run the old system in parallel for a fortnight.

    Can I sell online with the same system?

    That is the point of it. The storefront reads the same products, the same branch stock and the same price lists as the till — there is no sync job and no separate ecommerce subscription. A web order and a counter sale move the same stock and land in the same report, tagged by channel so you can see which one is actually growing.

    Will it show me my profit?

    Yes, and from a real ledger rather than a sales total. Every sale posts to a double-entry chart of accounts, so you get a trial balance, profit and loss, balance sheet and cash flow — not a CSV to hand your accountant. Margin is visible per product, per branch and per channel, because cost is tracked on the way in through purchase orders and goods-received notes.

    Can I stop staff from giving discounts or deleting sales?

    Yes. Discounts, voids and refunds sit behind a manager PIN, and every one of them records who authorised it and when. Staff accounts carry role permissions, so a cashier can sell without seeing cost prices, editing products or opening reports. A void that reverses stock is a movement in the audit trail, not a gap in it.

    What does it cost?

    Plans run from USD 12/month for a single-location till to USD 115/month for unlimited scale, with the online store on your own domain included from USD 23/month. In Kenya the same plans are KES 1,499 to KES 14,999/month, billed in shillings. Every plan starts with a 7-day trial and no card, and there is no per-terminal licence and no commission on your sales. There is no hardware to buy either — sell.ke runs on a phone, tablet or laptop you already own.

    Comparing systems rather than reading a feature list? Best POS system in Kenya puts sell.ke next to what else is available in Kenya, and the pricing page lays the four plans out side by side.

    See it on your own products

    Fourteen days, no card. Import your product list or let Amina build it from a photo of your price list, and run it alongside whatever you use now.