Skip to main content
This guide takes you from zero to a working prepaid flow using Expo / React Native and Node.js.
Jaza collects Mobile Money and settles to you. You do not create a PawaPay account or manage multi-currency settlement yourself.

Prerequisites

  • A Jaza developer account
  • Node.js 18+
  • An Expo app (Expo Router or classic App.tsx)
  • Sandbox API keys from the dashboard (test environment)

1. Create an app and copy keys

In the dashboard, create an app, enable the markets you need, and open API keys.
Never ship the secret key in a mobile binary or public repo.

2. Install the Node SDK

Create a shared client:

3. Create a customer

Call once when your user signs up; store customer.id on your user record.

4. Expose balance and top-up routes

Your app never talks to Jaza with the secret key. It calls your backend; you call the Node SDK.

5. Install the React Native SDK

Peer dependencies (Expo):
Ensure Android resizes with the keyboard (app.json):

6. Wrap the app with JazaProvider

7. Show balance and top-up

When the user taps Top up, the SDK opens a sheet: pick a bundle, enter phone / country, pay with Mobile Money. Jaza handles provider selection and collection. On success, getBalance refreshes.

8. Meter a feature

After the user performs a paid action:
Use a stable idempotencyKey so retries do not double-charge.

What you just shipped

  • Credit wallet per customer
  • MoMo top-ups without running an aggregator
  • Feature metering on your backend
Next: Concepts · Authentication · Node SDK · React Native SDK