Skip to content

SDKs Overview

ZevPay provides client-side SDKs for collecting payments and a server-side SDK for managing transactions from your backend.

Integration options

FeatureInline CheckoutStandard CheckoutReactFlutterNode.js SDKPHP SDKPython SDKLaravelWooCommerce
IntegrationJavaScript SDK on your pageRedirect to hosted pageReact components/hooksWebView in mobile appServer-side libraryServer-side libraryServer-side libraryLaravel packageWordPress plugin
User experienceModal overlay, user stays on your siteFull-page checkout on ZevPayModal overlay (React)In-app WebView checkoutBackend API callsBackend API callsBackend API callsBackend API callsInline modal or redirect
Session creationClient-side (SDK handles it)Server-side (you create, then redirect)Client-side (SDK handles it)Client-side (SDK handles it)Server-sideServer-sideServer-sideServer-sidePlugin handles it
API key typePublic key onlyPublic key (page) + Secret key (server)Public key onlyPublic key onlySecret key onlySecret key onlySecret key onlySecret key onlyBoth (configured in settings)
CallbacksJavaScript functionsURL query parametersReact props / hooksDart async/awaitPromises / async-awaitReturn values / exceptionsReturn values / exceptionsEvents / exceptionsWooCommerce order lifecycle
Best forVanilla JS, jQuery sitesE-commerce carts, invoices, email paymentsReact / Next.js appsFlutter mobile appsNode.js / Express / NestJSWordPress, any PHP appDjango, FastAPI, Flask appsLaravel appsWooCommerce stores

Inline Checkout

Embed a payment modal directly on your website. The SDK handles session creation, payment method selection, and polling — all you need is a public API key.

html
<script src="https://js.zevpaycheckout.com/v1/inline.js"></script>
<script>
  var checkout = new ZevPay.ZevPayCheckout();
  checkout.checkout({
    apiKey: 'pk_test_your_public_key',
    email: 'customer@example.com',
    amount: 500000, // ₦5,000 in kobo
    onSuccess: function(reference) {
      alert('Payment complete! Ref: ' + reference);
    },
  });
</script>

Full inline SDK documentation →

React

React components and hooks wrapping the Inline SDK. Use <ZevPayButton> for a drop-in button or useZevPayCheckout() for full control.

tsx
import { ZevPayButton } from '@zevpay/react';

function CheckoutPage() {
  return (
    <ZevPayButton
      apiKey="pk_test_your_public_key"
      email="customer@example.com"
      amount={500000}
      onSuccess={(ref) => verifyPayment(ref)}
    >
      Pay ₦5,000
    </ZevPayButton>
  );
}

Full React SDK documentation →

Flutter

Accept payments in your Flutter mobile app. The SDK opens the standard checkout page in a WebView and returns the result via async/await.

dart
import 'package:zevpay_checkout/zevpay_checkout.dart';

final result = await ZevPayCheckout.open(
  context: context,
  options: CheckoutOptions(
    apiKey: 'pk_test_your_public_key',
    email: 'customer@example.com',
    amount: 500000, // ₦5,000 in kobo
  ),
);

if (result.isSuccess) {
  print('Paid! Reference: ${result.reference}');
}

Full Flutter SDK documentation →

Standard Checkout

Redirect customers to a hosted checkout page. Create a session on your server, then redirect the customer using the returned URL.

js
// Your server
const response = await fetch('https://api.zevpaycheckout.com/v1/checkout/session/initialize', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'x-api-key': 'sk_test_your_secret_key',
  },
  body: JSON.stringify({
    amount: 500000,
    currency: 'NGN',
    email: 'customer@example.com',
    callback_url: 'https://yoursite.com/payment/callback',
  }),
});

const { data } = await response.json();
// Redirect customer to: data.checkout_url

Full standard SDK documentation →

Node.js SDK

Full REST API coverage from your server. Handle checkout sessions, transfers, invoices, PayIDs, virtual accounts, and webhook verification — all with TypeScript support.

typescript
import ZevPay from '@zevpay/node';

const zevpay = new ZevPay('sk_test_your_secret_key');

// Initialize a checkout session
const session = await zevpay.checkout.initialize({
  amount: 500000, // ₦5,000 in kobo
  email: 'customer@example.com',
  reference: 'ORDER-123',
  callbackUrl: 'https://yoursite.com/callback',
});

// Send a bank transfer
const transfer = await zevpay.transfers.create({
  type: 'bank_transfer',
  amount: 1000000,
  accountNumber: '0123456789',
  bankCode: '044',
  accountName: 'John Doe',
  narration: 'Payout',
});

Full Node.js SDK documentation →

PHP SDK

Full REST API coverage for PHP applications. Works with Laravel, WordPress, and any PHP 8.1+ project.

php
use ZevPay\ZevPay;

$zevpay = new ZevPay('sk_test_your_secret_key');

$session = $zevpay->checkout->initialize([
    'amount' => 500000, // ₦5,000 in kobo
    'email' => 'customer@example.com',
    'reference' => 'ORDER-123',
    'callback_url' => 'https://yoursite.com/callback',
]);

echo $session['checkout_url'];

Full PHP SDK documentation →

Python SDK

Full REST API coverage for Python applications. Works with Django, FastAPI, Flask, and any Python 3.8+ project.

python
from zevpay import ZevPay

client = ZevPay("sk_test_your_secret_key")

session = client.checkout.initialize(
    amount=500000,  # ₦5,000 in kobo
    email="customer@example.com",
    reference="ORDER-123",
    callback_url="https://yoursite.com/callback",
)

print(session["checkout_url"])

Full Python SDK documentation →

Laravel

Laravel integration wrapping the PHP SDK. Provides a service provider, facade, webhook controller with signature verification middleware, and event dispatching for all webhook types.

php
use ZevPay\Laravel\Facades\ZevPay;

// Initialize a checkout session
$session = ZevPay::checkout()->initialize([
    'amount' => 500000, // ₦5,000 in kobo
    'email' => 'customer@example.com',
    'callback_url' => 'https://yoursite.com/callback',
]);

return redirect($session['checkout_url']);
  • FacadeZevPay::checkout(), ZevPay::transfers(), etc.
  • Webhooks — Auto-registered route with signature verification
  • EventsChargeSuccess, TransferSuccess, InvoicePaid, etc.
  • Artisanzevpay:verify-keys, zevpay:webhook-test

Full Laravel documentation →

WooCommerce

Accept ZevPay payments in your WooCommerce store. Supports inline modal and standard (redirect) checkout modes, configurable payment methods, and webhook verification.

php
// Automatic — just install, configure API keys, and choose your checkout mode.
// The plugin handles session creation, payment verification, and order updates.
  • Inline Mode — Modal overlay on your checkout page
  • Standard Mode — Redirect to ZevPay hosted checkout
  • Configure payment methods per store or use Dashboard settings
  • WooCommerce Blocks and HPOS compatible

Full WooCommerce plugin documentation →

Payment methods

Both SDKs support the same payment methods:

MethodKeyDescription
Bank TransferbankCustomer transfers to a virtual account
ZevPay IDpayidCustomer pays via ZevPay ID (P2P)
CardcardCard payment (coming soon)

Amount format

All amounts are in kobo (the smallest currency unit for NGN):

Naira amountKobo value
₦10010000
₦1,000100000
₦5,000500000
₦50,0005000000

WARNING

Minimum transaction amount is ₦100 (10,000 kobo).

ZevPay Checkout Developer Documentation