bmatovu / laravel-airtel-money
Laravel Airtel Money API Integration
Installs: 4
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/bmatovu/laravel-airtel-money
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.5
- illuminate/console: ^10.0|^11.0|^12.0
- illuminate/container: ^10.0|^11.0|^12.0
- illuminate/contracts: ^10.0|^11.0|^12.0
- illuminate/database: ^10.0|^11.0|^12.0
- illuminate/support: ^10.0|^11.0|^12.0
- nesbot/carbon: ^2.3|^3.0
- psr/http-message: ^2.0
- ramsey/uuid: ^4.7
Requires (Dev)
- code-lts/doctum: ^5.5
- laravel/framework: ^10.0|^11.0|^12.0
- laravel/pint: ^1.20
- mockery/mockery: ^1.5
- orchestra/testbench: ^9.0|^10.0|^11.0
- pestphp/pest: ^2.0|^3.0|^4.0
- phpstan/phpstan-phpunit: ^2.0
- phpunit/phpunit: ^10.0|^11.0|^12.0
README
Getting Started
To get started with your Airtel Money integration:
-
Register your application on the Airtel Money Developer Portal.
-
Add products to your application: APIs are grouped into products.
- Start with: Account, KYC, Collection-APIs, and Disbursement-APIs.
- Each product may have specific KYC/compliance requirements, which the Airtel Money team will advise during onboarding.
-
Request application approval from the Airtel Money Support Team.
- Your application will only work after it has been approved.
- You can monitor the approval status in the developer portal.
-
Whitelist your source IPs in the developer portal under
Settings -> Security -> Server IP Allowed List.- Any collection or disbursement request originating from a non-whitelisted source IP will be declined at Airtel Money.
-
Set disbursement PIN: optional for collections.
-
Set collection callback: you can set an endpoint to where your callbacks should be set. Optionally, you can enable Authorization for it.
Statuses
| Mode (Env) | Required Status |
|---|---|
| TEST | Partially Approved |
| PRODUCTION | Approved |
New Applications will have the default NA status.
Products
| Product | Functionality | Comment |
|---|---|---|
| KYC | User Inquiry | Get user basic information like first and last name |
| Account | Balance Inquiry | Collection wallet balance check |
| Collection APIs | Payments (USSD Push) | Request a payment. User enters PIN to approve the transaction. |
| Refund | Refund a previous collection transaction (partial or full) | |
| Callback (No Auth) | Sent to your callback URL upon transaction completion | |
| Callback (With Auth) | Sent to your callback URL with Authorization (must be enabled first) | |
| Transaction Inquiry | Check collection transaction details | |
| Disbursement APIs | Payments | Send money to an Airtel number. Requires your PIN and prior PIN setup |
| Transaction Inquiry | Check disbursement transaction details |
The disbursement wallet has no dedicated balance-inquiry API; its running balance is returned with each transaction response.
Integration
Installation
composer require bmatovu/laravel-airtel-money
Publishables
php artisan vendor:publish --provider="Bmatovu\AirtelMoney\AirtelMoneyServiceProvider"
Database Migrations
php artisan migrate
Authorization & PIN
Set Credentials
Retrieve your client_id and client_secret from Key Management
php artisan airtel-money:auth
Set Disbursement PIN
php artisan airtel-money:pin
Usage
use Bmatovu\AirtelMoney\Facades\Authorization; $token = Authorization::getToken();
use Bmatovu\AirtelMoney\Facades\Kyc; $user = Kyc::getUser($phoneNumber);
use Bmatovu\AirtelMoney\Facades\Collection; $transaction = Collection::receive($phoneNumber, $amount); $transaction = Collection::refund($airtelMoneyId); $transaction = Collection::getTransaction($transactionId);
use Bmatovu\AirtelMoney\Facades\Account; $balance = Account::getBalance();
use Bmatovu\AirtelMoney\Facades\Disbursement; $transaction = Disbursement::send($phoneNumber, $amount); $transaction = Disbursement::getTransaction($transactionId);
Testing
composer test
Credits
License
This package is open-source software licensed under the MIT License.