Features

What DukaBot actually does.

8 capabilities — M-Pesa STK Push, Safaricom Daraja, WhatsApp Business Platform Cloud API, catalog sync, reconciliation, webhooks, sandbox testing. Stated plainly.

  • WhatsApp Business Platform integration

    One shared Cloud API number, inbound + outbound, catalog buttons.

    DukaBot runs on the WhatsApp Business Platform Cloud API, the official Meta-hosted endpoint. A single shared platform number can host many DukaBot merchants, so a small shop does not need to onboard its own number on Meta Business Manager before going live. The bot routes every inbound message to the correct shop via a /s/<shopCode> link, replies inside the 24-hour customer service window, and falls back to pre-approved templates after that.

  • M-Pesa STK Push checkout

    Pay inside the chat. Till or Paybill via Safaricom Daraja.

    Customers pay by tapping a button in WhatsApp that triggers an M-Pesa STK Push prompt on their phone via Safaricom Daraja. DukaBot supports both Till numbers (Buy Goods) and Paybill numbers, and works against the 2 Daraja environments — sandbox or production — per business. Every charge is reconciled against the M-Pesa receipt ID returned by Daraja, so the merchant sees one consistent KES total across WhatsApp orders and the Safaricom statement.

  • Catalog & inventory sync

    Products live in DukaBot, mirrored to the WhatsApp catalog.

    Merchants manage products inside the DukaBot dashboard — name, price in KES, image, stock status — and the same items appear inside the WhatsApp catalog that customers browse from the chat. The /s/<shopCode> public storefront only indexes shops with at least 3 available products and a non-empty description, which keeps thin merchant pages off Google but still reachable via direct WhatsApp share. Inventory edits propagate in seconds without needing a separate WhatsApp Business Platform tool.

  • Order pipeline + reconciliation

    Every M-Pesa receipt matched to its WhatsApp order.

    DukaBot reconciles each order on three signals: the Daraja CheckoutRequestID returned at STK Push initiation, the M-Pesa receipt code on the success callback, and the account reference (Paybill flow) or Till metadata. When all 3 line up the order is marked paid; mismatches sit in a review queue so the merchant can intervene rather than silently lose KES revenue. The dashboard shows the full WhatsApp -> Daraja -> M-Pesa trail per order for audit purposes.

  • Multi-business shared bot number

    Many merchants on 1 WhatsApp Business Platform number.

    Small Kenyan shops rarely have the budget or scale to run a dedicated WhatsApp Business Platform number on Meta Business Manager. DukaBot solves that with 1 shared platform number that hosts many merchants at once. Customers reach a specific shop via a /s/<shopCode> deep-link or a shareable WhatsApp link; the bot then routes their order, M-Pesa STK Push, and Daraja callback into the right merchant account without any conversation leaking between businesses.

  • Merchant dashboard with analytics

    Orders, KES revenue, churn — in a Next.js dashboard.

    The DukaBot merchant dashboard surfaces today's WhatsApp orders, the running KES total reconciled against M-Pesa receipts, and per-product analytics such as conversion to STK Push completion. Free tier covers 50 orders per month, Starter 500, Growth 2,000 — the dashboard shows usage against the active plan limit so a merchant never has to guess when an upgrade is due. Daraja sandbox traffic is separated from production totals.

  • Idempotent webhooks for M-Pesa + WhatsApp

    Two webhook lanes, both idempotent and signed.

    DukaBot exposes 2 webhook endpoints: one for the WhatsApp Business Platform (inbound messages, delivery status) and one for Safaricom Daraja (STK Push callbacks, reversal callbacks). Each endpoint is authenticated — WhatsApp via a verify token, Daraja via a shared secret — and every payload is deduplicated by webhook ID, so a retry from Meta or Safaricom never double-charges the customer or double-creates an order in the DukaBot database.

  • Daraja sandbox + WhatsApp test mode

    Dry-run STK Push and WhatsApp flows before going live.

    Safaricom Daraja exposes 2 environments — sandbox and production — and DukaBot keeps them separated behind a per-business flag, so a merchant can dry-run an M-Pesa STK Push checkout end-to-end with test phone numbers before flipping to live Till or Paybill traffic. The WhatsApp Business Platform side runs against a Meta test number until the merchant's own Cloud API number is verified, so the full WhatsApp + M-Pesa loop can be rehearsed without spending any KES.