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. Delayed Settlement Patterns for Marketplaces
Bonaventure OgetoBy Bonaventure Ogeto|Updated July 22, 2026

Delayed Settlement Patterns for Marketplaces

Create vendor subaccounts with settle_interval: "manual" (requires Paystack support approval). Funds collected through split transactions accumulate in the subaccount without being settled. When the release condition is met (e.g., buyer confirms delivery), call POST /settlement or transfer from your held balance to the vendor. Track hold state in your database with release_at timestamps.

Hold Scheduler Database Pattern

CREATE TABLE payout_holds (
  id SERIAL PRIMARY KEY,
  vendor_id INTEGER NOT NULL,
  reference TEXT NOT NULL,
  amount NUMERIC(12, 2) NOT NULL,
  currency TEXT DEFAULT 'NGN',
  hold_reason TEXT,         -- 'delivery_pending' | 'dispute_window' | 'event_date'
  hold_until TIMESTAMPTZ NOT NULL,
  released_at TIMESTAMPTZ,
  status TEXT DEFAULT 'held', -- 'held' | 'released' | 'disputed' | 'refunded'
  created_at TIMESTAMPTZ DEFAULT NOW()
);

CREATE INDEX idx_holds_release ON payout_holds(status, hold_until);
// On charge.success, create a hold record
if (event.event === 'charge.success') {
  var holdUntil = new Date();
  holdUntil.setDate(holdUntil.getDate() + 7); // 7-day dispute window

  await db.payoutHolds.create({
    vendor_id: order.vendor_id,
    reference: event.data.reference,
    amount: event.data.amount / 100 * 0.9, // Vendor share (90%)
    hold_reason: 'dispute_window',
    hold_until: holdUntil,
    status: 'held',
  });
}

// Daily cron: release matured holds
async function releaseMatureHolds() {
  var now = new Date();
  var holds = await db.payoutHolds.findAll({
    where: { status: 'held', hold_until: { lte: now } }
  });

  for (var hold of holds) {
    var vendor = await db.vendors.findById(hold.vendor_id);
    await initiateTransfer(vendor.recipient_code, hold.amount, hold.currency);
    await db.payoutHolds.update(
      { status: 'released', released_at: now },
      { where: { id: hold.id } }
    );
  }
}

Learn More

This guide is part of the Paystack split payments guide.

Sign up for the McTaba newsletter

Key Takeaways

  • ✓Paystack manual settlement holds subaccount funds until you trigger release — enabling hold-and-release patterns.
  • ✓Contact Paystack support to enable manual settlement (settle_interval: "manual") on your account.
  • ✓Build a release_scheduler table: store the split transaction reference, hold_until date, and trigger condition.
  • ✓Run a cron job daily to check for matured holds and trigger payouts for eligible records.
  • ✓Build a dispute window (e.g., 7 days) — if no dispute is raised by the buyer, auto-release on day 8.
  • ✓Communicate hold periods clearly to vendors during onboarding — unexpected holds cause support escalations.

Frequently Asked Questions

Do I need Paystack approval for manual settlement?
Yes. Manual settlement (settle_interval: "manual") is not available by default. Contact Paystack support or your account manager to enable it. Without this, you can simulate delayed settlement by routing funds to your platform account first and manually initiating transfers when conditions are met.
What is the maximum hold period Paystack allows?
Paystack does not publish a fixed maximum hold period for manual settlement. Keep holds reasonable (7-30 days for most use cases). Extremely long holds (months) may attract compliance review. Build your hold logic in your database so you can release at any time regardless of Paystack limits.
How do I handle a hold when a buyer raises a dispute?
Update the payout_hold record to status: "disputed". Pause the auto-release cron for that hold. After dispute resolution — either refund the buyer (refunded) or rule in the vendor's favour (release) — update the record and take the appropriate action.
Can I offer instant payouts as a premium feature for vendors?
Yes. Build a vendor setting: instant_payout: true. When this is enabled and a charge comes in, skip the hold and immediately transfer to the vendor. Charge a higher platform fee for instant payouts to compensate for the dispute risk you absorb.

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 an Events Ticketing Platform with Splits

An events ticketing platform collects ticket revenue and routes it to event organizers after the event. This guide covers using Paystack splits to route organizer revenue and platform booking fees, handling multi-ticket types, and managing pre-event holds and post-event payouts.

Read more

Payout Approval Workflows and Maker-Checker Controls

When OTP is disabled for automated transfers, you need your own approval controls. This guide covers maker-checker workflows where one person creates and another approves, threshold-based auto-approval for small payouts, multi-level approval chains for large amounts, building an audit trail, and role-based access for payout operations.

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.