PHP code example of monnify / monnify-laravel

1. Go to this page and download the library: Download monnify/monnify-laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

monnify / monnify-laravel example snippets


use Monnify\MonnifyLaravel\Facades\Monnify;

$data = [
    'amount' => 100.00,
    'customerName' => 'Jane Doe',
    'customerEmail' => '[email protected]',
    'paymentReference' => 'UNIQUE_REF_001',
    'paymentDescription' => 'Payment for Service',
    'currencyCode' => 'NGN',
    'contractCode' => config('monnify.contract_code'),
    'redirectUrl' => 'https://your-site.com/payment-confirmation',
    'paymentMethods' => ['CARD', 'ACCOUNT_TRANSFER'],
];

try {
    $response = Monnify::transactions()->initialise($data);
    return redirect($response['checkoutUrl']);
} catch (Exception $e) {
    // Handle error
    $errorMessage = $e->getMessage();
    // $e->status  // error status
    // $e->error  // error object
}

// Initialize a new transaction
Monnify::transactions()->initialise($data);  

// Initialize bank transfer payment                 
Monnify::transactions()->payWithBankTransfer($data);

// Charge a card
Monnify::transactions()->chargeCard($data);                   

/* Card Authorization */

// Authorize with OTP
Monnify::transactions()->authorizeOTP($data);   

// Authorize 3D secure card
Monnify::transactions()->authorizeThreeDSCard($data);        

/* Transaction Information */

// Get all transactions
Monnify::transactions()->all();

// Get transaction status
Monnify::transactions()->status($transactionReference);  

// Get status by reference
Monnify::transactions()->statusByReference($reference, $type); 

Monnify::transactions()->initialise($data);

Monnify::transactions()->payWithBankTransfer($data);

$data = [
    'amount' => 1000.00,
    'customerName' => 'John Doe',
    'customerEmail' => '[email protected]',
    'paymentReference' => 'UNIQUE-REF-123',
    'currencyCode' => 'NGN',
    'contractCode' => 'CONTRACT-CODE'
];

Monnify::transactions()->chargeCard($data);

$data = [
    'transactionReference' => 'TRANS-REF-123', // string: Transaction reference
    'card' => [
        'number' => '5399********4444',        // string: Card number
        'expiryMonth' => '07',                 // string: Card expiry month
        'expiryYear' => '25',                  // string: Card expiry year
        'cvv' => '123'                         // string: Card CVV
    ]
];

Monnify::transactions()->authorizeOTP($data);

$data = [
    'transactionReference' => 'TRANS-REF-123',
    'otp' => '123456'
];

Monnify::transactions()->authorizeThreeDSCard($data);

$data = [
    'transactionReference' => 'TRANS-REF-123',
    'authorizationCode' => 'AUTH-CODE-123'
];

Monnify::transactions()->status($transactionReference);

Monnify::transactions()->statusByReference($reference, $referenceType);

// Create general account
Monnify::customerReservedAccount()->createGeneralAccount($data);

// Create invoice account
Monnify::customerReservedAccount()->createInvoiceAccount($data);    

// Get account details
Monnify::customerReservedAccount()->get($accountReference);

// Add linked accounts
Monnify::customerReservedAccount()->addLinkedAccounts($ref, $data); 

// Remove account
Monnify::customerReservedAccount()->deallocateAccount($ref);        


/** Account Updates **/

// Update BVN
Monnify::customerReservedAccount()->updateBVN($ref, $bvn);  

// Update KYC info
Monnify::customerReservedAccount()->updateKYCInfo($ref, $data);  

// Update payment sources
Monnify::customerReservedAccount()->allowedPaymentSource($ref, $data); 

// Update split config
Monnify::customerReservedAccount()->updateSplitConfig($ref, $data); 

/** Transaction Information **/

 // Get transactions
Monnify::customerReservedAccount()->transactions($ref, $params);   

Monnify::customerReservedAccount()->createGeneralAccount($data);

$data = [
    'accountReference' => 'ACC-REF-123',    // string: Unique account reference
    'accountName' => 'John Doe',            // string: Account holder name
    'currencyCode' => 'NGN',                // string: Currency code
    'contractCode' => 'CONTRACT-CODE',       // string: Your contract code
    'customerEmail' => '[email protected]',   // string: Customer email
    'customerName' => 'John Doe',           // string: Customer name
    'getAllAvailableBanks' => true          // boolean: Get all available banks
];

$data['preferredBanks'] = ['035', '058'];  // array: Preferred bank codes
$data['restrictPaymentSource'] = true;      // boolean: Restrict payment sources
$data['allowedPaymentSource'] = [           // array: Allowed payment sources
    'bvns' => ['12345678901']
];
$data['incomeSplitConfig'] = [              // array: Split payment configuration
    [
        'subAccountCode' => 'SUB-ACC-123',
        'feePercentage' => 1.5,
        'splitPercentage' => 30.0,
        'feeBearer' => true
    ]
];

Monnify::customerReservedAccount()->createInvoiceAccount($data);

$data = [
    'contractCode' => 'your_contract_code',
    'accountName' => 'Account Name',
    'currencyCode' => 'NGN',
    'accountReference' => 'unique_reference',
    'customerEmail' => '[email protected]',
    'reservedAccountType' => 'INVOICE'
];

$data['customerName'] = 'Customer Name'; 
$data['bvn'] = '12345678901';
$data['nin'] = '000000009090897878'

Monnify::customerReservedAccount()->get($accountReference);

Monnify::customerReservedAccount()->addLinkedAccounts($accountReference, $data);

$data = [
    'accountNames' => [
        [
            'preferredName' => 'Business Account',
            'accountName' => 'John Doe Business'
        ]
    ],
    'getAllAvailableBanks' => true,
    'preferredBanks' => ['035'] // Optional
];

Monnify::customerReservedAccount()->deallocateAccount($accountReference);

Monnify::customerReservedAccount()->updateBVN($accountReference, $bvn);

Monnify::customerReservedAccount()->updateKYCInfo($accountReference, $data);

$data = [
    'bvn' => '21212121212',
    'nin' => ''
];

Monnify::customerReservedAccount()->allowedPaymentSource($accountReference, $data);

$data = [
    'restrictPaymentSource' => true,
    'allowedPaymentSources' => [
    	'bvns' => [
        	'21212121212',
        	'20202020202'
        ]
    ]
];

Monnify::customerReservedAccount()->updateSplitConfig($accountReference, $data);

$data = [
    [
    	'subAccountCode' => 'MFY_SUB_305040939040',
        'feePercentage' => 10.50
    ]
];

Monnify::customerReservedAccount()->transactions($accountReference, $parameters);

$parameters = [
    'page' => 0,     // integer: Page number (default: 0)
    'size' => 10     // integer: Items per page (default: 10)
];

// Create new invoice
Monnify::invoice()->create($data);    

// Get invoice details
Monnify::invoice()->get($invoiceReference);  

// Get all invoices
Monnify::invoice()->all();   

// Cancel invoice
Monnify::invoice()->cancel($invoiceReference); 

// Attach reserved account
Monnify::invoice()->attachReservedAccount($data); 

Monnify::invoice()->create($data);

$data = [
    'amount' => 1000.00,                    // float: Invoice amount
    'customerName' => 'John Doe',           // string: Customer name
    'customerEmail' => '[email protected]',  // string: Customer email
    'expiryDate' => '2024-12-31',          // string: Invoice expiry date
    'invoiceReference' => 'INV-123',        // string: Unique invoice reference
    'description' => 'Service payment',     // string: Invoice description
    'currencyCode' => 'NGN',               // string: Currency code
    'contractCode' => 'CONTRACT-CODE'       // string: Your contract code
];

Monnify::invoice()->get($invoiceReference);

Monnify::invoice()->all();

Monnify::invoice()->cancel($invoiceReference);

Monnify::invoice()->cancel($invoiceReference);

$data = [
    'amount' => '999',
    'invoiceReference' => '18389131823445',
    'accountReference' => 'reference---1290034',
    'description' => 'test invoice',
    'currencyCode' => 'NGN',
    'contractCode' => config('monnify.contract_code'),
    'customerEmail' => '[email protected]',
    'customerName' => 'Jane Doe',
    'expiryDate' => '2025-04-30 12:00:00'
];

$data['incomeSplitConfig'] = [];  // array: income split config 
$data['redirectUrl'] = 'https://your-website.com';

// Single Transfers
Monnify::transfer()->single($data, $async);           

// Authorize single transfer
Monnify::transfer()->authoriseSingle($data);   

// Get single transfer status
Monnify::transfer()->singleStatus($reference);        

// Bulk Transfer
Monnify::transfer()->bulk($data);                     

// Authorize bulk transfer
Monnify::transfer()->authoriseBulk($data); 

// Get bulk status
Monnify::transfer()->bulkStatus($ref, $pageSize, $pageNumber); 

// Get transactions
Monnify::transfer()->bulkTransaction($ref, $pageSize, $pageNumber); 

/** Other Operations **/

// Resend OTP
Monnify::transfer()->resendOTP($reference);   

// Get all transfers
Monnify::transfer()->all($type, $pageSize, $pageNumber);

// Search
Monnify::transfer()->search($accountNumber, $pageSize, $pageNumber); 

Monnify::transfer()->single($data, $async = false);

$data = [
    'amount' => 1000.00,                    // float: Amount to transfer
    'reference' => 'TRANSFER-123',          // string: Unique transfer reference
    'narration' => 'Salary payment',        // string: Transfer description
    'destinationBankCode' => '058',         // string: Bank code
    'destinationAccountNumber' => '0123456789', // string: Account number
    'currency' => 'NGN',                    // string: Currency code
    'sourceAccountNumber' => '1234567890'   // string: Source account number
];

Monnify::transfer()->bulk($data);

$data = [
    'title' => 'Bulk Payments',             // string: Batch title
    'batchReference' => 'BULK-123',         // string: Unique batch reference
    'narration' => 'Monthly payments',      // string: Batch description
    'sourceAccountNumber' => '1234567890',  // string: Source account
    'onValidationFailure'  => 'CONTINUE',   // optional
    'notificationInterval' => 10,			// optional
    'transactions' => [                     // array: List of transfers
        [
            'amount' => 1000.00,
            'reference' => 'TRANSFER-1',
            'destinationBankCode' => '058',
            'destinationAccountNumber' => '0123456789',
            'narration' => 'Payment 1',
            'currency' => 'NGN'
        ],
        // More transactions...
    ]
];

Monnify::transfer()->authoriseSingle($data);  // For single transfer
Monnify::transfer()->authoriseBulk($data);    // For bulk transfer

$data = [
    'reference' => 'TRANSFER-123',  		// string: Transfer reference
    'authorizationCode' => '123456'         // string: OTP received
];

// Single transfer status
Monnify::transfer()->singleStatus($reference);  
// Bulk transfer status
Monnify::transfer()->bulkStatus($batchReference, $pageSize = 10, $pageNumber = 0);  

// Bulk transfer status
Monnify::transfer()->bulkTransaction($batchReference, $pageSize = 10, $pageNumber = 0);  

// Resend OTP
Monnify::transfer()->resendOTP($reference); 
// Get all transfers       
Monnify::transfer()->all($type, $pageSize, $pageNumber); 
// Search
Monnify::transfer()->search($accountNumber, $pageSize, $pageNumber); 

// Create wallet
Monnify::wallet()->create($data);     

// Get wallet details
Monnify::wallet()->get($customerEmail, $pageSize, $pageNumber); 

// Get balance
Monnify::wallet()->balance($accountNumber);   

// Get transactions
Monnify::wallet()->transactions($accountNumber, $pageSize, $pageNumber); 

Monnify::wallet()->create($data);

$data = [
    'customerEmail' => '[email protected]',  // string: Customer email
    'customerName' => 'John Doe',           // string: Customer name
    'accountNumber' => '0123456789',        // string: Account number
    'accountName' => 'John Doe',            // string: Account name
    'bvnDetails' =>  [
    	'bvn' =>  '22222222226',			// string: BVN
        'bvnDateOfBirth' =>  '1994-09-07'	// string: Date of Birth
    ],
];

Monnify::wallet()->get($customerEmail, $pageSize = 10, $pageNumber = 0);

Monnify::wallet()->balance($accountNumber);

Monnify::wallet()->transactions($accountNumber, $pageSize, $pageNumber);

// Verify account
Monnify::verificationAPI()->bankAccount($accountNumber, $bankCode); 
// Verify BVN
Monnify::verificationAPI()->bvnInformation($data);        
// Match BVN         
Monnify::verificationAPI()->matchBVNAndBankAccount($bvn, $bankCode, $accountNumber); 
// Verify NIN
Monnify::verificationAPI()->nin($nin);                            

Monnify::verificationAPI()->bankAccount($accountNumber, $bankCode);

Monnify::verificationAPI()->bvnInformation($data);

$data = [
    'bvn' => '12345678901',           // string: BVN to verify
    'name' => 'John Doe',             // string: Name to match
    'dateOfBirth' => '1990-01-01'     // string: Date of birth (YYYY-MM-DD)
    'mobileNo' => '08142223149'		  // string: mobile number
];

Monnify::verificationAPI()->matchBVNAndBankAccount($bvn, $bankCode, $accountNumber);

Monnify::verificationAPI()->nin($nin);

// Create sub account
Monnify::subAccount()->create($data);   
// Get all sub accounts        
Monnify::subAccount()->all();   
// Update sub account                
Monnify::subAccount()->update($data);    
// Delete sub account       
Monnify::subAccount()->delete($subAccountCode); 

Monnify::subAccount()->create($data);

$data = [
    'bankCode' => '058',              // string: Bank code
    'accountNumber' => '0123456789',  // string: Account number
    'email' => '[email protected]',     // string: Sub-account email
    'currencyCode' => 'NGN'           // string: Currency code (NGN, USD, etc.)
    'defaultSplitPercentage' => 20.87 // integer: split percentage
];

Monnify::subAccount()->all();

Monnify::subAccount()->update($data);

$data = [
    'subAccountCode' => 'SUB-ACC-123',  // string: Sub account code
    'bankCode' => '058',                // string: New bank code
    'accountNumber' => '0123456789',    // string: New account number
    'email' => '[email protected]',       // string: New email
    'currencyCode' => 'NGN'             // string: Currency code
    'defaultSplitPercentage' => 20.87   // integer: split percentage
];

Monnify::subAccount()->delete($subAccountCode);

// Initialize a refund
Monnify::refund()->initialise($data);  
// Get all refunds            
Monnify::refund()->all($pageSize, $pageNumber);
// Check refund status    
Monnify::refund()->status($refundReference);       

Monnify::refund()->initialise($data);

$data = [
    'transactionReference' => 'TRANS-123',  // string: Original transaction reference
    'refundReference' => 'REFUND-123',      // string: Unique refund reference
    'refundReason' => 'Customer request',   // string: Refund reason
    'refundAmount' => 1000.00,              // float: Amount to refund
    'customerNote' => 'An optional note',   // string: customer side note
];

Monnify::refund()->status($refundReference);

Monnify::refund()->all($pageSize = 10, $pageNumber = 0);

// Get settlement transactions
Monnify::settlements()->transactions($settlementReference, $pageSize, $pageNumber); 
 // Get by transaction reference
Monnify::settlements()->getByTransaction($transactionReference);                   

Monnify::settlements()->transactions($settlementReference, $pageSize = 10, $pageNumber = 0);

$pageSize = 10;    // integer: Number of records per page
$pageNumber = 0;   // integer: Page number for pagination

Monnify::settlements()->getByTransaction($transactionReference);

// Get all profiles
Monnify::limitProfile()->all(); 
// Create profile
Monnify::limitProfile()->create($data);  
// Update profile
Monnify::limitProfile()->update($limitProfileCode, $data);   
// Reserve account
Monnify::limitProfile()->reserveAccount($data);      
// Update account reserved account with Limit profile
Monnify::limitProfile()->updateReserveAccount($accountRef, $limitProfileCode); 

Monnify::limitProfile()->all();

Monnify::limitProfile()->create($data);

$data = [
    'limitProfileName' => 'Basic Tier',     // string: Profile name
    'dailyTransactionLimit' => 1000000,     // float: Daily limit
    'dailyTransactionVolume' => 100,        // integer: Daily transaction count
    'singleTransactionLimit' => 100000      // float: Single transaction limit
];

Monnify::limitProfile()->update($limitProfileCode, $data);

Monnify::limitProfile()->reserveAccount($data);

$data = [
    'accountReference' => 'ACC-REF-123',    // string: Account reference
    'limitProfileCode' => 'LIMIT-123',      // string: Limit profile code
    'contractCode' => config('monnify.contract_code'),	// string: Contract code
    'accountName' => "Kan Yo' Reserved with Limit",		// string: Account Name
];

Monnify::limitProfile()-updateReserveAccount($accountReference, $limitProfileCode);

// Create pay code
Monnify::payCodeAPI()->create($data); 
// Get pay code details
Monnify::payCodeAPI()->get($payCodeReference);
// Get unmasked pay code
Monnify::payCodeAPI()->getUnMasked($payCodeReference);
// Get pay code history
Monnify::payCodeAPI()->history($parameters);  
// Delete pay code
Monnify::payCodeAPI()->delete($payCodeReference);      

Monnify::payCodeAPI()->create($data);

$data = [
    'amount' => 1000.00,                    // float: Amount
    'paycodeReference' => 'PAYCODE-123',    // string: Unique reference
    'beneficiaryName' => 'John Doe',        // string: Beneficiary name
    'clientId' => 'sEYUG-123',  			// string: Client Id
    'expiryDate' => '2024-12-31'            // string: Expiry date
];

Monnify::payCodeAPI()->get($payCodeReference);

Monnify::payCodeAPI()->getUnMasked($payCodeReference);

Monnify::payCodeAPI()->history($parameters);

$parameters = [
	'transactionReference' => '', // string: Transaction Reference
    'beneficiaryName' => '',	 // string: Beneficiary Name
    'transactionStatus' => '',	 // string: Transaction status
    'from' => '',				 // string: Start date (YYYY-MM-DD)
    'to' => ''					 // string: End date (YYYY-MM-DD)
];

Monnify::payCodeAPI()->delete($payCodeReference);

// Create mandate
Monnify::directDebitMandate()->create($data);    
// Get mandate details
Monnify::directDebitMandate()->get($mandateReference);     
// Debit mandate
Monnify::directDebitMandate()->debit($data);       
// Get mandate status
Monnify::directDebitMandate()->status($paymentReference);  
// Cancel mandate
Monnify::directDebitMandate()->cancel($mandateCode);       

Monnify::directDebitMandate()->create($data);

$data = [
    'contractCode' => config('monnify.contract_code'),
    'mandateReference' => 'unique_ref3_02s600972',
    'customerName' => 'Ankit Kushwaha',
    'customerPhoneNumber' => '1234567890',
    'customerEmailAddress' => '[email protected]',
    'customerAddress' => '123 Example Street, City, Country',
    'customerAccountNumber' => '0051762787',
    'customerAccountBankCode' => '058',
    'mandateDescription' => 'Subscription Fee',
    'mandateStartDate' => '2024-05-22T10:15:30',
    'mandateEndDate' => '2025-05-22T10:15:30'
];

	'autoRenew' => false,
    'customerCancellation' => true,
    'customerAccountName' => 'Ankit Kushwaha',
bash
php artisan vendor:publish --provider="Monnify\MonnifyLaravel\MonnifyServiceProvider"
php
Monnify::directDebitMandate()->get($mandateReference);
php
Monnify::directDebitMandate()->debit($data);
php
Monnify::directDebitMandate()->status($paymentReference);
php
Monnify::directDebitMandate()->cancel($mandateCode);
php
// Charge card using token
Monnify::recurringPayment()->chargeCardToken($data); 
php
Monnify::recurringPayment()->chargeCardToken($data);
php
$data = [
    'cardToken' => 'MNFY_0CD0138B45F7C3EC6D3698969',
    'amount' => 20,
    'customerEmail' => '[email protected]',
    'paymentReference' => '1642776mml0068n2937',
    'contractCode' => config('monnify.contract_code'),
    'apiKey' => config('monnify.api_key'),
];
php
	'customerName' => 'Marvelous Benji',
    'paymentDescription' => 'Paying for Product A',
    'currencyCode' => 'NGN',
    'incomeSplitConfig' => [],
    'metaData' => [
    	'ipAddress' => '127.0.0.1',
        'deviceType' => 'mobile'
    ]