The parts that take some explaining

Advanced features, and what they actually do

Some features fit on a bullet point. These eight do not — they are the ones that sound like marketing until you see the mechanism. So each one below is set out the same way: how it works, a worked example of somebody using it, and the design decision behind it that is usually the most convincing part.

Accounting

Photograph a receipt, and it lands in your books

Point your phone at a till slip or forward a supplier invoice. Vendorah reads it, shows you every field it pulled off the page, and once you approve it the expense is posted to the ledger as a real double-entry journal — not a note in a list.

How it works

  • Capture by camera, upload, or attach a photo to a message and tell Vallery to file it.
  • A PDF that already contains its own text is read deterministically — no model involved. Eskom, Vodacom, Telkom and anything produced by accounting software fall into this path.
  • A photograph of a curled thermal slip taken at an angle goes to a vision model instead, because keyword rules over OCR do badly on that and always will.
  • Both paths produce the same extraction and land in the same review screen — supplier, date, total, VAT, document number.
  • You correct anything wrong, pick the expense account, and approve. That is what creates the expense.
  • Approval posts through the same path as every other cost, so the trial balance, the P&L and the VAT return all move together.

In practice

A hardware store owner comes back from the wholesaler with a handful of slips.

  1. 1Photographs the first slip in the document inbox — a R1 240.50 till slip from Builders.
  2. 2Vendorah reads it: supplier “Builders”, date, R1 240.50 total, R161.80 VAT, and files it for review.
  3. 3The owner sees the total was read as 1 240.50 but the slip says 1 245.50 — a smudged digit. They correct it in the field.
  4. 4They file it to “Cost of sales — materials”, mark it paid by card, and approve.
  5. 5A journal entry is written: materials debited, bank credited, VAT input recorded.

The result: The expense is in the books, the VAT is claimable, and the photograph stays attached to the entry as the supporting document.

A person is always the one who posts it

Nothing the extractor produces reaches the ledger on its own. Approval requires a named user, and journal entries are immutable once written — a mistake past that line is corrected by a reversal that stays in the audit trail forever, never by a silent edit. That asymmetry is why the review step exists rather than an “auto-file” toggle.

Accounting

Import a bank statement without double-counting the month

Drop in the statement your bank gives you — OFX, CSV or PDF. Vendorah parses it, works out which lines your books already know about, categorises the rest, and posts only what you approve.

How it works

  • The format is decided by reading the bytes, not the file extension — a CSV your bank named “.txt”, or one that is really tab-delimited, still imports.
  • Every line is given an id derived from the shop and the transaction, so the same payment downloaded twice — once as CSV, once as OFX — cannot post twice.
  • Recurring narratives are categorised by deterministic rules. Eskom, the municipality, the landlord, the couriers and the card machine recur every month with the same wording.
  • Rules are direction-aware: “YOCO SETTLEMENT +12 480.00” is the day’s takings, “YOCO MONTHLY FEE −299.00” is a cost. A rule is never applied against its stated direction.
  • Anything the rules do not recognise goes to a categoriser for a suggestion you confirm.
  • Running balances, dates and totals are verified against the statement itself, and anything that does not add up is raised as a warning rather than swallowed.

In practice

A café owner who has been photographing receipts all month imports February’s statement.

  1. 1Uploads the PDF statement. 214 lines parse, with the opening and closing balances verified against the running total.
  2. 2Vendorah flags 38 lines as already in the books — the receipts already captured, the invoices already issued, the Vendorah payouts already recorded.
  3. 3Those 38 are excluded from the bulk approve and shown with what they matched, so the owner can see why.
  4. 4Of the remaining lines, the rules file the rent, the Eskom debit order, the insurance and the card-machine fees automatically.
  5. 5Eleven unfamiliar lines are left for the owner to categorise; they do it in one pass.

The result: The month is reconciled, the bank balance in the books matches the statement, and nothing was booked twice.

A matched line is never posted by default

This is the check that makes bank import safe to offer at all. An owner who has been capturing receipts already has most of the month recorded; the statement is a second account of the same events. Import it blind and every captured cost is booked again — and the trial balance still balances perfectly, because two plausible entries for one real event is not an imbalance. It is just wrong. A false match costs one line of your attention; a missed one costs a wrong set of books.

Accounting

Real double-entry books, and a folder you can hand your accountant

Vendorah keeps proper double-entry books behind your shop — not a sales report dressed up as accounting. Every figure is held in integer cents, every report is generated from the journal, and all of it exports as CSVs an accountant can open without asking you a single question.

How it works

  • Sales, fees, settlements, payouts, captured receipts and imported bank lines all post to one ledger.
  • Reports generated from the journal: profit and loss, balance sheet, trial balance, cash flow, VAT return, account ledger, journal listing and chart of accounts.
  • A reconciliation report explains why the books and the order-based figures differ, when they do — instead of leaving you to guess which screen is lying.
  • Money is integer cents everywhere. Amounts added up in floats do not reconcile.
  • Exports are CSV, one per report, each opening with a header block naming the shop, the report and the exact period.
  • Quotations and invoices are generated from the same data, as branded PDFs.

In practice

It is the end of the tax year and an accountant has asked for “the usual”.

  1. 1The owner picks the financial year and exports the trial balance, the profit and loss, the balance sheet and the VAT summary.
  2. 2Each file opens with the shop name, the report name and the period, so none of them is ambiguous three weeks later in a Downloads folder.
  3. 3Amounts come out as plain decimals — 1250.00, −430.15 — with no currency symbol and no thousands separator, so Excel, Sage and Xero all read them as numbers.
  4. 4Dates come out as ISO YYYY-MM-DD in South African time, so an entry at 01:30 on the first of the month stays in that month.
  5. 5The accountant opens them and gets on with it.

The result: No screenshots, no “can you just send me the sales figures”, no rebuilding the year from bank statements in March.

The export is hardened, not just formatted

Text cells beginning with =, + or @ are escaped before they leave. Account names and memos are typed by owners, and a spreadsheet treats a leading equals sign as a formula — which is both a corrupted export and, with the right payload, a way to run something on your accountant’s machine. Amounts are exempt, because a negative figure has to stay a number.

Catalogue

Photograph a shelf, get a listed product

The fastest way to get a physical shop online. Photograph a product twice — front and back — and Vendorah reads the packaging, decodes the barcode, reads the shelf price and assembles a finished listing. No typing.

How it works

  • You frame the product inside the alignment boxes; the crops go to a vision model that reads the packaging.
  • The barcode is decoded by a checksummed reader, not by OCR — a barcode either decodes or it does not, and a mistyped GTIN is worse than none because it is a wrong identifier that looks right.
  • The shelf price is read and parsed, so the ticket on the shelf becomes the listing price.
  • Category, product type and the perishable/consumable flags are decided by the same AI filing check the product form already uses — reused, not reimplemented, so a stock-taken product is filed by identical judgement to a typed one.
  • Marketplace tags are generated by the same tagging step every other listing goes through.
  • It is a session, not a single product: saving returns you to the camera with a running count, and the camera stream is held open across the whole aisle.

In practice

A small grocer with 400 lines on the shelves and nothing online.

  1. 1Opens the stock take at the top of the first aisle and frames a 500 g bag of rice.
  2. 2Front photograph: the vision model reads the brand, the product name and the weight. The barcode decodes from the same frame.
  3. 3Back photograph: ingredients and the rest of the pack detail come off the panel.
  4. 4The shelf ticket is captured and parsed — R32.99 — and becomes the price.
  5. 5The filing check picks the category and flags it consumable; tags are written. The owner glances at the review card, adjusts the stock count, and saves.
  6. 6The camera is already back up for the next item.

The result: An aisle becomes a catalogue in an afternoon instead of a fortnight of typing, and every product is filed by the same rules as the rest of the shop.

Two deliberate limits, both to keep the session moving

Nothing is uploaded until you save — the captures live in memory, so a bad photograph or a phone call costs the store nothing and leaves no orphan files. And a stock-taken product starts as collection-only, because courier delivery needs parcel dimensions and a shelf photograph does not contain them. Requiring them would stop an unattended capture dead at the last step, which is the one thing this feature exists to avoid. You add dimensions later, in bulk.

Tools

An all-in-one QR code creator, built into your store

Point a QR code at anything — your storefront, one product, a booking page, a menu — and style it to match your brand. Generated in the browser, downloadable in four formats, with your own logo in the middle.

How it works

  • Any destination you paste: your Vendorah store URL, a single product, a service, a booking link, or anything else.
  • Six dot styles — square, dots, rounded, classy, classy-rounded, extra-rounded — plus separate corner-square and corner-dot styles.
  • Your own colours for dots, corners and background, and an adjustable quiet zone and corner rounding.
  • Drop your logo into the centre, size it, and optionally hide the dots behind it so it stays legible.
  • Download as PNG, SVG, JPEG or WEBP — SVG for anything going to a printer, PNG for screens.
  • Generation happens entirely in the browser, so nothing about the code leaves the device.

In practice

A food truck that wants people in the queue ordering on their phones.

  1. 1Opens the QR creator from the store’s Tools tab and pastes the storefront URL.
  2. 2Sets the dots to extra-rounded in the brand’s deep orange, with the corners in near-black.
  3. 3Uploads the truck’s logo, sizes it to sit in the middle, and hides the dots behind it.
  4. 4Downloads it as an SVG for the printer and a PNG for Instagram.
  5. 5The SVG goes on a corrugated board sign; the PNG goes in the bio.

The result: One code, on-brand, that scans off a sign at two metres and works just as well at 40 pixels in a social post.

SVG is the one that matters for print

A QR code printed from a PNG is only as sharp as the pixels it was exported at, and a sign blown up from a screen-sized export scans badly in poor light. The SVG is vector — the same file works on a business card and a pavement banner.

Storefront

Premium website templates you edit in place

Seven full storefront designs, each a complete website rather than a colour scheme. Preview one with your own products already in it, edit the text and images directly on the page, recolour it to your brand, and promote it to your live store with one button.

How it works

  • Seven premium templates: bespoke (image-rich), Velvety (health & beauty), Inwood (subtle & clean), Salla (tech merchant), Market (grocery & everyday), Lookbook (fashion) and Hearth (homeware & décor).
  • Each one previews with your real catalogue in it, so you are judging your shop rather than a demo.
  • Headings, body copy, testimonials and blog titles are editable inline — click the text on the page and change it.
  • Images and links are editable the same way, and a product picker lets you choose which items fill each feature slot.
  • A colour panel recolours the template between a darkest and a lightest tone, so it can be brought to your brand without a designer.
  • Separately, six grid layouts — Default, Grid, Magazine, Boutique, Story and Café — change how the product grid itself is arranged.
  • “Use as storefront” promotes a template to your public store page. One switch, reversible.

In practice

A homeware maker whose storefront looks like everyone else’s.

  1. 1Opens the custom store layout screen and previews Hearth with their own products already rendered in it.
  2. 2Clicks the hero heading and rewrites it in their own words.
  3. 3Uses the product picker to put their three best sellers in the feature row.
  4. 4Opens the colour panel and sets the darkest tone to their deep charcoal and the lightest to their warm off-white.
  5. 5Presses “Use as storefront”.

The result: The public store URL now renders a designed site with their catalogue in it — no theme files, no developer, and reversible if they change their mind.

Templates read a fixed data feed, not your database

Every template renders from the same published storefront feed, addressed by path. That is why a template written for one shop works unchanged for every other one — and why a typo in one binding leaves one blank slot instead of failing the whole page.

Bookings

A calendar that books the person *and* the equipment

Most booking systems can hold a diary for staff. Vendorah models anything whose time gets consumed — a person, a treatment room, a laser, a salon chair, a bakkie — as the same kind of thing. So a service that needs a technician *and* a machine *and* a bay books all three, or it does not book at all.

How it works

  • Resources come in six types: staff, room, device, station, vehicle and other.
  • A service holds a resource shopping list — “1 from the qualified-stylists group, 1 colour-capable chair, 1 laser unit”. Every line must be satisfiable at the same moment for the slot to be offered.
  • Groups are interchangeable pools, so a booking can take any qualified stylist rather than naming one.
  • Each resource can be limited to the services it can actually perform — a colourist who does not cut, a bay that takes a service but not a respray.
  • Capacity is per resource: 1 for a chair or a person, higher for a room that seats a class.
  • You choose whether the customer picks who serves them or the engine assigns it.
  • Time off, maintenance and breaks are blocked per resource, so nothing can be booked into them.
  • Resources carry their own colour from the design palette, so the day view is readable at a glance.

In practice

A beauty salon offering laser hair removal, which needs a certified therapist, the laser unit, and a private room.

  1. 1The service is given three requirement lines: one from the “laser-certified therapists” group, the laser unit itself, and one from the “private rooms” group.
  2. 2A customer picks Thursday. The engine only offers times where a certified therapist, the laser and a room are all simultaneously free.
  3. 311:00 is not offered — the laser is free and so is a room, but both certified therapists are booked.
  4. 4The customer takes 14:30. All three are held for the duration.
  5. 5The therapist calls in sick on Thursday morning. The owner reassigns the booking to the other certified therapist from the day view; the laser and room holds stay exactly as they were.

The result: No double-booked equipment, no appointment accepted that the salon physically cannot deliver, and a reassignment that takes one drag instead of three phone calls.

One entity for people and things is the whole trick

Modelling a stylist and a chair as the same kind of record is what lets a service require “one stylist AND one chair” without special-casing either. A system that treats staff as first-class and equipment as an afterthought cannot express that requirement at all — which is why so many salons end up with a second, paper diary for the machines.

Bookings

Venue and accommodation booking, by the night

The same calendar sells rooms, cottages, units and venues by the night — with per-night pricing, seasons, guest limits, deposits and cleaning turnover, alongside the appointments in the same diary.

How it works

  • A unit is sold as an entire place, a private room, or a bed in a shared room, with its own bedrooms, beds, bathrooms and guest limits.
  • Check-in and check-out are stored as wall-clock times in the unit’s own timezone, so “check in from 3pm” stays 3pm through a daylight-saving change, wherever the guest booked from.
  • Turnover hours after each checkout become the booking’s buffer — the same clash detection that keeps two appointments apart keeps a guest out of a room still being cleaned.
  • Minimum and maximum nights, how far ahead a guest may book, and how much notice you need are all set per unit.
  • Pricing is per night, and each night records whether it came from the base rate, a weekend rate or a season — so a guest can see why Friday cost more.
  • A long-stay discount, extra-guest fees, cleaning and pet fees, and named levies like VAT or a tourism levy are itemised on the quote.
  • Deposit and balance are split out, so you can take a holding amount now and the rest later.
  • Bookings from Airbnb or Booking.com can be mirrored in to block the dates.

In practice

A guesthouse with four rooms and a function room, half its bookings coming from Airbnb.

  1. 1Each room is a stay unit: entire place, sleeps 2 standard and 4 maximum, check-in from 15:00, check-out by 10:00, three hours turnover.
  2. 2December is set as a season at a higher nightly rate; Fridays and Saturdays carry the weekend rate year-round.
  3. 3A guest books 19–22 December for three people. The quote itemises three nights at the season rate, one extra guest, the cleaning fee and VAT, and splits a deposit from the balance.
  4. 4The Airbnb bookings are mirrored in, so those nights are blocked and cannot be sold twice.
  5. 5The function room sits in the same diary as an ordinary bookable resource, so a Saturday wedding and the rooms it fills are visible together.

The result: One calendar for rooms, the venue and any appointments — with double-bookings across channels prevented rather than apologised for.

A mirrored booking is never invoiced

A stay imported from Airbnb or Booking.com holds the dates and nothing else, because it was already paid on that channel. Only a direct booking — one Vendorah took the money for — produces an invoice. Getting this wrong is how a guesthouse ends up billing a guest twice for the same week.

All of it is one system

These are not eight products sold together. The receipt you photograph and the bank line you import land in the same ledger the accountant exports. The product you photograph off a shelf is filed by the same rules as one you type in, sells through the same checkout, and shows up in the same books. The calendar that books a technician and a laser is the calendar that sells a room by the night. And Vallery can read across all of it, because it is all in one place to begin with.

Put your business on it

Everything above comes with a Vendorah store — not as add-ons billed separately.