SDKs
Official SDKs wrap every endpoint, send an idempotency key on each create (so retries never double-charge), retry transient errors, and verify webhook signatures for you. Every SDK is generated against the same OpenAPI spec.
Install
npm install mavunta # Node.js / TypeScript
composer require mavunta/mavunta-php # PHP
pip install mavunta # PythonNode.js
import Mavunta from 'mavunta'
const mavunta = new Mavunta({ secretKey: process.env.MAVUNTA_SECRET_KEY })
const intent = await mavunta.paymentIntents.create({
amount: '2500', currency: 'KES', settlement_currency: 'USDT',
payment_methods: ['mpesa', 'card', 'mavunta_balance'],
})
// redirect the customer to intent.checkout_urlPHP
$mavunta = new \Mavunta\Mavunta(['apiKey' => getenv('MAVUNTA_SECRET_KEY')]);
$intent = $mavunta->paymentIntents->create([
'amount' => '2500', 'currency' => 'KES', 'settlement_currency' => 'USDT',
'payment_methods' => ['mpesa', 'card', 'mavunta_balance'],
]);
header('Location: ' . $intent['checkout_url']);On Laravel, install mavunta/laravel-mavunta for an auto-discovered facade, config, and a signed webhook receiver that dispatches a MavuntaWebhookReceived event:
composer require mavunta/laravel-mavunta
use Mavunta\Laravel\Facades\Mavunta;
$intent = Mavunta::paymentIntents()->create([...]);Python
from mavunta import Mavunta
mavunta = Mavunta(api_key=os.environ["MAVUNTA_SECRET_KEY"])
intent = mavunta.payment_intents.create(
amount="2500", currency="KES", settlement_currency="USDT",
payment_methods=["mpesa", "card", "mavunta_balance"],
)
# redirect the customer to intent["checkout_url"]Go
go get github.com/mavunta/mavunta-go
c := mavunta.New(os.Getenv("MAVUNTA_SECRET_KEY"))
intent, err := c.CreatePaymentIntent(ctx, map[string]any{
"amount": "2500", "currency": "KES", "settlement_currency": "USDT",
})
// redirect the customer to intent.CheckoutURLJava
// com.mavunta:mavunta-java
Mavunta mavunta = new Mavunta(System.getenv("MAVUNTA_SECRET_KEY"));
Map<String, Object> intent = mavunta.createPaymentIntent(Map.of(
"amount", "2500", "currency", "KES", "settlement_currency", "USDT"
));
// redirect the customer to intent.get("checkout_url")cURL
curl https://api.mavunta.com/v1/payment-intents \
-H "Authorization: Bearer cwk_test_sk_..." \
-H "Content-Type: application/json" \
-d '{"amount":"2500","currency":"KES","settlement_currency":"USDT"}'Other languages: generate a client from the OpenAPI spec with OpenAPI Generator, or import our Postman collection.