Migrate from Paystack

Concept and API mapping from Paystack to Watenga's PayFac model — sub-merchants live inside Watenga's ledger with per-transaction statement descriptors.

Not legal advice

This documentation summarizes Watenga's integration and compliance posture for developers and merchants. It does not constitute legal, tax, or regulatory advice. Canonical policies live in our security documentation repository. Consult qualified counsel for jurisdiction-specific obligations.

Before you switch

  • Export recent Paystack settlement reports for reconciliation.
  • List active webhooks and map event types using the table below.
  • Replace sk_live_ Paystack keys with Watenga sk_live_ secret keys.
  • Embed Watenga.js instead of Paystack inline or popup flows.

Concept mapping

PaystackWatenga
TransactionCheckout session → ledger transaction
SubaccountSub-merchant in Watenga PayFac ledger
Transfer recipientVerified bank account (TOTP to add)
TransferPayout from Watenga balance
Dedicated NUBANNot used — aggregate PayFac settlement
SplitTransaction splits

API mapping

PaystackWatengaNotes
POST /transaction/initializePOST /v1/checkout/createReturns checkoutId + widget config
GET /transaction/verify/:referenceGET /v1/checkout/:id/status
GET /transaction/:idGET /v1/transactions/:id
GET /transactionGET /v1/transactions
POST /refundPOST /v1/transactions/:id/refund
POST /transferPOST /v1/payouts/request
GET /transferGET /v1/payouts
POST /transferrecipientPOST /v1/merchant/bank-accounts
POST /subaccountPOST /v1/merchant/subaccountsSubaccounts; PayFac ledger, no per-merchant gateway ID
POST /customerPOST /v1/merchant/customers
GET /customer/:idGET /v1/merchant/customers/:id
POST /chargeWatenga.js + COPY&PAYNo direct charge API on merchant server
POST /charge_authorizationNot supported v1Use checkout per payment
POST /planPOST /v1/subscriptions/subscription-plans
POST /subscriptionPOST /v1/subscriptions
POST /paymentrequestPOST /v1/payment-links
GET /balanceGET /v1/account/balance
GET /settlementDashboard reports / exports
POST /bulkchargeBatch via payment links or API loop
POST /dedicated_accountNot applicableWatenga uses unified PayFac settlement
POST /splitPOST /v1/merchant/splitsTransaction splits
GET /bankGET /v1/meta/markets/:iso2/banks
POST /decision/binFraud rules (platform)Contact support for enterprise rules

Webhooks

Paystack signs with HMAC-SHA512; Watenga uses HMAC-SHA256. Update verification logic and event handlers. Full event catalogue: Webhook reference.

Paystack eventWatenga event
charge.successpayment.capture.completed
charge.failedpayment.capture.declined
transfer.successpayment.payout-item.succeeded
transfer.failedpayment.payout-item.failed
transfer.reversedpayment.payout-item.returned
refund.processedpayment.refund.completed
refund.failedpayment.refund.failed
subscription.createbilling.subscription.created
subscription.disablebilling.subscription.cancelled
invoice.createinvoicing.invoice.created
invoice.payment_failedbilling.invoice.payment-failed
customeridentification.successNo equivalent event (customer identity)

Example handler

javascript
// Watenga — verify signature first, then switch on event.type
const event = verifyWatengaWebhook(req.rawBody, req.headers['watenga-signature']);

switch (event.type) {
  case 'payment.capture.completed':
    await fulfillOrder(event.data.object);
    break;
  case 'payment.refund.completed':
    await markRefunded(event.data.object);
    break;
}

API keys

  • Paystack public key → Watenga publishable key (pk_test_ / pk_live_)
  • Paystack secret key → Watenga secret key (sk_test_ / sk_live_)
  • Create keys in the Developer Dashboard per API app.

Test checklist

  1. Create checkout with sk_test_ and complete a sandbox card payment.
  2. Confirm payment.capture.completed webhook delivery.
  3. Issue a partial refund and verify balance + webhook.
  4. Request a test payout to a verified bank account (sandbox limits apply).

Go live

  • Complete market compliance and KYC (dashboard compliance wizard).
  • Set statement descriptor suffix (max 14 chars, A–Z 0–9 space dot dash).
  • Rotate to sk_live_ and enable live webhooks only on HTTPS endpoints.

Subaccounts

Paystack subaccounts map to Watenga sub-merchants. NMB and card networks see Watenga aggregate volume; Visa statement descriptors show WATENGA*YOUR_SUFFIX per transaction.