This document provides a comprehensive reference for all Paystack PHP SDK classes and methods.
- Client Configuration
- Core Resources
- Transfer Resources
- Advanced Resources
- Dispute & Refund Resources
- Utility Resources
The main client class for interacting with the Paystack API.
public function __construct(array $opts = [])Parameters:
secretKey(string, required): Your Paystack secret keyapiVersion(string, optional): API version to use (default: 'v1')baseUri(string, optional): Custom base URI (default: 'https://api.paystack.co')
Example:
$paystack = new PaystackClient([
'secretKey' => 'sk_test_your_secret_key_here',
'apiVersion' => 'v1',
'baseUri' => 'https://api.paystack.co'
]);Returns the underlying HTTP client instance.
public function getHttpClient(): HttpMethodsClientInterfaceManage payment transactions.
Initialize a transaction.
public function initialize(array $params): arrayParameters:
email(string, required): Customer's email addressamount(int, required): Amount in kobo (smallest currency unit)currency(string, optional): Currency code (default: NGN)reference(string, optional): Unique transaction referencecallback_url(string, optional): URL to redirect after paymentplan(string, optional): Plan code for subscriptioninvoice_limit(int, optional): Number of invoices to generatemetadata(array, optional): Additional transaction datachannels(array, optional): Payment channels to allowsplit_code(string, optional): Transaction split codesubaccount(string, optional): Subaccount codetransaction_charge(int, optional): Amount to charge subaccountbearer(string, optional): Who bears Paystack charges
Example:
$transaction = $paystack->transactions->initialize([
'email' => 'customer@example.com',
'amount' => 20000,
'currency' => 'NGN',
'callback_url' => 'https://yoursite.com/payment/callback',
'metadata' => [
'custom_fields' => [
['display_name' => 'Cart ID', 'variable_name' => 'cart_id', 'value' => '12345']
]
]
]);Verify a transaction.
public function verify(string $reference): arrayParameters:
reference(string, required): Transaction reference
Example:
$verification = $paystack->transactions->verify('transaction_reference');List transactions with optional filters.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of transactions per pagepage(int, optional): Page numbercustomer(string, optional): Customer ID or codestatus(string, optional): Transaction statusfrom(string, optional): Start date (YYYY-MM-DD)to(string, optional): End date (YYYY-MM-DD)amount(int, optional): Filter by amount
Example:
$transactions = $paystack->transactions->all([
'perPage' => 50,
'status' => 'success',
'from' => '2024-01-01',
'to' => '2024-12-31'
]);Get details of a transaction.
public function fetch(int $id): arrayParameters:
id(int, required): Transaction ID
Charge an authorization.
public function chargeAuthorization(array $params): arrayParameters:
authorization_code(string, required): Authorization codeemail(string, required): Customer's emailamount(int, required): Amount in kobo
Check authorization validity.
public function checkAuthorization(array $params): arrayView transaction timeline.
public function timeline(string $idOrReference): arrayGet transaction totals.
public function totals(array $params = []): arrayExport transactions.
public function export(array $params = []): arrayPerform partial debit.
public function partialDebit(array $params): arrayManage customer data and profiles.
Create a new customer.
public function create(array $params): arrayParameters:
email(string, required): Customer's email addressfirst_name(string, optional): Customer's first namelast_name(string, optional): Customer's last namephone(string, optional): Customer's phone numbermetadata(array, optional): Additional customer data
Example:
$customer = $paystack->customers->create([
'email' => 'customer@example.com',
'first_name' => 'John',
'last_name' => 'Doe',
'phone' => '+2348123456789',
'metadata' => [
'custom_fields' => [
['display_name' => 'Loyalty ID', 'variable_name' => 'loyalty_id', 'value' => 'LTY123']
]
]
]);List customers.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of customers per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Get customer details.
public function fetch(string $emailOrCode): arrayParameters:
emailOrCode(string, required): Customer email or customer code
Update customer information.
public function update(string $customerCode, array $params): arrayParameters:
customerCode(string, required): Customer codefirst_name(string, optional): Updated first namelast_name(string, optional): Updated last namephone(string, optional): Updated phone numbermetadata(array, optional): Updated metadata
Validate customer identity.
public function validate(string $customerCode, array $params): arraySet risk action for customer.
public function setRiskAction(string $customerCode, array $params): arrayDeactivate customer authorization.
public function deactivateAuthorization(array $params): arrayCreate and manage payment requests and invoices.
Create a payment request.
public function create(array $params): arrayParameters:
description(string, optional): Payment request descriptionline_items(array, optional): Array of line itemstax(array, optional): Array of tax itemscustomer(string, required): Customer ID, code, or emaildue_date(string, optional): Due date (YYYY-MM-DD)send_notification(bool, optional): Send email notificationdraft(bool, optional): Save as drafthas_invoice(bool, optional): Generate invoice numberinvoice_number(int, optional): Custom invoice numbersplit_code(string, optional): Split code
Example:
$paymentRequest = $paystack->paymentRequests->create([
'description' => 'Website Development Invoice',
'line_items' => [
['name' => 'Frontend Development', 'amount' => 50000, 'quantity' => 1],
['name' => 'Backend Development', 'amount' => 75000, 'quantity' => 1]
],
'tax' => [
['name' => 'VAT', 'amount' => 9375] // 7.5%
],
'customer' => 'customer@example.com',
'due_date' => date('Y-m-d', strtotime('+30 days')),
'send_notification' => true
]);List payment requests.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of requests per pagepage(int, optional): Page numbercustomer(string, optional): Customer filterstatus(string, optional): Status filter
Get payment request details.
public function fetch(string $idOrCode): arrayVerify payment request.
public function verify(string $code): arraySend payment request notification.
public function sendNotification(string $code): arrayGet payment request totals.
public function totals(): arrayFinalize a draft payment request.
public function finalize(string $code, array $params = []): arrayParameters:
code(string, required): Payment request codesend_notification(bool, optional): Send notification after finalizing
Update payment request.
public function update(string $idOrCode, array $params): arrayArchive payment request.
public function archive(string $code): arrayCreate and manage subscription plans.
Create a subscription plan.
public function create(array $params): arrayParameters:
name(string, required): Plan nameinterval(string, required): Billing interval (daily, weekly, monthly, quarterly, biannually, annually)amount(int, required): Plan amount in kobodescription(string, optional): Plan descriptionsend_invoices(bool, optional): Send invoicessend_sms(bool, optional): Send SMS notificationscurrency(string, optional): Currency code
Example:
$plan = $paystack->plans->create([
'name' => 'Premium Monthly Plan',
'interval' => 'monthly',
'amount' => 5000, // ₦50.00
'description' => 'Premium features with monthly billing',
'currency' => 'NGN',
'send_invoices' => true,
'send_sms' => false
]);List plans.
public function all(array $params = []): arrayGet plan details.
public function fetch(string $idOrCode): arrayUpdate plan.
public function update(string $idOrCode, array $params): arrayManage recurring billing subscriptions.
Create a subscription.
public function create(array $params): arrayParameters:
customer(string, required): Customer codeplan(string, required): Plan codeauthorization(string, optional): Authorization codestart_date(string, optional): Subscription start date
Example:
$subscription = $paystack->subscriptions->create([
'customer' => 'CUS_xwaj0txjryg393b',
'plan' => 'PLN_plancode',
'authorization' => 'AUTH_authorization_code'
]);List subscriptions.
public function all(array $params = []): arrayGet subscription details.
public function fetch(string $idOrCode): arrayEnable subscription.
public function enable(array $params): arrayDisable subscription.
public function disable(string $code, array $params): arrayGenerate subscription update link.
public function generateUpdateSubscriptionLink(string $code): arraySend subscription update link.
public function sendUpdateSubscriptionLink(string $code): arraySend money to bank accounts and mobile money wallets.
Initiate a transfer.
public function initiate(array $params): arrayParameters:
source(string, required): Transfer sourceamount(int, required): Amount in koborecipient(string, required): Transfer recipient codereason(string, optional): Transfer reasoncurrency(string, optional): Currency codereference(string, optional): Transfer reference
Example:
$transfer = $paystack->transfers->initiate([
'source' => 'balance',
'amount' => 100000, // ₦1,000.00
'recipient' => 'RCP_recipient_code',
'reason' => 'Payment for services',
'currency' => 'NGN'
]);Finalize transfer.
public function finalize(string $transferCode, array $params): arrayInitiate bulk transfer.
public function initiateBulk(array $params): arrayList transfers.
public function all(array $params = []): arrayGet transfer details.
public function fetch(string $idOrCode): arrayVerify transfer.
public function verify(string $reference): arrayManage transfer beneficiaries.
Create transfer recipient.
public function create(array $params): arrayParameters:
type(string, required): Recipient type (nuban, mobile_money, basa)name(string, required): Recipient nameaccount_number(string, required): Account numberbank_code(string, required): Bank codedescription(string, optional): Descriptioncurrency(string, optional): Currency codeauthorization_code(string, optional): Authorization codemetadata(array, optional): Additional data
Example:
$recipient = $paystack->transferRecipients->create([
'type' => 'nuban',
'name' => 'John Doe',
'account_number' => '0123456789',
'bank_code' => '044',
'currency' => 'NGN',
'description' => 'Primary business account'
]);Create multiple recipients.
public function bulkCreate(array $params): arrayList transfer recipients.
public function all(array $params = []): arrayGet recipient details.
public function fetch(string $idOrCode): arrayUpdate recipient.
public function update(string $idOrCode, array $params): arrayDelete transfer recipient.
public function delete(string $idOrCode): arrayManage transfer settings and controls.
Check transfer balance.
public function checkBalance(): arrayFetch balance ledger.
public function fetchBalanceLedger(): arrayResend transfer OTP.
public function resendOtp(array $params): arrayDisable OTP requirement.
public function disableOtp(): arrayFinalize OTP disable.
public function finalizeDisableOtp(array $params): arrayEnable OTP requirement.
public function enableOtp(): arrayCreate marketplace split payment accounts.
Create subaccount.
public function create(array $params): arrayParameters:
business_name(string, required): Business namesettlement_bank(string, required): Settlement bank codeaccount_number(string, required): Account numberpercentage_charge(float, required): Percentage of each paymentdescription(string, optional): Descriptionprimary_contact_email(string, optional): Contact emailprimary_contact_name(string, optional): Contact nameprimary_contact_phone(string, optional): Contact phonemetadata(array, optional): Additional data
Example:
$subaccount = $paystack->subaccounts->create([
'business_name' => 'Vendor Store',
'settlement_bank' => '044',
'account_number' => '0123456789',
'percentage_charge' => 15.5, // 15.5% of each transaction
'description' => 'Vendor commission account',
'primary_contact_email' => 'vendor@example.com',
'primary_contact_name' => 'Jane Vendor',
'primary_contact_phone' => '+2348123456789'
]);List subaccounts.
public function all(array $params = []): arrayGet subaccount details.
public function fetch(string $idOrCode): arrayUpdate subaccount.
public function update(string $idOrCode, array $params): arrayAdvanced payment splitting configuration.
Create payment split.
public function create(array $params): arrayParameters:
name(string, required): Split configuration nametype(string, required): Split type (percentage, flat)currency(string, required): Currency codesubaccounts(array, required): Array of subaccount splitsbearer_type(string, required): Who bears chargesbearer_subaccount(string, optional): Subaccount to bear charges
Example:
$split = $paystack->splits->create([
'name' => 'Marketplace Split',
'type' => 'percentage',
'currency' => 'NGN',
'subaccounts' => [
['subaccount' => 'ACCT_vendor1', 'share' => 70],
['subaccount' => 'ACCT_vendor2', 'share' => 20]
],
'bearer_type' => 'all',
]);List payment splits.
public function all(array $params = []): arrayGet split details.
public function fetch(string $id): arrayUpdate split configuration.
public function update(string $id, array $params): arrayAdd or update subaccount in split.
public function addOrUpdateSubaccount(string $id, array $params): arrayRemove subaccount from split.
public function removeSubaccount(string $id, array $params): arrayManage Apple Pay domain registration for your integration.
Register a top-level domain or subdomain for your Apple Pay integration.
public function registerDomain(array $params): arrayParameters:
domainName(string, required): The domain name to register
Example:
$applePay = $paystack->applePay->registerDomain([
'domainName' => 'example.com'
]);List all registered domains on your integration.
public function listDomains(array $params = []): arrayParameters:
use_cursor(bool, optional): Use cursor for paginationnext(string, optional): Cursor for next pageprevious(string, optional): Cursor for previous page
Unregister a top-level domain or subdomain previously used for your Apple Pay integration.
public function unregisterDomain(array $params): arrayParameters:
domainName(string, required): The domain name to unregister
Initiate and manage direct charges through various payment channels.
Initiate a payment by integrating the payment channel of choice.
public function create(array $params): arrayParameters:
email(string, required): Customer's email addressamount(int, required): Amount in kobobank(array, optional): Bank details for bank chargeauthorization_code(string, optional): Authorization code for card chargepin(string, optional): Card PINmetadata(array, optional): Additional metadata
Example:
$charge = $paystack->charges->create([
'email' => 'customer@example.com',
'amount' => 10000,
'bank' => [
'code' => '057',
'account_number' => '0000000000'
]
]);Submit PIN to continue a charge.
public function submitPin(array $params): arrayParameters:
pin(string, required): Card PINreference(string, required): Transaction reference
Submit OTP to complete a charge.
public function submitOtp(array $params): arrayParameters:
otp(string, required): One-time passwordreference(string, required): Transaction reference
Submit phone when requested.
public function submitPhone(array $params): arrayParameters:
phone(string, required): Customer's phone numberreference(string, required): Transaction reference
Submit birthday when requested.
public function submitBirthday(array $params): arrayParameters:
birthday(string, required): Customer's birthday (YYYY-MM-DD)reference(string, required): Transaction reference
Submit address to continue charge.
public function submitAddress(array $params): arrayParameters:
address(string, required): Customer's addressreference(string, required): Transaction referencecity(string, required): Citystate(string, required): Statezipcode(string, required): Zip code
Check pending charge.
public function checkPending(string $reference): arrayParameters:
reference(string, required): Transaction reference
Process multiple charges in batches.
Send an array of objects with authorization codes and amounts to process transactions as a batch.
public function initiate(array $params): arrayParameters:
body(array, required): Array of charge objects containing authorization codes and amounts
Example:
$bulkCharge = $paystack->bulkCharges->initiate([
[
'authorization' => 'AUTH_code1',
'amount' => 10000,
'reference' => 'ref_001'
],
[
'authorization' => 'AUTH_code2',
'amount' => 20000,
'reference' => 'ref_002'
]
]);List bulk charge batches created by the integration.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of batches per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Retrieve a specific batch code and its progress information.
public function find(string $idOrCode): arrayParameters:
idOrCode(string, required): Batch ID or code
Retrieve the charges associated with a specified batch code.
public function getCharges(string $idOrCode, array $params = []): arrayParameters:
idOrCode(string, required): Batch ID or codestatus(string, optional): Filter by statusperPage(int, optional): Number of charges per pagepage(int, optional): Page number
Pause processing a batch.
public function pause(string $batchCode): arrayParameters:
batchCode(string, required): Batch code
Resume processing a batch.
public function resume(string $batchCode): arrayParameters:
batchCode(string, required): Batch code
Manage transaction disputes filed against you.
List disputes filed against you.
public function all(array $params = []): arrayParameters:
from(string, optional): Start date (YYYY-MM-DD)to(string, optional): End date (YYYY-MM-DD)perPage(int, optional): Number of disputes per pagepage(int, optional): Page numbertransaction(string, optional): Transaction IDstatus(string, optional): Dispute status
Example:
$disputes = $paystack->disputes->all([
'status' => 'pending',
'perPage' => 20
]);Get details of a dispute.
public function find(string $id): arrayParameters:
id(string, required): Dispute ID
Update details of a dispute.
public function update(string $id, array $params): arrayParameters:
id(string, required): Dispute IDrefund_amount(int, optional): Amount to refund in kobouploaded_filename(string, optional): Filename of uploaded evidence
Add evidence to a dispute.
public function addEvidence(string $id, array $params): arrayParameters:
id(string, required): Dispute IDcustomer_email(string, required): Customer's emailcustomer_name(string, required): Customer's namecustomer_phone(string, required): Customer's phoneservice_details(string, required): Service detailsdelivery_address(string, optional): Delivery addressdelivery_date(string, optional): Delivery date
Get upload URL for a dispute file.
public function getUploadUrl(string $id, array $params): arrayParameters:
id(string, required): Dispute IDupload_filename(string, required): Filename to upload
Resolve a dispute.
public function resolve(string $id, array $params): arrayParameters:
id(string, required): Dispute IDresolution(string, required): Resolution type (merchant-accepted, declined)message(string, required): Resolution messagerefund_amount(int, required): Amount to refund in kobouploaded_filename(string, required): Evidence filenameevidence(int, optional): Evidence ID
Export disputes.
public function export(array $params = []): arrayParameters:
perPage(int, optional): Number of disputes to exportpage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Initiate and manage transaction refunds.
Initiate a refund on a successful transaction.
public function create(array $params): arrayParameters:
transaction(string, required): Transaction reference or IDamount(int, optional): Amount to refund in kobo (defaults to full amount)currency(string, optional): Currency codecustomer_note(string, optional): Note for customermerchant_note(string, optional): Internal note
Example:
$refund = $paystack->refunds->create([
'transaction' => 'transaction_reference',
'amount' => 5000,
'customer_note' => 'Refund for cancelled order'
]);List refunds available on your integration.
public function all(array $params = []): arrayParameters:
reference(string, optional): Transaction referencecurrency(string, optional): Currency codeperPage(int, optional): Number of refunds per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Get details of a refund.
public function find(string $id): arrayParameters:
id(string, required): Refund ID
View settlements made to your settlement accounts.
List settlements made to your settlement accounts.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of settlements per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End datesubaccount(string, optional): Subaccount ID
Example:
$settlements = $paystack->settlements->all([
'perPage' => 50,
'from' => '2024-01-01'
]);Get the transactions that make up a particular settlement.
public function getTransactions(string $id, array $params = []): arrayParameters:
id(string, required): Settlement IDperPage(int, optional): Number of transactions per pagepage(int, optional): Page number
Create and manage payment pages for collecting payments.
Create a payment page.
public function create(array $params): arrayParameters:
name(string, required): Page namedescription(string, optional): Page descriptionamount(int, optional): Amount in kobo (for fixed amount pages)slug(string, optional): Custom slugmetadata(array, optional): Additional metadataredirect_url(string, optional): Redirect URL after paymentcustom_fields(array, optional): Custom form fields
Example:
$page = $paystack->pages->create([
'name' => 'Product Payment Page',
'description' => 'Payment for premium product',
'amount' => 50000,
'slug' => 'premium-product',
'redirect_url' => 'https://yoursite.com/thank-you'
]);List payment pages available on your integration.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of pages per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Get details of a payment page.
public function find(string $idOrSlug): arrayParameters:
idOrSlug(string, required): Page ID or slug
Update a payment page.
public function update(string $idOrSlug, array $params): arrayParameters:
idOrSlug(string, required): Page ID or slugname(string, optional): Updated page namedescription(string, optional): Updated descriptionamount(int, optional): Updated amountactive(bool, optional): Active status
Check the availability of a slug for a payment page.
public function checkSlugAvailability(string $slug): arrayParameters:
slug(string, required): Slug to check
Add products to a payment page.
public function addProducts(string $id, array $params): arrayParameters:
id(string, required): Page IDproduct(array, required): Array of product IDs
Create and manage products for your payment pages.
Create a product on your integration.
public function create(array $params): arrayParameters:
name(string, required): Product namedescription(string, required): Product descriptionprice(int, required): Product price in kobocurrency(string, required): Currency codeunlimited(bool, optional): Unlimited stockquantity(int, optional): Available quantity
Example:
$product = $paystack->products->create([
'name' => 'Premium Subscription',
'description' => 'Monthly premium access',
'price' => 10000,
'currency' => 'NGN',
'unlimited' => false,
'quantity' => 100
]);List products available on your integration.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of products per pagepage(int, optional): Page numberfrom(string, optional): Start dateto(string, optional): End date
Get details of a product on your integration.
public function find(string $id): arrayParameters:
id(string, required): Product ID
Update a product details on your integration.
public function update(string $id, array $params): arrayParameters:
id(string, required): Product IDname(string, optional): Updated product namedescription(string, optional): Updated descriptionprice(int, optional): Updated pricecurrency(string, optional): Updated currencyunlimited(bool, optional): Updated stock statusquantity(int, optional): Updated quantity
Create and manage invoices (alternative to Payment Requests).
Create a new invoice.
public function create(array $params): arrayParameters:
customer(string, required): Customer code or emaildescription(string, optional): Invoice descriptiondue_date(string, optional): Due date (YYYY-MM-DD)line_items(array, optional): Array of line itemstax(array, optional): Array of tax itemssend_notification(bool, optional): Send notificationdraft(bool, optional): Save as draft
Example:
$invoice = $paystack->invoices->create([
'customer' => 'customer@example.com',
'description' => 'Consulting Services',
'line_items' => [
['name' => 'Consultation', 'amount' => 50000, 'quantity' => 2]
],
'due_date' => date('Y-m-d', strtotime('+14 days'))
]);Retrieve all invoices.
public function all(array $params): arrayParameters:
perPage(int, optional): Number of invoices per pagepage(int, optional): Page numbercustomer(string, optional): Customer ID or codestatus(string, optional): Invoice statuscurrency(string, optional): Currency codefrom(string, optional): Start dateto(string, optional): End date
Retrieve an invoice.
public function find(string $id): arrayParameters:
id(string, required): Invoice ID or code
Verify details of an invoice on your integration.
public function verify(string $id): arrayParameters:
id(string, required): Invoice ID or code
Send notification of an invoice to your customers.
public function notify(string $id): arrayParameters:
id(string, required): Invoice ID or code
Finalize a draft invoice.
public function finalize(string $id): arrayParameters:
id(string, required): Invoice ID or code
Archive an invoice. Invoice will no longer be fetched on list or returned on verify.
public function archive(string $id): arrayParameters:
id(string, required): Invoice ID or code
Get invoice metrics for dashboard.
public function stats(): arrayUpdate an invoice.
public function update(string $id, array $params): arrayParameters:
id(string, required): Invoice ID or codecustomer(string, optional): Customer code or emaildescription(string, optional): Updated descriptiondue_date(string, optional): Updated due dateline_items(array, optional): Updated line itemstax(array, optional): Updated tax items
Verify customer account details and card information.
Confirm an account belongs to the right customer.
public function resolveAccount(array $params): arrayParameters:
account_number(string, required): Account numberbank_code(string, required): Bank code
Example:
$verification = $paystack->verification->resolveAccount([
'account_number' => '0123456789',
'bank_code' => '044'
]);Confirm the authenticity of a customer's account number before sending money.
public function validateAccount(array $params): arrayParameters:
account_name(string, required): Customer's account nameaccount_number(string, required): Customer's account numberaccount_type(string, required): Account type (personal, business)bank_code(string, required): Bank codecountry_code(string, required): Country codedocument_type(string, required): Document typedocument_number(string, optional): Document number
Get more information about a customer's card.
public function resolveCardBin(string $bin): arrayParameters:
bin(string, required): First 6 digits of card
Example:
$cardInfo = $paystack->verification->resolveCardBin('539983');Create and manage dedicated virtual accounts for customers.
Create a dedicated virtual account for an existing customer.
public function create(array $params): arrayParameters:
customer(string, required): Customer ID or codepreferred_bank(string, optional): Preferred bank slugsubaccount(string, optional): Subaccount codesplit_code(string, optional): Split codefirst_name(string, optional): Customer's first namelast_name(string, optional): Customer's last namephone(string, optional): Customer's phone number
Example:
$dva = $paystack->dedicatedVirtualAccounts->create([
'customer' => 'CUS_customercode',
'preferred_bank' => 'wema-bank'
]);Assign a dedicated virtual account to a customer.
public function assign(array $params): arrayParameters:
email(string, required): Customer's emailfirst_name(string, required): Customer's first namelast_name(string, required): Customer's last namephone(string, required): Customer's phone numberpreferred_bank(string, required): Preferred bank slugcountry(string, optional): Country code
List dedicated virtual accounts available on your integration.
public function all(array $params = []): arrayParameters:
active(bool, optional): Filter by active statuscurrency(string, optional): Currency codeperPage(int, optional): Number of accounts per pagepage(int, optional): Page number
Get details of a dedicated virtual account.
public function find(string $dedicatedAccountId): arrayParameters:
dedicatedAccountId(string, required): Dedicated account ID
Requery dedicated virtual account for new transactions.
public function requery(array $params): arrayParameters:
account_number(string, required): Virtual account numberprovider_slug(string, required): Bank provider slugdate(string, optional): Date to requery (YYYY-MM-DD)
Deactivate a dedicated virtual account.
public function deactivate(string $dedicatedAccountId): arrayParameters:
dedicatedAccountId(string, required): Dedicated account ID
Split a dedicated virtual account transaction with one or more accounts.
public function split(array $params): arrayParameters:
customer(string, required): Customer ID or codepreferred_bank(string, optional): Preferred bank slugsubaccount(string, optional): Subaccount codesplit_code(string, optional): Split code
Remove a split payment account from a dedicated virtual account.
public function removeSplit(array $params): arrayParameters:
account_number(string, required): Dedicated virtual account number
Get available bank providers for dedicated virtual accounts.
public function getProviders(): arrayManage Paystack Terminals for in-person payments.
Send an event from your application to the Paystack Terminal.
public function sendEvent(string $terminalId, array $params): arrayParameters:
terminalId(string, required): Terminal IDtype(string, required): Event type (invoice, transaction)action(string, required): Event action (process, view, print)data(array, required): Event data
Example:
$event = $paystack->terminals->sendEvent('terminal_id', [
'type' => 'invoice',
'action' => 'process',
'data' => [
'id' => '12345',
'reference' => 'INV_ref'
]
]);Check the status of an event sent to the Terminal.
public function fetchEventStatus(string $terminalId, string $eventId): arrayParameters:
terminalId(string, required): Terminal IDeventId(string, required): Event ID
Check the availability of a Terminal before sending an event to it.
public function fetchTerminalStatus(string $terminalId): arrayParameters:
terminalId(string, required): Terminal ID
List the Terminals available on your integration.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of terminals per pagenext(string, optional): Cursor for next pageprevious(string, optional): Cursor for previous page
Get the details of a Terminal.
public function find(string $terminalId): arrayParameters:
terminalId(string, required): Terminal ID
Update the details of a Terminal.
public function update(string $terminalId, array $params): arrayParameters:
terminalId(string, required): Terminal IDname(string, optional): Terminal nameaddress(string, optional): Terminal address
Activate your debug device by linking it to your integration.
public function commission(array $params): arrayParameters:
serial_number(string, required): Device serial number
Unlink your debug device from your integration.
public function decommission(array $params): arrayParameters:
serial_number(string, required): Device serial number
Manage Virtual Terminals for WhatsApp payments.
Create a Virtual Terminal on your integration.
public function create(array $params): arrayParameters:
type(string, required): Terminal typename(string, optional): Terminal namedescription(string, optional): Terminal description
Example:
$virtualTerminal = $paystack->virtualTerminals->create([
'type' => 'terminal',
'name' => 'WhatsApp Terminal',
'description' => 'Terminal for WhatsApp payments'
]);List Virtual Terminals on your integration.
public function all(array $params = []): arrayParameters:
perPage(int, optional): Number of terminals per pagepage(int, optional): Page number
Fetch a Virtual Terminal on your integration.
public function find(string $code): arrayParameters:
code(string, required): Terminal code
Update a Virtual Terminal on your integration.
public function update(string $code, array $params): arrayParameters:
code(string, required): Terminal codename(string, optional): Updated terminal namedescription(string, optional): Updated description
Deactivate a Virtual Terminal on your integration.
public function deactivate(string $code): arrayParameters:
code(string, required): Terminal code
Add a destination (WhatsApp number) to a Virtual Terminal.
public function assignDestination(string $code, array $params): arrayParameters:
code(string, required): Terminal codedestination(string, required): WhatsApp number
Unassign a destination (WhatsApp number) from a Virtual Terminal.
public function unassignDestination(string $code, array $params): arrayParameters:
code(string, required): Terminal codedestination(string, required): WhatsApp number
Add a split code to a Virtual Terminal.
public function addSplitCode(string $code, array $params): arrayParameters:
code(string, required): Terminal codesplit_code(string, required): Split code
Remove a split code from a Virtual Terminal.
public function removeSplitCode(string $code, array $params): arrayParameters:
code(string, required): Terminal codesplit_code(string, required): Split code
Manage integration settings and configurations.
Fetch the payment session timeout on your integration.
public function fetchTimeout(): arrayExample:
$timeout = $paystack->integration->fetchTimeout();Update the payment session timeout on your integration.
public function updateTimeout(array $params): arrayParameters:
timeout(int, required): Timeout in seconds
Example:
$result = $paystack->integration->updateTimeout([
'timeout' => 1800 // 30 minutes
]);Utility methods for banks, countries, and states.
Get a list of all supported banks and their properties.
public function listBanks(array $params = []): arrayParameters:
country(string, optional): Country code (default: nigeria)use_cursor(bool, optional): Use cursor for paginationperPage(int, optional): Number of banks per pagepay_with_bank_transfer(bool, optional): Filter banks that support transferpay_with_bank(bool, optional): Filter banks that support bank paymentenabled_for_verification(bool, optional): Filter banks enabled for account verification
Example:
$banks = $paystack->miscellaneous->listBanks([
'country' => 'nigeria',
'pay_with_bank_transfer' => true
]);Get a list of countries that Paystack currently supports.
public function listCountries(): arrayExample:
$countries = $paystack->miscellaneous->listCountries();Get a list of states for a country for address verification.
public function listStates(array $params): arrayParameters:
country(string, required): Country code
Example:
$states = $paystack->miscellaneous->listStates([
'country' => 'NG'
]);This documentation provides comprehensive coverage of the Paystack PHP SDK API. For more detailed examples and use cases, refer to the Getting Started Guide and Advanced Usage documentation.