deadangroup/coop — Co-operative Bank of Kenya Open API
Namespace: DGL\Coop
Base URLs: openapi-sandbox.co-opbank.co.ke (sandbox) / openapi.co-opbank.co.ke (production)
// config/coop.php
return [
'is_sandbox' => true,
'consumer_key' => '...',
'consumer_secret' => '...',
'account_number' => '...',
'callback_url' => '...',
];
$client->stkPush([
'PhoneNumber' => '254712345678',
'Amount' => 1000,
'TransactionNarration' => 'Invoice payment',
]);
Endpoint: POST /Saf/Stk/1.0.0
$client->stkQuery([
'MessageReference' => 'ABC123...',
]);
Endpoint: POST /Saf/Stk/Query/1.0.0
$client->internalTransfer([
'AccountNumber' => '01234567890123',
'Amount' => 5000,
'Narration' => 'Supplier payment',
]);
Endpoint: POST /FundsTransfer/Internal/A2A/2.0.0
$client->toMpesa([
'MobileNumber' => '254712345678',
'Amount' => 2000,
]);
Endpoint: POST /FundsTransfer/External/A2M/Mpesa/1.0.0
$client->pesaLinkBank([
'AccountNumber' => '0123456789',
'BankCode' => '11',
'Amount' => 15000,
]);
Endpoint: POST /FundsTransfer/External/A2A/PesaLink/1.0.0
$client->pesaLinkPhone([
'PhoneNumber' => '254712345678',
'Amount' => 3000,
]);
Endpoint: POST /FundsTransfer/External/A2M/PesaLink/1.0.0
$client->accountBalance();
// Or specific account:
$client->accountBalance(['AccountNumber' => '01234567890123']);
Endpoint: GET /Enquiry/AccountBalance/1.0.0/{AccountNumber}
$client->accountValidation(['AccountNumber' => '01234567890123']);
Endpoint: GET /Enquiry/Validation/Account/1.0.0/{AccountNumber}
$client->miniStatement();
Endpoint: GET /Enquiry/MiniStatement/Account/1.0.0/{AccountNumber}
$client->fullStatement([
'AccountNumber' => '01234567890123',
'StartDate' => '2026-01-01',
'EndDate' => '2026-01-31',
]);
Endpoint: GET /Enquiry/FullStatement/Account/1.0.0/{AccountNumber}
$client->exchangeRate([
'FromCurrencyCode' => 'USD',
'ToCurrencyCode' => 'KES',
]);
Endpoint: GET /Enquiry/ExchangeRate/1.0.0/{From}/{To}
$client->transactionStatus([
'MessageReference' => 'ABC123...',
]);
Endpoint: POST /QueryStatus/v1.0.0/query