McTaba Labs logo
Software EngineeringThe WhiteboardProjectsEventsMasterclassesWebinarsLearn
Book Call

500+ developers already in the community

Get answers, find accountability partners, and stay ahead

Join Discord →
McTaba Labs logo

Educating 1 million students in tech by 2030.

Programs

  • HighSchool Graduates Launchpad
  • AI & Business Automation
  • Corporate Training
  • McTaba Story & Mission
  • Full-Stack Curriculum
  • Course Pricing & Plans
  • Frequently Asked Questions

Resources

  • Join Discord Community
  • Tech Events in Nairobi
  • Masterclasses
  • Free Resources
  • Learn
  • Campus
  • Africa Tech Talent Report
  • Partner With Us
  • Start a Project
  • Our Work

Contact Us

  • 124 Manyani East Road, Lavington, Nairobi
  • +254727795603
  • Book a Discovery Call

Office Hours:

Mon-Fri: 9am - 2pm EAT

Sat: 10am - 12pm EAT

© 2027 McTaba Labs - A product of Edtech Industries. All rights reserved.

Privacy PolicyTerms of ServiceRefund Policy
  1. Learn
  2. Paystack for African Developers
  3. Splitting Payments for SACCOs and Chamas
Bonaventure OgetoBy Bonaventure Ogeto|Updated July 22, 2026

Splitting Payments for SACCOs and Chamas

Create a Paystack subaccount for each fund (welfare fund, investment fund, operational expenses). When a member contributes, pass a Transaction Split that routes the contribution breakdown to each subaccount. Store each member's contribution in your database. For dividends or loan payouts, use Paystack bulk transfers to pay multiple members at once.

In this article

  1. 1. Member Contribution Split
  2. 2. Dividend Bulk Payout to Members
  3. 3. Learn More

Member Contribution Split

// Monthly contribution: NGN 5,000
// Savings fund: 3,000 (60%)
// Welfare fund: 1,000 (20%)
// Operational: 1,000 (20% stays in main account)

app.post('/api/contributions', async (req, res) => {
  var { memberId, email } = req.body;
  var group = await db.groups.findByMemberId(memberId);

  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,
      amount: 500000, // NGN 5,000 in kobo
      split_code: group.contribution_split_code, // Pre-created split group
      metadata: {
        member_id: memberId,
        group_id: group.id,
        contribution_month: new Date().toISOString().slice(0, 7),
      },
    }),
  });

  var data = await response.json();
  res.json({ authorization_url: data.data.authorization_url });
});
// On charge.success: record the contribution
if (event.event === 'charge.success') {
  var meta = event.data.metadata;
  if (meta?.member_id) {
    await db.contributions.create({
      member_id: meta.member_id,
      group_id: meta.group_id,
      month: meta.contribution_month,
      amount: event.data.amount / 100,
      reference: event.data.reference,
      status: 'paid',
    });
    // Update member's total savings balance
    await db.memberBalances.increment({ member_id: meta.member_id, amount: 3000 }); // Savings portion
  }
}

Dividend Bulk Payout to Members

// Quarterly dividend payout via bulk transfer
async function payDividends(groupId, dividendPerMember) {
  var members = await db.members.findAll({ where: { group_id: groupId, status: 'active' } });

  var transfers = members.map(member => ({
    amount: Math.round(dividendPerMember * 100),
    reference: 'div_' + groupId + '_' + member.id + '_' + Date.now(),
    reason: 'Q2 2026 dividend',
    recipient: member.paystack_recipient_code,
  }));

  var response = await fetch('https://api.paystack.co/transfer/bulk', {
    method: 'POST',
    headers: { Authorization: 'Bearer ' + process.env.PAYSTACK_SECRET_KEY, 'Content-Type': 'application/json' },
    body: JSON.stringify({ currency: 'NGN', source: 'balance', transfers }),
  });

  var data = await response.json();
  return data;
}

Get weekly developer tips

Join 25,000+ developers. Practical guides, job tips, and new content — straight to your inbox.

No spam. Unsubscribe anytime.

Learn More

This guide is part of the Paystack split payments guide.

Sign up for the McTaba newsletter

Key Takeaways

  • ✓Create subaccounts for each chama fund: welfare, savings/investment, and operational — each with its own bank account.
  • ✓Member contributions are split across funds using a Transaction Split group with flat kobo amounts.
  • ✓Track each member's contribution balance in your database for loan eligibility and dividend calculation.
  • ✓Use Paystack bulk transfers (POST /transfer/bulk) for dividend payouts to multiple members in one API call.
  • ✓Automate monthly contribution reminders — members often forget. Send SMS 3 days before contribution due date.
  • ✓Store member bank account details as Paystack transfer recipients for easy recurring payouts.

Frequently Asked Questions

Do SACCOs need regulatory approval to use Paystack?
In Kenya, SACCOs regulated by SASRA (SACCO Societies Regulatory Authority) may have requirements around digital payment systems. In Nigeria, cooperatives regulated by the Cooperatives Societies Law may need state government approval. Check with the relevant regulator before deploying a financial application for a regulated cooperative.
How do I track loan repayments for SACCO members using Paystack?
Create a separate transaction flow for loan repayments: a different API endpoint that routes to the loan fund subaccount and records the repayment in a loan_repayments table. Track outstanding loan balance per member. Do not mix contribution and loan repayment flows in the same transaction.
What is the cheapest way to run monthly chama payouts?
Use Paystack bulk transfers for dividend or merry-go-round payouts — they are more efficient than individual transfers. For monthly merry-go-round (one member receives the month's pot), send a single transfer to the selected member. Bulk transfers save API calls when paying multiple members.
Can members contribute via M-Pesa instead of card?
Paystack in Kenya supports M-Pesa as a payment channel. When initializing the contribution transaction, do not restrict payment channels — allow the Paystack checkout to show all supported methods including M-Pesa for Kenyan members. Nigerian members can use bank transfer or USSD.

Learn Paystack Integration

KES 2,999

The definitive guide to building payment systems with Paystack — from your first transaction to production-grade payment infrastructure across Africa. 9 modules, 47 lessons. Free preview available.

Start Paystack Course

Not ready? Create Free Account

Keep reading

Paystack Split Payments and Marketplaces: Complete Guide

Everything you need to split payments on Paystack: creating subaccounts, choosing between percentage and flat splits, multi-split transactions, fee configuration, delayed settlement, escrow-style patterns, and building real marketplace products with working Node.js code.

Read more

Percentage vs Flat Split Configuration on Paystack

A detailed comparison of percentage and flat split configurations on Paystack. Covers how each model works, worked margin calculations across different transaction sizes, when to use percentage vs flat, implementing per-transaction overrides, and building hybrid models that combine both approaches.

Read more

Escrow-Style Flows on Paystack and Their Limits

A thorough analysis of what escrow-style flows you can and cannot build on Paystack. Covers the difference between true escrow and delayed settlement, how to use manual settlement for hold-and-release patterns, the limits around hold duration and fund recovery, regulatory considerations in African markets, and when Paystack is not the right tool for escrow.

Read more

Building a Freelance Marketplace on Paystack

A freelance marketplace holds client funds until the work is approved, then releases to the freelancer. This guide covers implementing that hold-and-release pattern using Paystack delayed settlement, collecting platform commission via splits, and handling disputes and refunds.

Read more

Bulk Transfers with the Paystack API

Send money to dozens or hundreds of recipients in a single API call with Paystack bulk transfers. Covers batching strategies, balance pre-checks, tracking individual transfer outcomes within a batch, handling partial failures, and building a production payout pipeline for large vendor or payroll runs.

Read more

Explore related topics

M-Pesa & African Stack

M-Pesa Daraja API tutorials, USSD development, and WhatsApp Business API guides. The African Stack that global bootcamps do not teach.

Learn to Code in Kenya

Everything a Kenyan needs to know before writing their first line of code. Career paths, real costs, hardware requirements, and honest answers about what it takes.

Learning to Code

Roadmaps, language guides, and practical advice for learning to code and launching a programming career.

Breaking Into Tech

Practical, no-nonsense guides for anyone looking to start or change their career in tech. From choosing your first language to acing interviews.

The African Stack: Skills for This Market

The skills that make Kenyan developers hard to replace: M-Pesa, USSD, WhatsApp, fintech, and building for the African market.

Bonaventure Ogeto

Bonaventure Ogeto

Founder, McTaba Labs

Bonaventure is the founder of McTaba Labs, a coding bootcamp in Nairobi, Kenya. He has spent years building products for the African market and mentoring the next generation of developers across the continent.