Bonaventure OgetoBy Bonaventure Ogeto|

Paystack Kenya Settlement: To Bank or M-Pesa Wallet

Paystack settles funds to Kenyan merchants via bank account or M-Pesa wallet. Bank settlement is the default, configured during onboarding with your bank name and account number. M-Pesa settlement sends funds directly to your registered M-Pesa number. Settlement timelines vary by account type and payment method. Fees are deducted before settlement, so you receive the net amount.

What Settlement Actually Means

When a customer pays you through Paystack, the money does not go directly into your bank account or M-Pesa wallet. It goes into Paystack's collection account first. Paystack holds the funds, deducts its fees, and then sends the remainder to you on a schedule. That "sending" step is settlement.

This is important to understand because there is a gap between "customer paid" and "you have the money." A customer paying you KES 5,000 at 3 PM on Wednesday does not mean you have KES 5,000 in your bank by 3:01 PM. Depending on your settlement schedule, you might see that money the next day, or a few days later.

For developers, settlement matters for three reasons:

  1. Cash flow planning. Your finance team needs to know when money will arrive. If you are paying suppliers, staff, or operational costs from your Paystack revenue, the settlement schedule determines when those funds are available.
  2. Reconciliation. The amount that arrives in your bank does not match the sum of your transactions. It matches the sum minus fees. Your bookkeeping needs to account for this difference.
  3. Customer support. When a customer says "I paid but you say I haven't," you need to know whether the payment is confirmed on Paystack's side (check the transaction status) versus whether it has settled to your bank (check the settlement report). These are two different things.

Settlement is not the same as Paystack Transfers. Settlement is automatic: Paystack sends your accumulated balance to you on a schedule. Transfers are manual: you explicitly send money from your Paystack balance to a recipient using the Transfers API. You can do both, but they serve different purposes.

Bank Account Settlement

Bank account settlement is the default for Kenyan Paystack merchants. During onboarding, you provide your bank name, branch, and account number. Paystack settles your accumulated balance to that account on your settlement schedule.

How to configure it:

  1. Log into your Paystack dashboard at dashboard.paystack.com.
  2. Go to Settings and then Settlement (or Bank Account, depending on the dashboard version).
  3. Enter your bank name, branch (if required), and account number.
  4. Paystack may ask you to verify the account. This is a one-time process.

Which banks work: Paystack supports settlement to all major Kenyan banks. KCB, Equity, Co-operative, NCBA, Absa, Standard Chartered, DTB, Family Bank, and others. The full list is available in the settlement configuration section of your dashboard. If your bank is not listed, contact Paystack support.

Settlement timing: Bank settlements process on business days. The exact schedule depends on your account tier and your agreement with Paystack. [TODO: verify current settlement schedules on Paystack dashboard or support documentation]

Some practical things to know:

  • Settlements that fall on weekends or public holidays roll over to the next business day.
  • The settlement hits your bank account as a credit from Paystack. Your bank statement will show the payer as Paystack or a related entity name.
  • If your bank account is dormant, closed, or has restrictions, the settlement will fail. Paystack will retry, but you need to fix the account issue. Check your dashboard for failed settlement alerts.
  • Changing your bank account details in the dashboard may require re-verification. This is a security measure to prevent unauthorized changes.

M-Pesa Wallet Settlement

Some Kenyan merchants can receive settlement directly to their M-Pesa wallet. This sends your accumulated balance to the M-Pesa phone number registered on your Paystack account.

How to configure it:

  1. In your Paystack dashboard, go to Settings and then Settlement.
  2. Select M-Pesa as the settlement destination (if available for your account type).
  3. Enter the M-Pesa phone number where you want to receive settlements.
  4. Paystack may verify the number before activating M-Pesa settlement.

When M-Pesa settlement makes sense:

  • Small businesses without a business bank account. A sole trader running an online store might not have a dedicated business bank account. M-Pesa settlement puts the money where they can access it immediately.
  • Businesses that need fast access to funds. M-Pesa settlement can be faster than bank settlement in some cases, because there is no interbank processing delay. [TODO: verify whether M-Pesa settlement is same-day or follows the same schedule as bank settlement]
  • Operators in areas with limited banking infrastructure. In some parts of Kenya, accessing a bank branch is inconvenient. M-Pesa is everywhere.

Limitations to know:

  • M-Pesa wallet limits apply. Safaricom sets daily and per-transaction limits on M-Pesa wallets. If your settlement amount exceeds these limits, the settlement may fail or be split across multiple days. These limits depend on your M-Pesa account tier (registered vs unregistered vs fully verified).
  • Not suitable for high-volume merchants. If you are processing hundreds of thousands of shillings daily, the M-Pesa wallet limits will create bottlenecks. Bank settlement is the better option for higher volumes.
  • Tax and accounting implications. Receiving business revenue into a personal M-Pesa wallet can complicate your tax reporting. Your accountant needs to know about this arrangement. KRA may ask for M-Pesa statements during audits.

Net Settlement: Understanding What You Actually Receive

Paystack settlement is net of fees. This is the single most important thing to understand about settlement, and the thing most likely to confuse your finance team.

Here is what happens:

  1. A customer pays you KES 1,000.
  2. Paystack deducts its transaction fee (the percentage plus any flat fee).
  3. The remaining amount goes into your settlement pool.
  4. At the next settlement cycle, Paystack sends the pool total to your bank or M-Pesa.

The amount that arrives in your bank is not the sum of your transactions. It is the sum of your transactions minus fees. If you processed KES 100,000 in transactions today and Paystack's total fees on those transactions were KES 3,500, your settlement will be KES 96,500.

For your reconciliation logic:

// What NOT to do: match the settlement amount to the transaction total
// This will always be off by the fee amount

// What to do: track gross, fees, and net separately
const transactions = await getTransactionsForSettlementPeriod(startDate, endDate);

let grossTotal = 0;
let feesTotal = 0;

for (const txn of transactions) {
  grossTotal += txn.amount;       // What the customer paid (in kobo/cents)
  feesTotal += txn.fees;          // What Paystack charged (in kobo/cents)
}

const expectedNetSettlement = grossTotal - feesTotal;

// Compare expectedNetSettlement to what actually arrived in your bank
// They should match. If they don't, investigate.
console.log('Gross:', grossTotal / 100);
console.log('Fees:', feesTotal / 100);
console.log('Expected net:', expectedNetSettlement / 100);

The Paystack API returns the fee for each transaction in the transaction object (data.fees). Use this to calculate expected settlement amounts. The Paystack dashboard also provides settlement reports that break down each settlement batch by transaction, showing the gross, fees, and net for each one.

For comprehensive reconciliation patterns, see Reconciling M-Pesa Payments Received Through Paystack.

Settlement Timelines

The question every merchant asks: "When will I get my money?"

The honest answer is that it depends. Paystack's settlement timelines for Kenya are determined by several factors:

  • Account tier. New accounts may have longer settlement cycles as a risk management measure. As you build transaction history and trust with Paystack, settlement cycles can shorten.
  • Payment method. Card payments and M-Pesa payments may have different settlement timelines. [TODO: verify whether Paystack uses different timelines for different payment methods in Kenya]
  • Negotiated terms. High-volume merchants can negotiate custom settlement schedules with Paystack.

What to expect:

Check your Paystack dashboard for your specific settlement schedule. The dashboard shows your next expected settlement date and the transactions included in that settlement. [TODO: verify current default settlement timeline for Kenya on Paystack dashboard]

Practical implications for your code:

  • Do not promise instant delivery based on payment confirmation. A charge.success webhook means the customer paid successfully. It does not mean the money is in your bank. If you are selling physical goods, you can ship on payment confirmation. But if you need the money in your account before taking action (e.g., paying a supplier), you need to wait for settlement.
  • Build a settlement tracking table. Record expected settlement dates and amounts. When the settlement arrives (you can detect this via your banking API or manual reconciliation), mark it as received. This gives your finance team visibility into pending versus received funds.
  • Handle settlement failures. If a settlement fails (wrong bank details, bank rejection, M-Pesa limit exceeded), Paystack will notify you. Build alerting for this. A failed settlement means your accumulated balance stays in Paystack until the issue is resolved.

When to Choose Bank vs M-Pesa Settlement

The decision comes down to your business size, your cash flow needs, and your accounting setup.

Choose bank settlement when:

  • You process more than KES 50,000 per day. M-Pesa wallet limits will become a constraint at higher volumes.
  • You have a business bank account. This is cleaner for accounting, tax reporting, and audit trails.
  • You need to make large payments from your settlement funds (rent, salaries, supplier payments). Bank transfers for large amounts are cheaper and have higher limits than M-Pesa.
  • Your accountant or auditor expects funds to flow through a bank account. This is the standard for most formal businesses in Kenya.

Choose M-Pesa settlement when:

  • You are a small merchant or sole trader without a dedicated business bank account.
  • Your daily transaction volume is low enough to stay within M-Pesa wallet limits.
  • You need access to your funds as quickly as possible and M-Pesa settlement is faster for your account type.
  • You reinvest your revenue immediately (buying stock, paying casual workers via M-Pesa) and the money needs to be in M-Pesa for those outgoing payments.

Can you use both? Check with Paystack support whether your account supports split settlement or whether you can change the settlement destination. Some account types may allow you to switch between bank and M-Pesa, but simultaneous settlement to both destinations may not be available. [TODO: verify with Paystack whether split settlement to both bank and M-Pesa is supported in Kenya]

If you need to distribute funds to multiple destinations after settlement (e.g., settle to your bank, then send operational funds to your M-Pesa), you can use Paystack Transfers to move money from your Paystack balance to specific recipients before the settlement cycle runs.

Using the Settlement API

Paystack provides API endpoints for querying your settlement data programmatically. This is useful if you want to build automated reconciliation, settlement tracking dashboards, or alerting systems.

Fetching settlements:

// List settlements
const response = await fetch('https://api.paystack.co/settlement', {
  method: 'GET',
  headers: {
    Authorization: 'Bearer sk_live_YOUR_SECRET_KEY',
  },
});

const settlements = await response.json();

for (const settlement of settlements.data) {
  console.log('Settlement ID:', settlement.id);
  console.log('Amount:', settlement.total_amount / 100, 'KES');
  console.log('Status:', settlement.status);
  console.log('Settlement date:', settlement.settled_date);
  console.log('Total transactions:', settlement.total_processed);
}

Fetching transactions in a settlement:

// Get transactions in a specific settlement
const settlementId = 12345;
const response = await fetch(
  `https://api.paystack.co/settlement/${settlementId}/transactions`,
  {
    method: 'GET',
    headers: {
      Authorization: 'Bearer sk_live_YOUR_SECRET_KEY',
    },
  }
);

const txns = await response.json();

for (const txn of txns.data) {
  console.log('Reference:', txn.reference);
  console.log('Gross amount:', txn.amount / 100, 'KES');
  console.log('Fee:', txn.fees / 100, 'KES');
  console.log('Net:', (txn.amount - txn.fees) / 100, 'KES');
}

Use this data to build a daily reconciliation job that compares the settlement amounts against your internal records. Any discrepancy (settlement amount does not match expected net total) should trigger an alert for your finance team to investigate.

The pillar engineering guide covers the Balance and Settlement APIs in more detail.

Common Settlement Issues in Kenya

These are the problems Kenyan merchants actually hit with settlement. Know them before they hit you.

1. Wrong bank account details. This is the most common cause of failed settlements. A digit is wrong in the account number, or the bank name does not match the branch. Paystack cannot send money to an account that does not match. Fix: double-check your details in the dashboard. If you change banks, update your settlement account immediately.

2. Dormant bank account. Some Kenyan banks classify accounts as dormant after a period of inactivity. A dormant account may reject incoming credits. Fix: contact your bank to reactivate the account before configuring it for settlement.

3. M-Pesa wallet limits exceeded. If your settlement amount exceeds your M-Pesa daily or wallet balance limit, the settlement fails. This is especially common for merchants who grow quickly and did not anticipate the volume increase. Fix: upgrade your M-Pesa account tier (full KYC verification increases limits) or switch to bank settlement.

4. Settlement delays during holidays. Kenyan public holidays (Jamhuri Day, Mashujaa Day, Madaraka Day, etc.) are not business days. If your settlement falls on a holiday, it moves to the next business day. December is particularly tricky with multiple holidays. Plan your cash flow accordingly.

5. Refund and chargeback deductions. If you process refunds or receive chargebacks, the refunded amount is deducted from your next settlement. This can surprise merchants who expected a certain settlement amount. Your reconciliation needs to account for refunds and chargebacks in the settlement calculation.

6. Currency mismatch. If you accept payments in USD (from international customers) and settle in KES, the settlement involves a currency conversion. The exchange rate Paystack uses and the timing of the conversion affect the final KES amount. Track the expected amount in both currencies.

Learn the African Stack

Settlement is not the glamorous part of payment integration. But it is the part that determines whether your business has money in the bank. Getting it wrong means cash flow surprises, reconciliation headaches, and confused conversations with your accountant.

McTaba's M-Pesa Integration micro-course (KES 9,999) covers payment reconciliation, settlement tracking, and the bookkeeping patterns that keep your financials accurate. The 26-week bootcamp (KES 120,000) covers the full payment lifecycle, from checkout to settlement to payout, as part of building production-ready applications.

Key Takeaways

  • Paystack settles to Kenyan merchants via bank account (default) or M-Pesa wallet. The settlement destination is configured in your Paystack dashboard under Settings.
  • Settlement is net of fees. Paystack deducts its transaction fees before sending the settlement. What you receive is the transaction total minus Paystack's cut.
  • Settlement timelines depend on your account type, transaction volume, and the payment method used. Check your Paystack dashboard for your specific schedule. [TODO: verify current timelines on Paystack dashboard]
  • Bank settlements process on business days. Payments received on Friday evening, Saturday, or Sunday settle on the next business day cycle.
  • M-Pesa wallet settlement is faster for small amounts but has daily and per-transaction limits tied to Safaricom's M-Pesa wallet rules.
  • Failed settlements happen. Wrong bank details, inactive accounts, and exceeded M-Pesa limits can all cause settlement failures. Monitor your dashboard and keep your details current.
  • Your reconciliation logic needs to account for the difference between gross transaction value and net settlement amount.

Frequently Asked Questions

Can I receive Paystack settlement to both a bank account and M-Pesa at the same time?
Check with Paystack support for your specific account. The standard configuration supports one primary settlement destination. If you need to split funds across multiple destinations, you may need to use Paystack Transfers to distribute funds from your balance before settlement, or settle to one destination and then move funds manually.
How long does Paystack settlement take in Kenya?
Settlement timelines depend on your account type, transaction volume, and payment method. Check your Paystack dashboard for your specific schedule. Settlements process on business days, so weekends and public holidays add delays. Contact Paystack support if you need to discuss your settlement schedule. [TODO: verify current default settlement timeline for Kenya]
What happens if my settlement fails?
If a settlement fails (wrong bank details, bank rejection, M-Pesa limit exceeded), the funds remain in your Paystack balance. Paystack will notify you of the failure. You need to fix the issue (update bank details, increase M-Pesa limits, contact your bank) and the settlement will be retried or included in the next cycle. Check your dashboard for failed settlement notifications.
Does Paystack deduct fees before or after settlement?
Before. Paystack deducts its transaction fees from each transaction as it is processed. The amount that enters your settlement pool is already net of fees. When the settlement hits your bank account, it reflects the total of all net transaction amounts for that settlement period.
Can I see a breakdown of each settlement in the Paystack dashboard?
Yes. The Paystack dashboard provides settlement reports that list every transaction included in each settlement batch. Each transaction shows the gross amount, the fee deducted, and the net amount. You can also access this data programmatically through the Settlement API for automated reconciliation.

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