npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@dev_apus/paystack-ts

v1.0.3

Published

A lightweight and strongly-typed TypeScript SDK for integrating Paystack’s payment APIs on the server. This package provides simple, type-safe methods to handle transactions, customers, refunds, transfers, and webhooks making it faster and easier to buil

Downloads

15

Readme

Paystack API Integration Module

This project provides TypeScript modules for integrating with Paystack APIs, including Subscriptions, Charges, Transfer Recipients, Direct Debit, Virtual Terminals, and Customers. The modules use Axios for HTTP requests and are strongly typed for safer and cleaner code.


Table of Contents

  1. Installation
  2. Usage
  3. Type Definitions
  4. Utilities and Helpers
  5. References

Installation

Install via npm:

npm install axios

Or if you are publishing your own module:

npm publish --access public

Note: Make sure your npm scope exists before publishing to avoid scope not found errors.


Usage

Customers

Create Customer

import { CreateCustomerRequest, CreatedCustomerType } from './customer';
import axios from 'axios';

const client = axios.create({
  baseURL: 'https://api.paystack.co',
  headers: {
    Authorization: 'Bearer YOUR_SECRET_KEY',
    'Content-Type': 'application/json',
  },
});

const createCustomer = async (customer: CreateCustomerRequest) => {
  const response = await client.post<CreatedCustomerType>('/customer', customer);
  return response.data;
};

Fetch Customer

import { CreatedCustomerType } from './customer';

const fetchCustomer = async (customerId: string) => {
  const response = await client.get<CreatedCustomerType>(`/customer/${customerId}`);
  return response.data;
};

Subscriptions

import { CreateSubscriptionRequest, SubscriptionResponse } from './subscription';

const createSubscription = async (subscription: CreateSubscriptionRequest) => {
  const response = await client.post<SubscriptionResponse>('/subscription', subscription);
  return response.data;
};

Charges

import { CreateChargeRequest, ChargeResponse } from './charges';

const createCharge = async (charge: CreateChargeRequest) => {
  const response = await client.post<ChargeResponse>('/charge', charge);
  return response.data;
};

Transfer Recipients

import { CreateTransferRecipientRequest, TransferRecipientResponse } from './transferRecipient';

const createRecipient = async (recipient: CreateTransferRecipientRequest) => {
  const response = await client.post<TransferRecipientResponse>('/transferrecipient', recipient);
  return response.data;
};

Virtual Terminals

import { CreateVirtualTerminalRequest, CreateVirtualTerminalResponse } from './virtualTerminal';

const createVirtualTerminal = async (terminal: CreateVirtualTerminalRequest) => {
  const response = await client.post<CreateVirtualTerminalResponse>('/virtual-terminal', terminal);
  return response.data;
};

Type Definitions

All modules provide strong typing for requests and responses.

Example: customer.ts

export interface CreateCustomerRequest<T = any> {
  email: string;
  first_name: string;
  last_name: string;
  phone?: string;
  metadata?: T;
}

export interface CreatedCustomerType {
  email: string;
  integration: number;
  first_name: string;
  last_name: string;
  customer_code: string;
  phone: string;
  metadata?: Record<string, any>;
}

export interface PaystackResponse<T = any, Z = any> {
  status: boolean;
  message: string;
  data?: T;
  meta?: Z;
}

Utilities and Helpers

  • Use AxiosInstance for HTTP requests.
  • Centralized constants and helper functions can be added in /utils folder.
  • All functions use arrow function syntax and are documented with JSDoc.

Example:

/**
 * @description Formats amount to Paystack subunit
 * @param amount - amount in Naira
 * @returns amount in kobo
 * @example
 * formatAmount(500) // returns 50000
 */
export const formatAmount = (amount: number) => amount * 100;

References


All modules follow consistent patterns for request and response typing, arrow function usage, and JSDoc documentation for clear integration and maintenance.