Skip to content

fredneutron/monnify-laravel

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

40 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Laravel Monnify Package Documentation

A Laravel package to effortlessly integrate the Monnify payment gateway API into your Laravel projects.

Installation

Install via Composer:

composer require monnify/monnify-laravel

Publish the configuration file:

php artisan vendor:publish --provider="Monnify\MonnifyLaravel\MonnifyServiceProvider"

Add environment variables (.env):

MONNIFY_API_KEY=your_api_key
MONNIFY_SECRET_KEY=your_secret_key
MONNIFY_CONTRACT_CODE=your_contract_code
MONNIFY_WALLET_ACCOUNT_NUMBER=your_wallet_number
MONNIFY_ACCOUNT_NUMBER=your_account_number
MONNIFY_ENVIRONMENT=SANDBOX # or LIVE

Quick Start

Here's how to quickly initialize a payment transaction:

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
}

This package throws exceptions for various error cases. Hence, wrapping your API calls in try-catch blocks.

Available Services

This package provides the following services:

  1. Transaction Service: Manage payments, authorizations, and statuses.
  2. Customer Reserved Account Service: Create/manage virtual accounts.
  3. Invoice Service: Generate and manage invoices.
  4. Disbursement Service: Manage single and bulk fund transfers.
  5. Wallet Service: Manage wallet creation, balances, and transactions.
  6. Verification Service: Perform account, BVN, NIN verifications.
  7. Sub Account Service: Create/manage sub-accounts for split payments.
  8. Refund Service: Handle payment refunds.
  9. Settlement Service: Settlement transaction handling.
  10. Limit Profile Service: Manage transaction limits.
  11. Pay Code Service: Generate and manage pay codes.
  12. Direct Debit Service: Manage direct debit mandates.
  13. Recurring Payment Service: Automate recurring payments.
  14. Helper Service: Utility functions (fetch banks, etc).

Detailed Usage

Transaction Service

The Transaction Service handles all payment-related operations.

All Available Methods

// 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); 

Transaction Initialization

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

Required fields: amount, customerName, customerEmail, paymentReference, currencyCode, contractCode, redirectUrl.

Optional fields: paymentMethods, incomeSplitConfig.

Pay with Bank Transfer

Initializes a bank transfer payment.

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

Required Parameters:

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

Charge Card

Process a card payment.

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

Required Parameters:

$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
    ]
];

Authorize with OTP

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

Required Parameters:

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

Authorize 3D secure card

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

Required Parameters:

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

Get Transaction Status

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

Parameters:

  • $transactionReference (string): The transaction reference to check

Get Status by Reference

Check transaction status using different reference types.

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

Parameters:

  • $reference (string): The reference number
  • $referenceType (string): Either 'transaction' or 'payment' (default: 'transaction')

Customer Reserved Account Service

Manages reserved account operations.

All Available Methods

// 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);   

Create General Account

Creates a new reserved general account.

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

Required Parameters:

$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
];

Optional Parameters:

$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
    ]
];

Create Invoice Account

Creates a new reserved invoice account.

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

Required Parameters:

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

Optional Parameters:

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

Get Account Details

Get the full reserved account detail.

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

Parameters:

  • $accountReference (string): The reference of the main account

Add Linked Accounts

Add additional accounts to a reserved account.

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

Parameters:

  • $accountReference (string): The reference of the main account
  • $data (array): Linked accounts configuration
$data = [
    'accountNames' => [
        [
            'preferredName' => 'Business Account',
            'accountName' => 'John Doe Business'
        ]
    ],
    'getAllAvailableBanks' => true,
    'preferredBanks' => ['035'] // Optional
];

Deallocate Account

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

Parameters:

  • $accountReference (string): The reference of the main account

Update the BVN for a reserved account.

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

Parameters:

  • $accountReference (string): Account reference
  • $bvn (string): Bank Verification Number

Update the KYC Info for a reserved account.

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

Parameters:

  • $accountReference (string): Account reference
  • $data (array): KYC info (BVN, NIN or both)
$data = [
    'bvn' => '21212121212',
    'nin' => ''
];

Allowed Payment Source

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

Parameters:

  • $accountReference (string): Account reference
  • $data (array): payment source setttings
$data = [
    'restrictPaymentSource' => true,
    'allowedPaymentSources' => [
    	'bvns' => [
        	'21212121212',
        	'20202020202'
        ]
    ]
];

Update Split Config for a reserved account.

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

Parameters:

  • $accountReference (string): Account reference
  • $data (array): split configs
$data = [
    [
    	'subAccountCode' => 'MFY_SUB_305040939040',
        'feePercentage' => 10.50
    ]
];

Get Account Transactions

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

Parameters:

  • $accountReference (string): Account reference
  • $parameters (array): Optional parameters
$parameters = [
    'page' => 0,     // integer: Page number (default: 0)
    'size' => 10     // integer: Items per page (default: 10)
];

Invoice Service

Manage invoice creation and operations.

All Available Methods

// 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); 

Create a new Invoice

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

Required Parameters:

$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
];

Get Invoice Details

Retrieve details of a specific invoice.

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

Parameters:

  • $invoiceReference (string): The invoice reference to retrieve

Retrieve all invoices.

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

Cancel an existing invoice.

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

Parameters:

  • $invoiceReference (string): The invoice reference to cancel

Attach a reserved account to an existing invoice.

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

Required Parameters:

$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'
];

Optional Parameters:

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

Disbursement Service

Handles money transfers and disbursements.

All Available Methods

// 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); 

Single Transfer

Process a single money transfer.

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

Required Parameters:

$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
];

Optional Parameters:

  • $async (boolean): Whether to process transfer asynchronously (default: false)

Bulk Transfer

Process multiple transfers at once.

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

Required Parameters:

$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...
    ]
];

Authorize a transfer with OTP.

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

Required Parameters:

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

Check Transfer Status

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

Get Transaction

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

Other Operations

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

Parameters:

  • $accountNumber (string): Wallet account Number
  • $reference (string): transaction reference
  • $type (string): type of transaction (single or bulk)
  • $pageSize (integer): Number of records per page (default: 10)
  • $pageNumber (integer): Page number (default: 0)

Wallet Service

Manages wallet operations.

All Available Methods

// 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); 

Create Wallet

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

Required Parameters:

$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
    ],
];

Get Wallet Details

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

Parameters:

  • $customerEmail (string): Customer's email address
  • $pageSize (integer): Number of records per page (default: 10)
  • $pageNumber (integer): Page number (default: 0)

Check Wallet Balance

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

Parameters:

  • $accountNumber (string): Wallet account number

Get Wallet transactions

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

Parameters:

  • $accountNumber (string): Wallet account number
  • $pageSize (integer): Number of records per page (default: 10)
  • $pageNumber (integer): Page number (default: 0)

Verification Service

All Available Methods

// 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);                            

Verify Bank Account

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

Required Parameters:

  • $accountNumber (string): Account number to verify
  • $bankCode (string): Bank code

Verify BVN Information

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

Required Parameters:

$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
];

Match BVN with Bank Account

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

Required Parameters:

  • $bvn (string): BVN to match
  • $bankCode (string): Bank code
  • $accountNumber (string): Account number

Verify NIN

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

Sub Account Service

Manages sub-accounts for split payments.

All Available Methods

// 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); 

Create Sub Account

Creates a new sub-account for split payments.

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

Required Parameters:

$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
];

Get All Sub Accounts

Retrieves all sub-accounts associated with your contract.

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

Update Sub Account

Updates an existing sub-account's details.

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

Required Parameters:

$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
];

Delete Sub Account

Removes a sub-account from your contract.

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

Required Parameters:

  • $subAccountCode (string): The unique code of the sub-account to delete

Refund Service

All Available Methods

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

Initialize Refund

Creates a new refund request.

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

Required Parameters:

$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
];

Get Refund Status

Check the status of a specific refund.

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

Parameters:

  • $refundReference (string): Refund reference to check

Get All Refunds

Retrieves all refunds with pagination.

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

Optional Parameters:

  • $pageSize (integer): Number of records per page (default: 10)
  • $pageNumber (integer): Page number (default: 0)

Settlement Service

Manages settlement information and transactions.

All Available Methods

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

Get Settlement Transactions

Retrieves transactions for a specific settlement.

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

Required Parameters:

  • $settlementReference (string): Settlement reference to query

Optional Parameters:

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

Get Settlement by Transaction

Retrieves settlement details for a specific transaction.

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

Required Parameters:

  • $transactionReference (string): Transaction reference to query

Limit Profile Service

Manages transaction limits.

All Available Methods

// 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); 

Get All Limit Profiles

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

Create Limit Profile

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

Required Parameters:

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

Update Limit Profile

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

Parameters:

  • $limitProfileCode (string): Profile code to update
  • $data (array): New limit settings (same structure as create)

Reserve Account with Limit

Creates a reserved account with specific limits.

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

Required Parameters:

$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
];

Update Reserved Account with Limit Profile

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

Pay Code Service

Manages payment codes.

All Available Methods

// 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);      

Create Pay Code

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

Required Parameters:

$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
];

Get Pay Code Details

Retrieve the full detail of a payment code

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

Get Pay Code Details with Pay Code Unmasked

Retrieve the full detail of a payment code Unmasked

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

Get Pay Code History

Retrieves history of payment codes.

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

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)
];

Delete a payment code

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

Direct Debit Service

Manages direct debit mandates.

All Available Methods

// 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);       

Create Mandate

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

Required Parameters:

$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'
];

Optional Parameters:

	'autoRenew' => false,
    'customerCancellation' => true,
    'customerAccountName' => 'Ankit Kushwaha',

Get Mandate Details

Get full detail of a mandate payment.

Monnify::directDebitMandate()->get($mandateReference);

Required Parameters:

  • $mandateReference (string): Mandate reference

Debit Mandate

Executes a debit on an existing mandate.

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

Required Parameters:

$data = [
    'mandateCode' => 'MANDATE-123',    // string: Mandate code
    'amount' => 1000.00,                    // float: Amount to debit
    'paymentReference' => 'PAYMENT-123',    // string: Unique payment reference
    'narration' => 'Monthly subscription'   // string: Transaction description
    'customerEmail' =>'[email protected]' // string: Cunstomer Email
];

Get Mandate Status

Checks the status of a mandate payment.

Monnify::directDebitMandate()->status($paymentReference);

Required Parameters:

  • $paymentReference (string): Payment reference to check

Cancel Mandate Payment

Monnify::directDebitMandate()->cancel($mandateCode);

Required Parameters:

  • $mandateCode (string): Mandate code

Recurring Payment Service

All Available Methods

// Charge card using token
Monnify::recurringPayment()->chargeCardToken($data); 

Charge Card Token

Monnify::recurringPayment()->chargeCardToken($data);

Required Parameters:

$data = [
    'cardToken' => 'MNFY_0CD0138B45F7C3EC6D3698969',
    'amount' => 20,
    'customerEmail' => '[email protected]',
    'paymentReference' => '1642776mml0068n2937',
    'contractCode' => config('monnify.contract_code'),
    'apiKey' => config('monnify.api_key'),
];

Optional Parameters:

	'customerName' => 'Marvelous Benji',
    'paymentDescription' => 'Paying for Product A',
    'currencyCode' => 'NGN',
    'incomeSplitConfig' => [],
    'metaData' => [
    	'ipAddress' => '127.0.0.1',
        'deviceType' => 'mobile'
    ]

Other / Helper Service

Provides utility functions.

All Available Methods

// Get all banks
Monnify::helper()->banks(); 
      
// Get banks with USSD  
Monnify::helper()->banksWithUSSD(); 

Error Handling

Wrap API calls in try-catch blocks to handle exceptions efficiently:

try {
    $response = Monnify::transactions()->initialise($data);
} catch (Exception $e) {
    $error = $e->getMessage();
}

Testing

Run package tests with:

composer test

Contributing

  • Fork repository
  • Create feature/fix branch
  • Submit Pull Request

Security

Report security issues directly to [email protected].

Credits

License

This package is licensed under the MIT License.

Support

For support, contact Babatunde Adelabu.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages