Free during private beta — self-custody wallets, M-Pesa, and USDT through one API. Get started →
Private beta · Built in Nairobi Kenya

One API for
African payments.

Self-custody wallets. M-Pesa rails. USDT on TRON, BSC, and Ethereum. One integration — your keys, your funds, your PayBill.

M-PesaM-Pesa · your own PayBillTRONBSCETHUSDT · TRON · BSC · EthereumOne webhook for all rails
How it works

Integrate once. Accept everything.

01
Your wallet. Your keys.
Sign up and the SDK generates your wallet in your browser — seed phrase never leaves your device. Link your M-Pesa business account. HelaMesh monitors your addresses; only you can spend.
02
One checkout. Customer chooses.
One API call or one dashboard click. Your customer picks M-Pesa or USDT at checkout — no app install, no account required on their end.
03
Payment confirmed. Webhook fired.
USDT confirms in 15–60 seconds. M-Pesa STK push completes in under 30 seconds. Same webhook payload for both rails — one handler covers everything.
Supported railsM-PesaM-Pesa STK Push · KenyaTRONUSDTTRON TRC20 USDTBNB Smart ChainUSDTBNB Smart Chain BEP20 USDTEthereumUSDTEthereum ERC20 USDT
What you get

Infrastructure, not a bank.

True self-custody. Zero compromise.
Your seed phrase is generated in your browser and never touches our servers. HelaMesh stores only your public xpub — enough to derive addresses and monitor payments, never enough to move funds. If HelaMesh disappeared tomorrow, you still have your keys and your money.
0
keys on our servers
4
rails today
1
webhook format
M-Pesa
M-Pesa built in
Connect your Daraja credentials once. Trigger STK push, receive C2B payments, send B2C — all through the HelaMesh API. Funds flow through your own PayBill.
<60s settlement
M-Pesa STK push completes in under 30 seconds. TRON and BSC confirm in 15–60 seconds. Ethereum in ~3 minutes. Your webhook fires the moment any rail confirms.
Same webhook. Every rail.
{ "event": "payment.confirmed", "network": "MPESA", "amount": "2500" }{ "event": "payment.confirmed", "network": "TRON", "amount": "25.00" }HMAC-SHA256 signed. Exponential backoff retries. Redrivable from the dashboard. One handler covers every rail.
Sandbox in production
Test-mode keys, live infrastructure. Simulate crypto payments or use Daraja sandbox for M-Pesa — watch the full state machine animate in real time.
For developers

Two SDKs. One mesh.

wallet-setup.js
import { HelaMeshWallet } from '@helamesh/wallet-sdk';

const wallet = new HelaMeshWallet({ helaMeshApiUrl, apiKey });

// Seed generated in browser — never sent to HelaMesh
const { mnemonic, xpubs } = await wallet.create(userId, email, {
  method: 'passkey', // WebAuthn biometric lock
});

// User backs up seed phrase, then:
await wallet.register(xpubs); // only public keys hit our server

// Send USDT — signed locally, relayed via HelaMesh
await wallet.unlockWithPasskey();
await wallet.sendUsdt({ network: 'TRON', hdIndex: 0, toAddress, amount: '50.00' });
wallet.lock();
webhook-handler.js
// Same handler for M-Pesa, TRON, BSC, and Ethereum
app.post('/webhook', async (req, res) => {
  const { event, network, amount, metadata } = req.body;

  if (event === 'payment.confirmed') {
    await fulfillOrder(metadata.orderId, amount);
  }

  res.sendStatus(200);
});

Wallet SDK handles keys and signing on the client. HelaMesh handles monitoring, webhooks, and M-Pesa rails on the server. Neither touches what belongs to the other.

Built in Nairobi.
Your keys. Your rails. Your money.

Free during private beta. No card required. No sales call. Self-custody wallet generated in your browser. M-Pesa and USDT from day one.

Get early access →