All services Mobile apps

Apps people keep on their phone.

iOS and Android apps for your customers, riders and field teams, with M-Pesa built in and a back office to run it all. Built in Flutter or React Native on Laravel APIs, published to the stores and looked after by us.

Good for Ordering and delivery · Field sales teams · Member apps · Booking apps · Loyalty and rewards

What you get

An app, and everything behind it.

Most of the work in a good app is the part customers never see: the back office, the payments, the messages and the updates after launch. We build all of it.

01

iOS and Android from one build

Flutter or React Native, so both stores get the same app and updates ship together.

02

Works on a weak signal

Screens load from the phone first and sync when the connection returns, so no order is lost.

03

M-Pesa built in

STK push at checkout through Daraja, with card payments and refunds matched to each order.

04

A back office to run it

Orders, customers, riders and payments managed from one web console your team logs into.

05

Push, SMS and WhatsApp

Order updates and offers on the channel each person reads, with opens and orders tracked.

06

Store launch and updates

App Store and Play Store listings, reviews, crash reports and regular updates handled.

The back office

Where your team runs the app.

Every app we build comes with a web console for the people behind it. Pick a module to see what your operations team works from while customers and riders use their own apps.

Live demo, click anything

A working copy of Pinch Console. Nothing you do here is saved.

  1. Open a module
  2. Open a record
  3. Press New order, save
  4. Go full screen
0 of 4 tried
DBDaily Basket LtdGrocery delivery app, Nairobi
Dashboard AOAchieng OderaOperations manager
MORNING SHIFT Morning, Achieng Daily Basket, Kilimani hub. Tuesday 6 October 2026, 26 riders on shift.
Orders today21438 in the last hour ▲ 9.2%
Collected todayKES 398,00086% by M-Pesa ▼ 2.4%
Riders on shift264 waiting at the hub ▼ 1.3%
App rating4.6Play Store and App Store ▲ 8%
Orders today, last 12 weeks214 This periodLast period
20 Jul3 Aug17 Aug31 Aug14 Sep28 Sep
By status
  • late1
  • packing1
  • with rider1
At a glance
Late orders
OrderCustomerLate byStatus
#40809 Diana Chebet 18 min late
#40814 Akinyi Odhiambo 9 min packing
#40805 Daniel Mutua 6 min with rider
Recent activity
Order #40813 deliveredHassan Omar, South B, photo proof
M-Pesa payment matchedSJK4T8QW2L, order #40812, KES 2,340
Low stock: eggs, tray of 3012 left at the Kilimani hub
New 5-star review on Play StoreRider was early and polite

Dashboard

Orders, riders on shift, collections and the app rating on one screen, with the late orders to chase: what Achieng opens at the start of a shift.

Open a module

Custom built, not off the shelf. Every system we build is made to fit the client's needs: the modules, screens, wording and reports follow how your organisation works. The business, names and figures in this demo are examples.

Free plan, no obligation

Plan your app.

  • A fixed-scope plan and price within 24 hours
  • Live in 21 working days, then hosted and supported by us
  • Built around how you work, not squeezed into a template
Robinson Edwin Rachel Wilson Your answers go straight to the people who build it.
1 of 3Your app
Your app
Who will use it?
Where are you now?

We reply on WhatsApp, usually within 2 hours in studio hours. No spam, ever.

Orders

Every order, live.

Every order placed in the app, from checkout to the customer's door.

  • Live order board
  • Picking lists for the hub
  • Substitutions by the customer
Orders Search AOAchieng OderaOperations manager
OrdersToday's orders at the Kilimani hub, by status.
Print picking lists Assign riders New order
Orders today21438 in the last hour
Average basketKES 1,860
Delivered on time94%target 92%
Late right now3customers told by push
Search order or customer All hubs All slots All status
OrderCustomerAreaTotalStatus
#40812 Njeri Kamau Kilimani KES 2,340 with rider
#40813 Hassan Omar South B KES 1,150 delivered
#40814 Akinyi Odhiambo Ruaka KES 3,480 packing
#40815 Peter Mwangi Westlands KES 860 new
#40816 Wairimu Gitau Lavington KES 2,120 ready
Orders by hour today
8am 10am 12pm 2pm 4pm 6pm 8pm
Orderslive
#40812 Njeri Kamau with rider
#40813 Hassan Omar delivered
#40814 Akinyi Odhiambo packing
Riders & field staff

Riders routed, proof on the phone.

Riders and field teams on the map, with every drop and visit proved.

  • Live location during deliveries
  • Rider app
  • Photo, signature or code
Riders Search AOAchieng OderaOperations manager
RidersRiders on shift now, on the map.
Zones Weekly payouts Add rider
On shift now264 waiting at the hub
Drops today388
Average drop time24 min2 min faster than Sep
Cash to hand inKES 14,600held by 9 riders
Search rider or plate All zones All status
RiderZoneDropsNextStatus
Juma Mwangi Kilimani 17 #40812, 8 min on route
Kevin Kiptoo Eastlands 12 Pickup at 11:40 to pickup
Moses Wafula Ruaka 9 #40814, 22 min delayed
Ibrahim Hassan South B 14 #40820, 15 min on route
Dennis Ouma Westlands 11 Waiting for orders at the hub
Drops by zone today
CBD Westlands Kilimani Eastlands Ruaka
Riderslive
Juma Mwangi Kilimani on route
Kevin Kiptoo Eastlands to pickup
Moses Wafula Ruaka delayed
Payments

M-Pesa, built in.

M-Pesa and card payments matched to orders, refunds and rider cash.

  • M-Pesa STK push at checkout
  • Card payments
  • Payments matched to orders
Payments Search AOAchieng OderaOperations manager
PaymentsToday's M-Pesa, card and cash payments.
Settlement report Refunds Match payment
Collected todayKES 398,000214 orders
Paid by M-Pesa86%
Unmatched3KES 2,950 to match
Refunds todayKES 4,8607 refunds
Search receipt or order All methods All status
ReceiptOrderMethodAmountStatus
SJK4T8QW2L #40812 M-Pesa KES 2,340 matched
SJK4T9AB7M #40809 M-Pesa KES 1,150 matched
SJK4U1CD3P No reference M-Pesa KES 900 unmatched
CARD-88214 #40810 Card KES 4,150 matched
RF-0412 #40798 M-Pesa refund KES 185 refunded
Collections this week, KES K
Mon Tue Wed Thu Fri Sat Sun
Collected today KES 398,000 Paid by M-Pesa: 86%
Running today

Built by us, in use today.

Peni Africa and Uwitu run on platforms we built and host. We also build, host and support our own products, including DaimaFund for chama banking and MoyoMatch for matchmaking, so we know what it takes to keep an app running long after launch.

See every live platform
How we work

In the stores in 21 working days.

  1. 01Days 1 to 3

    Map the journeys

    What customers, riders and your team each need to do, and what the app must connect to.

  2. 02Days 4 to 7

    Design and click through

    Screens designed for both platforms, then a clickable prototype tested with real users.

  3. 03Days 8 to 19

    Build and test

    App, back office and APIs built in sprints, and tested on low-cost and high-end phones.

  4. 04Days 20 to 21

    Publish and look after it

    Store listings and approval handled, then crash monitoring, updates and support.

Tools we use Flutter · React Native · Laravel APIs · Firebase · M-Pesa Daraja · Airtel Money · Expo · Google Maps

Questions

Before you ask.

Flutter, React Native or native?

For most apps, Flutter or React Native gives you iOS and Android from one codebase, which means one budget and updates that ship together. If you need heavy use of the camera, Bluetooth or other device features, we write those parts natively in Swift or Kotlin.

Will the app work without a signal?

Yes, where it matters. Screens and recent data are stored on the phone, actions taken offline are queued, and everything syncs when the connection returns.

Can customers pay with M-Pesa in the app?

Yes. We use Safaricom Daraja for STK push, so the customer confirms on their phone with their PIN. Payments are matched to the order automatically, and cards and Airtel Money can sit alongside.

Do you publish it to the App Store and Play Store?

Yes. We prepare the listings, screenshots and privacy details, take the app through review and publish every update. The apps sit in your own developer accounts, so you own them.

What does an app cost?

It depends on the screens, the back office and what it connects to. After a free scoping call you get a fixed-scope proposal in writing, so you know the price before we start.

Let's plan your app.

A free scoping call, then a fixed-scope proposal in writing.

We’re online · real human Get a quote