Bonaventure OgetoBy Bonaventure Ogeto|

Paystack Payment Pages: When No-Code Beats Code

Paystack Payment Pages are hosted payment forms you create from the dashboard or API. Each page has a unique URL you share with customers. They support fixed or variable amounts, custom fields, and multiple payment channels. Use them when you need to collect payments quickly without building a checkout flow: event registrations, donations, product launches, or freelance invoicing.

What Payment Pages Are

A Paystack Payment Page is a hosted web page where customers can make payments. You create the page, specify what it is for, set the amount (or let the customer choose), and Paystack gives you a URL like https://paystack.com/pay/your-event. Share that URL anywhere: WhatsApp, email, social media, printed flyers. When someone clicks it, they see a payment form and can pay immediately.

Payment pages require zero code. You do not need a website, a server, or any technical setup. They are Paystack's fastest path from "I need to collect money" to "money is in my account."

Common uses:

  • Event registration: "Pay N5,000 to register for DevFest Lagos" with a link on the event poster
  • Donations: "Support our cause" with a flexible-amount page
  • Freelance invoicing: Send a client a payment page link instead of bank details
  • Product pre-orders: "Pre-order the new merch" before your e-commerce site is ready
  • Class or course fees: Collect tuition for workshops, bootcamps, or tutoring sessions
  • Quick product sales: Selling a few items without building a full store

Creating a Payment Page via Dashboard

The fastest way to create a payment page is through the Paystack dashboard:

  1. Log in to your Paystack dashboard
  2. Navigate to Payment Pages
  3. Click "Create New Page"
  4. Fill in the page name, description, and amount
  5. Optionally add custom fields (phone number, address, etc.)
  6. Set the page URL slug
  7. Publish the page

The dashboard gives you a shareable URL and optionally an embed code if you want to put the payment form on an existing website using an iframe.

Dashboard-created pages are great for non-technical team members. Your marketing team can create a payment page for an event without involving engineering.

Creating a Payment Page via API

For programmatic creation, use the Paystack Page API:

async function createPaymentPage(name, amount, description, slug) {
  var response = await fetch('https://api.paystack.co/page', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      name: name,
      amount: amount, // In kobo. Set to 0 for flexible amount.
      description: description,
      slug: slug, // Custom URL slug
      redirect_url: 'https://yoursite.com/thank-you',
      metadata: {
        custom_fields: [
          {
            display_name: 'Phone Number',
            variable_name: 'phone',
            required: true,
          },
          {
            display_name: 'Full Name',
            variable_name: 'full_name',
            required: true,
          },
        ],
      },
    }),
  });

  var data = await response.json();

  if (data.status) {
    return {
      slug: data.data.slug,
      url: 'https://paystack.com/pay/' + data.data.slug,
      id: data.data.id,
    };
  }

  throw new Error('Failed to create page: ' + data.message);
}

// Create a page for an event
var page = await createPaymentPage(
  'DevFest Lagos 2026 Registration',
  500000, // 5,000 NGN
  'Register for DevFest Lagos 2026. Includes lunch and a t-shirt.',
  'devfest-lagos-2026'
);
console.log('Page URL: ' + page.url);

The API is useful when you need to create pages dynamically: generating a payment page for each new workshop, product, or campaign without manual dashboard work.

Fixed vs Flexible Amounts

Fixed amount: Set a specific amount and every customer pays exactly that amount. Use for products, event tickets, or service fees with a defined price.

Flexible amount: Set the amount to 0 (or omit it in the dashboard) and the customer enters their own amount. Use for donations, tips, custom orders, or "pay what you want" models.

You can also set a minimum amount with flexible pricing to ensure the customer does not pay less than a threshold:

// Flexible amount with minimum
var response = await fetch('https://api.paystack.co/page', {
  method: 'POST',
  headers: {
    Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Support Our Cause',
    amount: 0,  // Flexible
    description: 'Make a donation. Minimum N1,000.',
    slug: 'support-our-cause',
  }),
});

With fixed amounts, the customer cannot change the price. This is the right choice when the price is non-negotiable.

Custom Fields on Payment Pages

Custom fields let you collect information beyond email and amount. The customer fills in additional fields on the payment page before paying.

Common custom fields:

  • Phone number: For sending receipts or event details via SMS
  • Full name: For personalized receipts or certificates
  • T-shirt size: For event merchandise
  • Company name: For B2B invoicing
  • Delivery address: For physical product sales

Custom field data appears in the transaction metadata. When you view the transaction on your dashboard or receive a webhook, the custom field values are in data.metadata.custom_fields.

You can mark fields as required or optional. Required fields must be filled before the customer can proceed to payment.

When to Switch to Code

Payment pages are great for getting started, but they have limitations. Switch to a code-based integration (Initialize Transaction with your own frontend and backend) when you need:

  • Automated fulfillment: Payment pages do not trigger your server code. If you need to automatically send a download link, activate an account, or generate a ticket after payment, you need a webhook handler connected to your own backend.
  • Inventory management: Payment pages do not track stock. If you are selling 50 t-shirts and 50 people pay, you need your own system to stop selling when inventory hits zero.
  • Dynamic pricing: If the price depends on options the customer selects (size, quantity, add-ons), you need custom code to calculate the total.
  • User accounts: If the payment needs to be linked to a user account on your platform, you need server-side logic to associate the transaction with the logged-in user.
  • Custom branding: Payment pages show Paystack's branding. If you need your own branded checkout experience, build a custom integration.
  • Multiple products in one cart: Payment pages are one product per page. For a shopping cart with multiple items, you need a custom checkout.

Many businesses start with payment pages, validate demand, and then build a custom integration when volume and requirements justify the development effort. This is a smart approach.

Tracking Payments from Pages

Even without code, you can track payments from payment pages in several ways:

  • Paystack dashboard: View all transactions under the Transactions tab. Filter by the payment page name to see payments for a specific page.
  • Email notifications: Paystack sends you an email for each successful payment. Configure this in your dashboard settings.
  • Transaction export: Export transactions to CSV for reconciliation in a spreadsheet.
  • Webhooks: If you have a server and want real-time notifications, configure a webhook URL. Payments from payment pages generate the same charge.success webhook as any other Paystack transaction.

For more on webhooks, see the complete webhook engineering guide. For transaction exports, see transaction export and reporting.

Stay Up to Date

Paystack updates payment page features periodically, including new custom field types and page management options.

Sign up for the McTaba newsletter to stay informed about Paystack features and integration guides.

Key Takeaways

  • Payment pages are hosted forms on paystack.com with unique URLs. No website, no server, no code needed.
  • Create pages from the Paystack dashboard for quick setup, or use the API for programmatic creation.
  • Pages support fixed amounts (everyone pays the same) or flexible amounts (customers enter their own amount).
  • Custom fields let you collect additional information (name, phone, address) alongside payment.
  • Payment pages handle all payment channels automatically: card, bank transfer, USSD, mobile money.
  • Switch to a code-based integration when you need server-side verification, inventory management, dynamic pricing, or automated fulfillment.

Frequently Asked Questions

Can I use a custom domain for my payment page?
Payment pages are hosted on paystack.com and use the paystack.com/pay/ URL format. You cannot use your own domain for the page. If you need a custom domain, build a checkout page on your own site using Initialize Transaction and link to it from your domain.
Can I limit the number of payments a page accepts?
The Paystack dashboard may offer an option to set a payment limit or deactivate a page after a certain number of payments. If not available in the dashboard, you would need to monitor payment count manually and deactivate the page when the limit is reached.
Do payment pages support recurring payments?
Payment pages are designed for one-time payments. For recurring billing, use Paystack subscriptions or build a custom integration with saved authorization codes.
Can I embed a payment page on my website?
Yes. Paystack provides an embed code (an iframe snippet) for each payment page. You can paste this code into your website HTML to display the payment form inline on your page.
What payment channels are available on payment pages?
Payment pages support all payment channels enabled on your Paystack account: card, bank transfer, USSD, mobile money, QR, and Apple Pay. You cannot restrict channels on a per-page basis through the dashboard.

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