Bonaventure OgetoBy Bonaventure Ogeto|

Building a Local Checkout Experience for Nigeria

For a Nigeria-optimised Paystack checkout: (1) enable all payment channels — card, bank transfer, USSD, QR; (2) show bank transfer prominently for customers who use GTBank, First Bank, or Access Bank (they prefer bank transfer for amounts above NGN 50,000); (3) amounts are in kobo — multiply by 100 before passing to Paystack; (4) set currency to NGN explicitly; (5) include the customer phone number so Paystack can enable USSD payment without the customer typing it.

Nigeria-Optimised Checkout Configuration

// Nigeria-optimised transaction initialization
var response = await fetch('https://api.paystack.co/transaction/initialize', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: customer.email,
    phone: customer.phone, // Enables USSD pre-fill
    amount: Math.round(orderAmount * 100), // Convert NGN to kobo
    currency: 'NGN', // Explicit — good practice
    reference: generateReference(),
    channels: ['card', 'bank', 'ussd', 'bank_transfer', 'qr'], // All channels
    metadata: {
      order_id: order.id,
      custom_fields: [
        { display_name: 'Order ID', variable_name: 'order_id', value: order.id.toString() },
      ],
    },
    callback_url: 'https://yourapp.com/payment/callback',
  }),
});

Channel notes for Nigeria:

  • card — Visa, Mastercard, Verve
  • bank — direct bank debit (for supported banks)
  • bank_transfer — generates a one-time bank account for bank transfer payment
  • ussd — dial *737# or *919# style codes on any phone
  • qr — PayAttitude QR code for scan-to-pay

Localisation Tips for Nigerian Users

  • Currency display: Always show amounts as "NGN 10,000" or "₦10,000" — Nigerian users are familiar with both formats. Avoid "10000.00" without a currency symbol.
  • Error messages: "Do Not Honor" from Nigerian banks often means the card is not enabled for online transactions, not that it is blocked. Map it to: "Your card may not be enabled for online payments. Check your bank app settings or contact your bank."
  • Naira Day: Some banks have daily NGN limits on online transactions (e.g., NGN 100,000/day). If a customer's payment fails after trying a large amount, suggest they split the payment or contact their bank to increase their daily limit.
  • Phone numbers: Nigerian numbers are 11 digits starting with 0 (e.g., 08012345678). Pass them to Paystack in international format (+2348012345678) for USSD support.

Learn More

Key Takeaways

  • Nigeria is Paystack's home market — card, bank transfer, USSD, and QR are all supported natively.
  • Bank transfer is popular for amounts above NGN 50,000 — make sure it is prominently available in your checkout.
  • USSD supports feature phone users: include channels: ["card", "bank", "ussd", "bank_transfer"] in your initialize call.
  • NGN amounts go to Paystack in kobo (1 NGN = 100 kobo) — multiply by 100 before sending.
  • Including the customer phone number in the initialize call enables USSD payment pre-filling.
  • PayAttitude (QR-based) is growing in Nigeria for in-person and online — include "qr" in your channels array.

Frequently Asked Questions

Which payment method do Nigerian customers use most?
Card payment (Verve, Visa, Mastercard) is the most common for small to medium amounts. Bank transfer is widely used for larger amounts (above NGN 50,000) because it avoids card transaction limits. USSD is growing for users with feature phones or limited internet access.
Why does my Paystack checkout show USD instead of NGN?
You are either not passing currency: "NGN" in your initialize call, or your Paystack account is not configured for NGN. Go to Settings → Business information in your Paystack dashboard and verify your country is set to Nigeria. Also pass currency: "NGN" explicitly in every transaction initialize call.
What is the maximum single transaction limit on Paystack in Nigeria?
Paystack does not impose a single hard limit, but individual banks may limit online transactions. Common limits: NGN 100,000/day for Verve cards, NGN 1,000,000/day for some bank transfer channels. If customers are hitting limits, suggest bank transfer for large amounts or provide a multi-payment option.
How do I enable Verve cards on Paystack in Nigeria?
Verve cards are supported by default on Paystack for Nigerian accounts. Make sure "card" is included in your channels array. Verve cards typically require a PIN during checkout — the Paystack popup handles this automatically.

Ready to build real-world apps?

Join the McTaba Labs full-stack marathon (4 months full-time · 6 months part-time). Learn M-Pesa, USSD, and WhatsApp engineering while shipping 8 production apps.

Apply to the McTaba Marathon