Skip to content

CLI

The ZevPay CLI lets you manage payments, test webhooks, and verify transactions from your terminal.

Installation

bash
npm install -g @zevpay/cli

Or use without installing:

bash
npx @zevpay/cli <command>

Requires Node.js 18+.

Authentication

bash
zevpay login sk_test_your_secret_key

The key is stored locally. You can also use the ZEVPAY_SECRET_KEY environment variable.

bash
export ZEVPAY_SECRET_KEY=sk_test_your_secret_key

Commands

verify

Verify a checkout session and display its status.

bash
zevpay verify ses_abc123
  Checkout Session

  Session ID       ses_abc123
  Reference        REF-001
  Status           completed
  Amount           ₦5,000.00
  Currency         NGN
  Email            customer@example.com
  Payment Method   bank_transfer
  Paid At          3/11/2026, 2:30:00 PM

Add --json for raw JSON output:

bash
zevpay verify ses_abc123 --json

banks

List supported banks.

bash
zevpay banks                  # List all
zevpay banks --search access  # Filter by name
zevpay banks --json           # Raw JSON

resolve

Resolve a bank account (name enquiry).

bash
zevpay resolve 0123456789 044
  Account Details

  Account Name     John Doe
  Account Number   0123456789
  Bank Code        044

balance

Show your wallet balance.

bash
zevpay balance
  Wallet Balance (test mode)

  ₦50,000.00 NGN

Webhook testing

The CLI provides two commands for testing webhooks locally — similar to the Stripe CLI workflow.

listen

Start a local HTTP server that receives webhook events. Configure this URL as your webhook endpoint in the ZevPay Dashboard.

First, save your webhook secret:

bash
zevpay webhook-secret whsec_your_secret

Then start listening:

bash
zevpay listen                              # Listen on port 4242
zevpay listen -p 8080                      # Custom port
zevpay listen -f http://localhost:3000/api/webhooks  # Forward to your app

Output:

  ZevPay Webhook Listener

  Endpoint  http://localhost:4242/
  Forward   http://localhost:3000/api/webhooks
  Status    Ready — waiting for events

  ->  3/11/2026, 2:30:00 PM  charge.success  [sig verified]
      ref=TEST-A1B2C3D4  amount=500000  status=completed
      forwarded -> 200 OK

The listener verifies the x-zevpay-signature header and optionally forwards events to your application.

trigger

Send a test webhook event with a valid signature to your listener or application.

bash
zevpay trigger charge.success                              # To localhost:4242
zevpay trigger transfer.success -u http://localhost:3000/webhooks

Available event types:

EventDescription
charge.successSuccessful payment
transfer.successSuccessful transfer
transfer.failedFailed transfer
transfer.reversedReversed transfer
invoice.createdInvoice created
invoice.paidInvoice paid

Typical webhook testing workflow

bash
# Terminal 1: Start your app
npm run dev

# Terminal 2: Start the webhook listener, forwarding to your app
zevpay listen -f http://localhost:3000/api/webhooks

# Terminal 3: Trigger test events
zevpay trigger charge.success
zevpay trigger transfer.failed

Environment variables

VariableDescription
ZEVPAY_SECRET_KEYAPI secret key (alternative to zevpay login)
ZEVPAY_WEBHOOK_SECRETWebhook signing secret (alternative to zevpay webhook-secret)

Resources

ZevPay Checkout Developer Documentation