Personal Pension Integration
In Minutes.

Test the PenPay SDK integration. Click the button below to launch the secure verification flow and process your pension payments seamlessly.

Secure 256-bit Encryption
Secure 256-bit Encryption

Secure Verification

Direct integration with PFA providers ensures the highest security standards for RSA PIN validation.

Fast Processing

Optimized flow reduces payment time from minutes to seconds for your customers.

Easy Setup

Simple JavaScript SDK that works with any framework or even plain HTML/CSS.

Get Your API Key

1

Create an Account

Visit www.penpay.com.ng or demo.penpay.com.ng and sign up for an account. Complete your profile verification.

2

Go to Settings

Once logged in, check the left sidebar for the Settings option and select Settings from the menu.

Screenshot 1
Settings
3

Generate API Key

In the Settings page, navigate to the API Keys tab. Click the Generate New Key button, provide a name for your key, and copy the generated key immediately (it won't be shown again).

Screenshot 2
Settings
4

Switch to Test Mode

Toggle your account to Test Mode in Settings to use sandbox keys for development. When ready, switch to Live Mode and generate a new key for production.

Integration Steps

1

Option A: Simple Script Tag

Add the SDK to your HTML using a standard script tag. This exposes PenPaySDK on the global window object.

HTML
<!-- Include the SDK -->
<script src="https://sdk.penpay.com.ng/sdk/index.js" type="module"></script>

<!-- Initialize anywhere -->
<script>
  const initializePayment = async () => {
    await window.PenPaySDK.open({
      apiKey: "YOUR_API_KEY",
      webhookUrl: "https://www.penpay.com/success",
      pfaIntegration:true,
      rsaPin:"PEN1234567890",
      fullName:"John Paul",
      referenceNo:"1234567890",
      amount:1000,
      phoneNumber:"08012345678",
      dev:true // optional
    });
  };

  const registerRsaPin = async () => {
    await window.PenPaySDK.open({
      apiKey: "YOUR_API_KEY",
      webhookUrl: "https://www.penpay.com/success",
      pfaIntegration:false,
      dev:true // optional
    });
  };
</script>
2

Option B: Module Import

Import the SDK directly in your JavaScript modules. This is the recommended approach for modern frameworks like React or Vue.

JavaScript
import { open } from "https://sdk.penpay.com.ng/sdk/index.js";
// PFAS PPP Payment Integration
const initializePayment = async () => {
  try {
    await open({
      apiKey: "YOUR_API_KEY",
      webhookUrl: "https://www.penpay.com/success",
      pfaIntegration:true,
      rsaPin:"PEN1234567890",
      fullName:"John Paul",
      referenceNo:"1234567890",
      amount:1000,
      phoneNumber:"08012345678",
      dev:true // optional
    });
  } catch (err) {
    console.error("PenPay SDK failed:", err);
  }

  // RSA PIN registration
  const registerRsaPin = async () => {
   try {
          await window.PenPaySDK.open({
            webhookUrl: "https://www.penpay.com/success",
            apiKey:"TEST-ce446831c0675994aa7db8c81573020ee2aa8ee9e797aa6b9d",
            dev:true,
            pfaIntegration:false,
            theme: themeSelect.value,
          });
        } catch (err) {
          console.error("SDK failed to open:", err);
        }
      }
};
3

Trigger the Flow

Call your initialization function from a user action, like a button click.

HTML
<button onclick="initializePayment()">Pay with Pension</button>
<button onclick="registerRsaPin()">RSA Registration</button>
4

Webhook URL / Response

Set the webhook URL to receive transaction notifications.

JSON Response
                
{
  amount: number;
  ref: string;
  status: string;
  createdAt: string;
  phoneNumber: string;
  paymentChannel: string;
  providerName: string;
  fullName: string;
  rsaNumber: string;
}