deadangroup/jenga — Equity Bank Jenga HQ APIs
Namespace: DGL\Jenga
Base URLs: uat.finserve.africa (sandbox) / api.finserve.africa (production)
// config/jenga.php
return [
'is_sandbox' => true,
'merchant_code' => '...',
'consumer_secret' => '...',
'api_key' => '...',
'account_number' => '...',
'private_key_path' => storage_path('keys/jenga_private.pem'),
'callback_url' => '...',
];
RSA Signature: Every transactional request requires an RSA SHA-256 signature. The SDK handles this automatically using the private key from config.
$client->internalTransfer([
'source' => ['countryCode' => 'KE', 'name' => 'John', 'accountNumber' => '0011547896523'],
'destination' => ['type' => 'bank', 'countryCode' => 'KE', 'name' => 'Jane', 'accountNumber' => '0022547896523'],
'transfer' => ['type' => 'InternalFundsTransfer', 'amount' => '1000', 'currencyCode' => 'KES', 'reference' => 'REF001', 'date' => '2026-03-30', 'description' => 'Payment'],
]);
Signature: accountNumber + amount + currencyCode + reference
$client->toMobile([...]); // POST /v3-apis/.../remittance/sendmobile
$client->rtgs([...]); // POST .../remittance/rtgs
$client->swift([...]); // POST .../remittance/swift
$client->pesaLinkBank([...]); // POST .../remittance/pesalinkacc
$client->pesaLinkMobile([...]); // POST .../remittance/pesalinkMobile
$client->subsidiary([...]); // POST .../remittance/subsidiary
$client->mpesaStkAccount([
'merchant' => ['accountNumber' => '...', 'callbackUrl' => '...'],
'customer' => ['mobileNumber' => '254712345678', 'telco' => 'Safaricom', 'countryCode' => 'KE'],
'payment' => ['amount' => 1000, 'currency' => 'KES', 'ref' => 'INV001'],
]);
Signature: accountNumber + ref + mobileNumber + telco + amount + currency
$client->equitelStkPush([...]); // POST .../stkussdpush/initiate
$client->mpesaStkWallet([...]); // POST /api-checkout/mpesa-stk-push/v3.0/init
$client->billPayment([...]); // POST .../bills/pay
$client->billValidation([...]); // POST .../bills/validation
$client->merchantPayment([...]); // POST .../tills/pay
$client->paymentLink([...]); // POST /api-checkout/api/v1/create/payment-link
$client->accountBalance(); // GET .../accounts/balances/{cc}/{acct}
$client->miniStatement(); // GET .../accounts/miniStatement/{cc}/{acct}
$client->fullStatement([...]); // POST .../accounts/fullStatement
$client->openCloseBalance([...]); // POST .../accounts/accountBalance/query
$client->accountInquiry(); // GET .../search/{cc}/{acct}
$client->accountValidation([...]); // POST .../account/validate
$client->airtime([...]); // POST .../airtime
$client->forexRate(); // GET .../rates/{cc}/{currency}
$client->identityVerification([...]); // POST .../verify (KYC)
$client->transactionDetails([...]); // POST .../transactionDetails
$client->mpgsValidate([...]); // POST .../mpgs/validate
$client->mpgsCreate([...]); // POST .../mpgs/create
$client->mpgsQuery([...]); // POST .../mpgs/query
$client->mpgsRefund([...]); // POST .../mpgs/refund