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

    Uganda · URA EFRIS

    Your sales, already in the shape EFRIS wants them

    URA does not ask you for a total. EFRIS asks for the line: what you sold, how many, in what unit, at what price, under which tax treatment, and who bought it when the buyer wanted the invoice in their own name.

    That is a record-keeping problem long before it is a tax problem. A shop whose account of the day is a till roll and a notebook has to rebuild that detail every period, from paper and from memory — and rebuilt numbers are exactly the ones that come apart when somebody checks them against your stock.

    sell.ke captures the detail at the counter as a by-product of selling, because stock control and margin reporting need the same fields EFRIS does.

    What you get

    What you have by the time you go to file

    Every line of every sale

    Item, quantity, unit of measure, unit price, discount and tax treatment, recorded as the sale happens rather than reconstructed at month end. Nothing to retype, and nothing to remember.

    Buyer details where they are needed

    A walk-in buys and goes. A contractor, an NGO or a government buyer needs the invoice in their name — so the counter captures the name and TIN against that sale and only that sale.

    One catalogue, with units and tax categories

    EFRIS invoices against goods you have registered, in the units you registered them in. Keeping the shop's own catalogue in those same descriptions and units is what stops a crate being invoiced as a bottle.

    Per-branch, per-period exports

    Kampala and the upcountry shop file from their own numbers rather than from a pooled total somebody split by hand afterwards.

    Step by step

    Getting a Ugandan shop EFRIS-ready

    1. Sort the URA side first

      Your TIN, your VAT registration and your EFRIS access are between you and URA — through the EFRIS web portal, the mobile app, an EFD, or a system-to-system arrangement. Do that before you touch the shop's records, because it determines the descriptions and units everything else has to match.

    2. Build the catalogue once, in EFRIS's vocabulary

      Enter each product in sell.ke using the same description and the same unit of measure you registered on your EFRIS goods and services list. A soda registered in bottles and sold in crates is the single most common reason a filing and a stock figure refuse to agree.

    3. Set the tax category per product

      Standard-rated, zero-rated or exempt, set once on the product rather than decided at the counter. The day's totals then split themselves by tax treatment instead of being split by someone reading a till roll.

    4. Sell normally, and capture the buyer when it matters

      Cashiers sell the way they always have. The one extra step is attaching a customer — name and TIN — to the sales that need an invoice in a specific name, which takes seconds at the counter and is impossible to reconstruct a month later.

    5. Export the period and raise the documents

      At the end of the period, pull the sales and tax report for each branch. Every figure you need for the EFRIS side is already itemised, already in the right units and already attributed to the right buyer — the filing becomes a transfer of data you hold rather than an investigation into what happened.

    What EFRIS asks of a seller

    EFRIS — the Electronic Fiscal Receipting and Invoicing Solution — is how URA requires VAT-registered taxpayers to issue invoices and receipts. A document raised through it carries a Fiscal Document Number and a verification code the buyer can check, which is the point: the buyer's claim and the seller's declaration come from the same record.

    There is more than one way in. Businesses integrate system-to-system, or use a fiscalised device, or key documents into the EFRIS web portal or the mobile app. The route you take changes the mechanics and changes nothing about the data: whichever door you go through, you are asked for the lines, not the total.

    Two details catch people out. The first is that you invoice against goods and services you have registered, in the units you registered — so your shop's own product list and your EFRIS list have to be the same list, or somebody is translating between them every month. The second is that a credit note is not something you simply issue; it goes back to URA, which means a return or a correction has to be traceable to the original sale rather than scribbled over it.

    • Line-level detail per sale — item, quantity, unit, unit price, tax treatment
    • Buyer identification, including TIN, where the buyer needs a named invoice
    • Goods invoiced in the units they were registered in
    • Returns and corrections traceable to the original document
    • A record that still agrees with your stock when somebody compares the two

    Where it actually goes wrong in a shop

    Almost nobody fails EFRIS on the filing. They fail on the gap between what the shop did and what the shop can prove it did.

    A till roll records prices, not products — so a month later the sales you declare are a reconstruction, and a reconstruction cannot be cross-checked against what left your shelves. Units drift: you buy in cartons, sell in pieces, and the EFRIS list says one of those while the shop says the other. Credit customers pay in instalments and the invoice gets raised against the payment rather than the delivery. A second branch opens and the two sets of numbers are pooled before anyone has split them by tax treatment.

    Each of those is a bookkeeping failure that shows up as a tax problem. Which is why the fix is not tax software — it is keeping the shop's own record at the level of detail the filing already assumes you have.

    What sell.ke holds, and why it is already the right shape

    A sale in sell.ke is a set of lines, not an amount. Each line names the product, the quantity, the unit, the price actually charged, the discount if there was one, and the tax category carried by that product. That is not a compliance feature — it is what stock control needs in order to take the right item off the shelf and what margin reporting needs in order to tell you what you made. EFRIS happens to want the same fields.

    The catalogue carries a unit of measure and a tax category per product, so the shop stops translating between what it buys, what it sells and what it declares. Branches hold their own stock and produce their own totals. Discounts, voids and refunds sit behind a manager PIN and leave a named entry in the audit trail, so a correction is a traceable movement rather than a hole where a sale used to be.

    And because the till is offline-first, a connection that drops upcountry does not cost you the record. Sales keep being taken at full detail and sync when the line comes back — the thing you can least afford to lose is the thing least dependent on the network.

    • Unit of measure and tax category set on the product, not chosen at the counter
    • Customer records with TIN, attached to the sales that need them
    • Branch-level sales, stock and tax splits
    • Manager-authorised voids, refunds and discounts, each with a name against them
    • Sales and tax exports per period, per branch

    Compare

    Three ways Ugandan shops keep the record

    Same filing obligation, three different amounts of work — and three different answers when somebody asks you to prove a figure.

    What you are comparingTill roll + notebookSpreadsheet at month endsell.ke
    Line detail per salePrices onlyWhatever was rememberedCaptured as the sale happens
    Unit of measureImpliedTranslated by handSet on the product
    Buyer TINOn a separate padChased afterwardsAttached to the sale
    Agrees with your stockNo way to checkOnly if both were rightSame record moves both
    Second branchA second notebookA second tabIts own totals, one catalogue
    Preparing a periodDaysHoursAn export

    sell.ke does not submit documents to URA. What it removes is the reconstruction that happens before you submit them.

    What sell.ke does not do here

    sell.ke does not submit to EFRIS on your behalf, and it does not issue Fiscal Document Numbers. Kenya's KRA eTIMS is the one revenue-authority integration the platform ships today; in Uganda the platform is the record and the filing stays yours, raised through whichever EFRIS route you already use.

    That is a deliberate line rather than a gap we are hiding. A POS that claimed to file for you and then did not would cost you penalties, not a subscription. If a URA integration ships, this page will say so in these words and on this URL — not by quietly dropping this section.

    Questions

    EFRIS and your POS (Uganda) — questions

    Does sell.ke submit my invoices to EFRIS?

    No. sell.ke does not transmit to URA and does not issue Fiscal Document Numbers. It holds every sale at the line detail an EFRIS document needs — item, quantity, unit, price, tax treatment, buyer TIN — and exports it per period and per branch, so raising the documents is a transfer of data you already have rather than a reconstruction of a month you half remember. KRA eTIMS in Kenya is currently the only revenue-authority integration the platform ships.

    I already use the EFRIS portal and the mobile app. Does this replace them?

    No, it feeds them. The portal and the app are where the document is raised; the question they cannot answer is what you actually sold. sell.ke is the shop's own record — the stock that moved, the price it moved at, the branch it moved from — which is the input to the filing and the thing an audit compares the filing against.

    My EFRIS goods list and my shop's product names do not match. Is that a problem?

    It is the most expensive small problem in the whole exercise, because every mismatch becomes a manual translation every single month and a discrepancy every time somebody checks. The fix is to enter the catalogue in sell.ke using the descriptions and units you registered with URA. Do it once, at setup, and the translation step disappears — Amina can build the catalogue from a photo of your price list or a supplier invoice, so matching descriptions is editing rather than typing.

    What about credit notes and returns?

    A return in sell.ke reverses the original sale rather than being entered as a new negative transaction, so the credit is traceable to the document it corrects — which is what URA's approval step for a credit note assumes. Refunds and voids sit behind a manager PIN and record who authorised them, so your correction has a name and a timestamp against it rather than being a gap in the sequence.

    I am below the VAT threshold. Is any of this relevant?

    The EFRIS obligation follows VAT registration, so if you are not registered the filing is not yours to do yet. The record-keeping still is: businesses cross that threshold on a rolling turnover, usually without noticing until later, and the ones who struggle are the ones with no itemised history to work from. Running the shop on a real record from the start means registration is a form, not a reconstruction project.

    Does it handle both Kampala and an upcountry branch?

    Yes. Branches share one catalogue — so the descriptions and units stay identical across them — but hold their own stock and produce their own sales and tax totals. You file from each branch's real numbers instead of splitting a pooled figure by hand, and a transfer between branches is a recorded movement rather than a stock count that has to be redone at both ends.

    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.

    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 14-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.

    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.