Fully Type-Safe
Complete TypeScript types for every Daraja API β requests, responses, webhook payloads, and result codes. Catch mistakes at compile time with branded primitives like KesAmount and MsisdnKE.
Branded Types β
Type-safe, framework-agnostic SDK for Safaricom Daraja 2.0 β built for Node.js, Bun, Deno, Cloudflare Workers, Next.js, Fastify, Hono, and Express.
import { Mpesa } from 'pesafy'
const mpesa = new Mpesa({
consumerKey: process.env.MPESA_CONSUMER_KEY!,
consumerSecret: process.env.MPESA_CONSUMER_SECRET!,
environment: 'sandbox',
lipaNaMpesaShortCode: process.env.MPESA_SHORTCODE!,
lipaNaMpesaPassKey: process.env.MPESA_PASSKEY!,
})
// STK Push β prompt customer on their phone
const response = await mpesa.stkPush({
amount: 100,
phoneNumber: '0712345678',
callbackUrl: 'https://yourapp.com/api/mpesa/callback',
accountReference: 'INV-001',
transactionDesc: 'Payment',
})
console.log(response.CheckoutRequestID)