@papakweku/payment-sdk
v1.0.0
Published
Paystack payment SDK with commission splits, subaccounts, and webhook verification
Maintainers
Readme
@papakweku/payment-sdk
Paystack wrapper for marketplace payments: subaccounts, transaction initialization with commission splits, verification, and webhook signature checks.
Install
npm install @papakweku/payment-sdkQuick start
const { createPaymentSDK } = require('@papakweku/payment-sdk');
const sdk = createPaymentSDK({
secretKey: process.env.PAYSTACK_SECRET_KEY,
commissionRate: 0.04, // 4% platform fee (optional, default 0.04)
});
// Create merchant subaccount
const subaccount = await sdk.createSubaccount({
businessName: 'My Store',
settlementBank: '040100', // GCB Ghana
accountNumber: '1011102865027',
primaryContactEmail: '[email protected]',
primaryContactName: 'Merchant Name',
primaryContactPhone: '+233595802299',
});
// Initialize payment (amount in smallest unit: pesewas/kobo)
const payment = await sdk.initializeTransaction({
email: '[email protected]',
amount: 1000, // GHS 10.00
subaccountCode: subaccount.data.subaccount_code,
reference: 'txn_unique_ref_123',
callbackUrl: 'https://yourapp.com/callback',
});
console.log(payment.data.authorization_url);
// Verify after payment
const verified = await sdk.verifyTransaction('txn_unique_ref_123');
// Verify webhook (use raw request body string)
const isValid = sdk.verifyWebhook(rawBody, req.headers['x-paystack-signature']);API
createPaymentSDK(config)
| Option | Type | Default | Description |
|--------|------|---------|-------------|
| secretKey | string | required | Paystack secret key |
| commissionRate | number | 0.04 | Platform commission (0–1) |
sdk.createSubaccount(options)
Creates a Paystack subaccount for split settlements.
sdk.initializeTransaction(options)
Initializes a Paystack checkout. Applies commission via transaction_charge when subaccountCode is provided.
Returns Paystack response plus split object:
{
"totalAmount": 1000,
"commission": 40,
"merchantShare": 960,
"commissionRate": 0.04,
"merchantSharePercent": 96,
"platformSharePercent": 4
}sdk.verifyTransaction(reference)
Verifies payment status with Paystack.
sdk.verifyWebhook(payload, signature)
Validates x-paystack-signature using HMAC SHA-512.
sdk.calculateCommission(amount)
Calculates split without calling Paystack.
Publish to npm
- Create an npm account at npmjs.com
- Create an org or use your username scope if needed
- Update
name,repository, andhomepageinpackage.json - Login and publish:
cd packages/payment-sdk
npm login
npm test
npm publish --access public- In your backend, replace the local link:
"@papakweku/payment-sdk": "^1.0.0"License
MIT
