1. Go to this page and download the library: Download kommandhub/paystack 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/ */
kommandhub / paystack example snippets
use Kommandhub\Paystack\Paystack;
use GuzzleHttp\Client;
use Nyholm\Psr7\Factory\Psr17Factory;
$factory = new Psr17Factory();
$paystack = new Paystack(
secretKey: 'sk_live_your_secret_key',
client: new Client(),
requestFactory: $factory,
streamFactory: $factory
);
// Initialize a transaction
$response = $paystack->transactions()->initialize([
'email' => '[email protected]',
'amount' => 500000, // amount in kobo (NGN 5,000)
]);
header('Location: ' . $response['data']['authorization_url']);
exit;
use Kommandhub\Paystack\Paystack;
use GuzzleHttp\Client;
use Nyholm\Psr7\Factory\Psr17Factory;
$factory = new Psr17Factory();
$paystack = new Paystack(
secretKey: 'sk_live_your_secret_key',
client: new Client(),
requestFactory: $factory,
streamFactory: $factory
);
use Kommandhub\Paystack\Paystack;
use App\Http\MyCustomHttpClient;
$paystack = new Paystack(
secretKey: 'sk_live_your_secret_key',
httpClient: new MyCustomHttpClient()
);
[
'status' => true, // bool – whether the request succeeded
'message' => 'Authorized', // string – human-readable status message
'data' => [ ... ], // array – the actual payload (varies by endpoint)
]
// Create a transfer recipient
$response = $paystack->transfers()->recipient([
'type' => 'nuban',
'name' => 'John Doe',
'account_number' => '0001234567',
'bank_code' => '058',
'currency' => 'NGN',
]);
$recipientCode = $response['data']['recipient_code'];
// Initiate a transfer
$response = $paystack->transfers()->initiate([
'source' => 'balance',
'amount' => 50000,
'recipient' => $recipientCode,
'reason' => 'Payment for services',
]);
// List transfers (supports query params: perPage, page, customer, etc.)
$response = $paystack->transfers()->list(['perPage' => 20]);
// Fetch a single transfer by ID or transfer code
$response = $paystack->transfers()->fetch('TRF_xxxxxxxxxx');
// Verify a transfer by reference
$response = $paystack->transfers()->verify('transfer_reference');
// Create a subscription
$response = $paystack->subscriptions()->create([
'customer' => 'CUS_xxxxxxxxxx',
'plan' => 'PLN_xxxxxxxxxx',
'start_date' => '2026-01-01T00:00:00.000Z', // optional
]);
// List subscriptions (supports query params: perPage, page, customer, plan)
$response = $paystack->subscriptions()->list(['plan' => 'PLN_xxxxxxxxxx']);
// Fetch a subscription by ID or subscription code
$response = $paystack->subscriptions()->fetch('SUB_xxxxxxxxxx');
// Enable a subscription
$response = $paystack->subscriptions()->enable([
'code' => 'SUB_xxxxxxxxxx',
'token' => 'email_token',
]);
// Disable a subscription
$response = $paystack->subscriptions()->disable([
'code' => 'SUB_xxxxxxxxxx',
'token' => 'email_token',
]);
// Generate a self-service management link for the customer
$response = $paystack->subscriptions()->manageLink('SUB_xxxxxxxxxx');
$managementUrl = $response['data']['link'];
// Email the management link directly to the customer
$response = $paystack->subscriptions()->sendManageLink('SUB_xxxxxxxxxx');
// Create a plan
$response = $paystack->plans()->create([
'name' => 'Monthly Premium',
'amount' => 500000, // in kobo
'interval' => 'monthly', // daily | weekly | monthly | annually
]);
// List plans (supports query params: perPage, page, status, interval, amount)
$response = $paystack->plans()->list(['interval' => 'monthly']);
// Fetch a plan by ID or plan code
$response = $paystack->plans()->fetch('PLN_xxxxxxxxxx');
// Update a plan
$response = $paystack->plans()->update('PLN_xxxxxxxxxx', [
'name' => 'Monthly Premium Plus',
'amount' => 750000,
]);
// Create a split
$response = $paystack->splits()->create([
'name' => 'Revenue Split',
'type' => 'percentage', // percentage | flat
'currency' => 'NGN',
'subaccounts' => [
['subaccount' => 'ACCT_xxxxxxxxxx', 'share' => 20],
],
'bearer_type' => 'subaccount', // subaccount | account | all-proportional | all
'bearer_subaccount' => 'ACCT_xxxxxxxxxx',
]);
// List splits (supports query params: name, active, sort_by, perPage, page, from, to)
$response = $paystack->splits()->list(['active' => true]);
// Fetch a split by ID
$response = $paystack->splits()->fetch('SPL_xxxxxxxxxx');
// Update a split
$response = $paystack->splits()->update('SPL_xxxxxxxxxx', [
'name' => 'Updated Revenue Split',
'active' => true,
]);
// Add or update a subaccount in a split
$response = $paystack->splits()->addSubaccount('SPL_xxxxxxxxxx', [
'subaccount' => 'ACCT_yyyyyyyyyy',
'share' => 30,
]);
// Remove a subaccount from a split
$response = $paystack->splits()->removeSubaccount('SPL_xxxxxxxxxx', [
'subaccount' => 'ACCT_yyyyyyyyyy',
]);
// Create a subaccount
$response = $paystack->subaccounts()->create([
'business_name' => 'Acme Stores',
'settlement_bank' => '058',
'account_number' => '0001234567',
'percentage_charge' => 18.2,
]);
// List subaccounts (supports query params: perPage, page, from, to)
$response = $paystack->subaccounts()->list(['perPage' => 50]);
// Fetch a subaccount by ID or subaccount code
$response = $paystack->subaccounts()->fetch('ACCT_xxxxxxxxxx');
// Update a subaccount
$response = $paystack->subaccounts()->update('ACCT_xxxxxxxxxx', [
'percentage_charge' => 20.0,
'description' => 'Updated description',
]);
// Create a refund (omit 'amount' for a full refund)
$response = $paystack->refunds()->create([
'transaction' => 'transaction_reference',
'amount' => 50000, // optional – partial refund in kobo
]);
// List refunds (supports query params: reference, currency, from, to, perPage, page)
$response = $paystack->refunds()->list(['reference' => 'transaction_reference']);
// Fetch a refund by reference
$response = $paystack->refunds()->fetch('refund_reference');
// Resolve a bank account number
$response = $paystack->verification()->resolveAccount('0001234567', '058');
$accountName = $response['data']['account_name'];
// Resolve a card BIN (first 6 digits)
$response = $paystack->verification()->resolveCardBin('539983');
$cardInfo = $response['data']; // bank, card_type, brand, etc.
// List settlements (supports query params: perPage, page, status, subaccount, from, to)
$response = $paystack->settlements()->list(['from' => '2026-01-01']);
// Fetch transactions for a specific settlement
$response = $paystack->settlements()->transactions('settlement_id', ['perPage' => 100]);
// List supported banks (supports query params: country, use_cursor, perPage, etc.)
$response = $paystack->miscellaneous()->listBanks(['country' => 'nigeria']);
// List supported countries
$response = $paystack->miscellaneous()->listCountries();
// List states for Address Verification Service (AVS)
$response = $paystack->miscellaneous()->listStates('US');