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 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
Create an Account
Visit www.penpay.com.ng or demo.penpay.com.ng and sign up for an account. Complete your profile verification.
Go to Settings
Once logged in, check the left sidebar for the Settings option and select Settings from the menu.
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).
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
Option A: Simple Script Tag
Add the SDK to your HTML using a standard script tag. This exposes PenPaySDK on the global window object.
<!-- 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>
Option B: Module Import
Import the SDK directly in your JavaScript modules. This is the recommended approach for modern frameworks like React or Vue.
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);
}
}
};
Trigger the Flow
Call your initialization function from a user action, like a button click.
<button onclick="initializePayment()">Pay with Pension</button>
<button onclick="registerRsaPin()">RSA Registration</button>
Webhook URL / Response
Set the webhook URL to receive transaction notifications.
{
amount: number;
ref: string;
status: string;
createdAt: string;
phoneNumber: string;
paymentChannel: string;
providerName: string;
fullName: string;
rsaNumber: string;
}