Bonaventure OgetoBy Bonaventure Ogeto|

Portfolio Projects That Prove You Can Handle Money

5 portfolio projects: 1) E-commerce checkout with Paystack and idempotent webhook handler. 2) Subscription billing system with failed payment retry. 3) Marketplace with Paystack subaccount split payments and vendor payout dashboard. 4) M-Pesa + Paystack dual checkout with channel routing. 5) Bulk payout system with dual-approval workflow. Document each with security choices, test coverage, and architecture diagram.

Project 1: E-Commerce Checkout with Idempotent Webhook Handler

Build: A product listing page → Paystack checkout → order confirmation. Webhook handler that fulfills orders on charge.success with idempotency check (never fulfill twice for the same reference).

What it signals: You understand the full payment cycle, not just the frontend checkout. You handle duplicate webhook delivery. You write tests for the webhook logic.

Document: "Webhooks validated with HMAC-SHA512. References stored in DB before fulfillment — duplicate webhooks return 200 without re-fulfilling. Test coverage: 92% for webhook handler."

Project 2: Subscription Billing with Dunning

Build: Paystack Plans + subscriptions + invoice.payment_failed webhook handler. On failed payment: retry logic (3 attempts at 3-day intervals), email notification to subscriber, graceful account downgrade after exhausted retries.

What it signals: You understand subscription lifecycle, not just one-time payments. You handle the unhappy path. You think about business impact (when to cancel vs. retry).

Document: "Subscription state machine: active → past_due → cancelled. Retry logic: 3 attempts at T+0, T+3, T+6 days. Customer email on each failure. Failed payments logged with gateway_response for analysis."

Project 3: Marketplace with Subaccount Split Payments

Build: A two-sided marketplace (e.g., tutors and students). Vendor onboarding creates a Paystack subaccount. Student payment splits between platform and tutor at checkout. Vendor payout dashboard shows balance and transfer history.

What it signals: You understand multi-party payment flows, subaccount management, and split payment configuration. This is a senior-level portfolio project.

Project 4: M-Pesa + Paystack Dual Checkout (Kenya)

Build: A checkout page that detects the customer's location (or lets them choose) and shows M-Pesa STK push for Kenyan customers, Paystack card checkout for others. Both payment paths write to the same orders database and trigger the same fulfillment logic.

What it signals: You understand the African payment landscape, mobile money, and how to build for multiple payment providers without duplicating fulfillment logic.

Start Building

See building a payments portfolio for how to present these projects effectively.

Sign up for the McTaba newsletter

Key Takeaways

  • A basic checkout with idempotent webhook handling proves more than 10 API tutorial projects.
  • Include a subscription system with dunning — failure path handling is what hiring managers want to see.
  • A marketplace with split payments is the highest-signal portfolio project for senior roles.
  • M-Pesa + Paystack dual checkout shows East Africa market knowledge.
  • Document security decisions in your README — they reveal your understanding of payment risk.

Frequently Asked Questions

How do I deploy a portfolio payment project without spending money on a server?
Use free tiers: Vercel (Next.js frontend + API routes), Railway or Render (Node.js/Python backend, free tier), Neon or Supabase (PostgreSQL, free tier). Keep the Paystack integration in test mode — no real money moves. Ngrok or Cloudflare Tunnel for local webhook development if you need to test webhooks before deploying.
Should I include real payment data in my portfolio demo?
Never. Always use Paystack test mode. Test card 4084084084084081 (CVV 408, any future expiry) triggers a successful payment in test mode. Your portfolio demo should be completely functional using Paystack test keys. Hiring managers and clients can test the flow themselves without any real money.
What stack should I use for portfolio payment projects?
Use whatever you know best, but Node.js (Express or Next.js API routes) is the most common for Paystack integrations and easiest for reviewers to understand. Python (Django or FastAPI) is a good second choice. The stack matters less than demonstrating payment-specific skills: idempotency, webhook security, test coverage.

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