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

    Rwanda · RRA EBM

    EBM asks three questions. Most shops can answer one.

    Rwanda runs the tightest electronic billing regime in the region, and the thing that makes it tight is not the invoice. It is that EBM is interested in your purchases and your stock as well as your sales — and it cross-checks them against each other.

    A shop can issue a perfect EBM invoice for every sale and still be exposed, because the stock figures behind those invoices were entered once at setup and have been drifting ever since. The invoices say one thing. The shelf says another. RRA can see both.

    sell.ke is the ledger underneath. Purchases in with a cost, sales out with a line, stock moving as a consequence of both — so the numbers you declare are produced by the business rather than typed in to match it.

    What you get

    The three answers, from one record

    What you bought

    Purchase orders and goods-received notes against named suppliers, in Rwandan francs, with the cost attached. Your input side stops being a drawer of delivery notes.

    What you sold

    Every sale as lines — item, quantity, unit, price, tax category — so a declared figure can be traced to specific goods leaving specific shelves.

    What you still hold

    Stock as a running consequence of the first two, not a number somebody refreshes when they remember. A variance has a product and a date attached to it.

    Who touched it

    Discounts, voids, refunds and stock adjustments all carry the name of whoever authorised them. A correction is traceable rather than invisible.

    Step by step

    Getting the stock side of EBM honest

    1. Count once, properly

      Take an opening count branch by branch and enter it as your starting position. This is the only moment the number is allowed to be an assertion rather than a calculation — everything after it should be derived.

    2. Put purchases through the system, not the drawer

      Every delivery goes in as a goods-received note against a supplier, with the cost. This is the step shops skip, and skipping it is what makes stock figures unprovable: without a recorded input, the only explanation for a shortfall is theft or error, and you cannot tell which.

    3. Match your item codes and units to what you declare

      Use the same descriptions and units in the shop's catalogue as on your EBM item list. A mismatch here guarantees a manual translation every period and a discrepancy every time somebody compares the two.

    4. Sell through the till, including the small sales

      The sale that goes through the drawer without being rung up is the one that breaks the chain. Once every sale moves stock, the gap between the computed position and a physical count becomes a measurement instead of a mystery.

    5. Count again, and read the variance

      A monthly or quarterly count now tells you something: which products are short, by how much, and over which period. That is a management report first and an audit defence second — and both are only possible because the other four steps happened.

    What EBM is actually checking

    An EBM invoice carries a signature and a code that ties it to RRA's record, and buyers are actively encouraged to ask for one — the campaign to request your receipt has been running long enough that customers now do. That part is well understood.

    The part that catches businesses is the rest of it. The system is designed to see the input and the output: what you purchased, what you sold, and therefore what you should still be holding. Those three figures are supposed to reconcile, and a VAT position that only works if the stock figure is wrong is a VAT position somebody will eventually ask about.

    Which means the compliance question in Rwanda is really an inventory question. A shop that cannot produce a defensible stock position cannot defend the declarations built on top of it, however correctly each individual invoice was issued.

    • Invoices tied to RRA's record and verifiable by the buyer
    • Purchases recorded, so input VAT has something behind it
    • Stock that reconciles against purchases and sales
    • Item codes and units consistent between your records and your declarations

    Why the stock figure is the one that fails

    Keeping a stock position accurate by hand is not hard because the arithmetic is difficult. It is hard because it requires every movement to be recorded by somebody who gains nothing from recording it, every day, including during the rush, including the item taken for a staff member, including the breakage, including the three units moved to the other branch.

    So the position decays. It decays fastest in exactly the businesses the regime is most interested in — the ones with volume, multiple people on the counter and more than one location.

    The only sustainable fix is to make the recording a side effect of something the business does anyway. A sale has to be rung up to take money. A delivery has to be received to be sold. If stock moves because of those two events rather than because somebody remembered, the position stays true without anybody maintaining it.

    What sell.ke gives the Rwandan shop

    Prices, costs, margins and reports all in Rwandan francs, with no mental conversion and no spreadsheet doing the arithmetic. Mobile money is the default at the counter — MoMo first, Airtel Money second — and both are recorded against the sale, so the day's takings reconcile against the wallets instead of beside them.

    Branches share one catalogue and hold their own stock, so a second shop in Kigali or a location outside it is a set of real numbers rather than a second set of books. Transfers between them are recorded movements, which is the difference between a stock position that survives a transfer and one that has to be re-counted at both ends.

    And permissions are per role: a cashier sells without seeing cost prices or opening reports, while adjustments, voids and discounts need a manager PIN and leave a name behind. That is what makes the variance report readable — if stock moved and nobody authorised it, that itself is the finding.

    • Everything in RWF — prices, stock values, margins, reports
    • MTN MoMo and Airtel Money recorded against the sale, split at day-end
    • Branch stock, branch totals, one shared catalogue
    • Manager-authorised adjustments with a named audit trail
    • Offline-first till, so the record does not depend on the connection

    What sell.ke does not do here

    sell.ke is not an EBM and does not transmit to RRA. It does not sign invoices, issue the verification code, or replace the EBM software or device you are registered with. Kenya's KRA eTIMS remains the one revenue-authority integration the platform ships.

    What it does is make the stock and purchase side of your declarations real. The invoice is issued through EBM as it is today; what changes is that the figures behind it are produced by a ledger rather than maintained by hand.

    Questions

    EBM and your stock (Rwanda) — questions

    Does sell.ke replace EBM?

    No. EBM is how the invoice is issued and signed for RRA; sell.ke is the business record behind it — purchases with costs, sales as lines, and a stock position that follows from both. They answer different questions, and the one most shops are weak on is the second.

    Why does my stock figure matter for tax at all?

    Because purchases, sales and closing stock are supposed to reconcile. If the goods you bought and the goods you sold imply a holding that your shelf does not have, the difference is either unrecorded sales, loss, or an error — and a business that cannot say which is in a weak position. Keeping a derived stock position means the variance is measured, explainable and usually small.

    Can it keep prices and reports in Rwandan francs?

    Yes. The shop runs in RWF end to end — prices, stock values, costs, margins and every report. Subscription billing is quoted in KES; talk to the team about settlement in francs.

    Does it take MoMo and Airtel Money?

    Both are recorded against the sale at the counter, so the day's takings split by rail and reconcile against your wallet statements rather than being compared to them by eye. sell.ke does not push a payment request to the customer's phone in Rwanda — M-Pesa STK push in Kenya is the one mobile-money push the platform ships — so the customer pays to your own merchant code exactly as they do now.

    I have two shops. Does each one need its own setup?

    No. One account, one catalogue, separate stock and separate totals per branch. A transfer between them is a recorded movement rather than a write-off at one end and a surprise at the other, and permissions are set per branch so each supervisor sees their own shop.

    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.

    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.

    Try it on your own products

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