Payments & Billing5 min read

    Paystack Integration

    Connect Paystack to Jasiyo to accept M-Pesa STK Push without a dedicated Paybill — good for ISPs just getting started with automated payments.

    When to use Paystack

    Use Paystack if you don't yet have a Safaricom Paybill or bank Paybill. Paystack provides M-Pesa STK Push via their own infrastructure — customers pay to Paystack's numbers rather than your dedicated Paybill.

    This is a good option for ISPs just getting started who want to automate payments immediately without waiting for a Paybill to be set up. Once you have your own Paybill, you can switch to the Daraja integration.

    Paystack charges transaction fees on each payment. Check Paystack's current pricing at paystack.com before setting this up.

    Setup in Jasiyo

    1

    Create a Paystack account

    Sign up at paystack.com and complete business verification to enable M-Pesa payments on your account.

    2

    Get your API keys

    In your Paystack dashboard, go to Settings → API Keys & Webhooks. Copy your Public Key and Secret Key. Use the Live keys, not Test keys, for production.

    3

    Go to Payments in Jasiyo

    Go to Settings → Payments in your ISP dashboard.

    4

    Click Connect Paystack

    Find the Paystack card and click Connect. Paste your Public Key and Secret Key.

    5

    Set account reference

    Set a short account reference label that will appear on customer M-Pesa prompts (e.g. your business name).

    6

    Save

    Click Save. Jasiyo will show you a Webhook URL — copy it, you need it for the next step.

    7

    Add the webhook in Paystack (required)

    Back in your Paystack dashboard, go to Settings → API Keys & Webhooks. Make sure the Live tab is selected, then paste the URL Jasiyo gave you into Live Webhook URL and click Save changes.

    Two things to watch: the Live Webhook URL field is the one you want, not the Live Callback URL directly above it — and Test mode has its own separate box, so make sure you are on the Live tab.

    Do not skip step 7. Paystack can only tell Jasiyo that a payment succeeded if the webhook URL is saved on your account, and there is no way for us to set it for you. If it is missing, hotspot payments still work — the payment page checks with Paystack itself while the customer waits — but PPPoE and static subscription payments are collected and never activate the customer. It looks like PPPoE is broken when in fact one field is empty. Jasiyo will still catch these within about 10 minutes and complete them, but the customer waits that long instead of being connected instantly.

    Payment flow

    1. 1Jasiyo sends an STK Push request to Paystack with the customer's phone number and amount
    2. 2Paystack sends the M-Pesa payment prompt to the customer's phone
    3. 3Customer enters their M-Pesa PIN and approves
    4. 4Paystack notifies Jasiyo via webhook
    5. 5Jasiyo matches the payment to the customer and renews their subscription
    6. 6Router re-enable command is queued — customer is back online within 30 seconds
    With Paystack, payments are only triggered via STK Push initiated from Jasiyo. Customers cannot walk to an M-Pesa agent and pay independently like they can with a dedicated Paybill.

    Limitations vs Daraja

    FeaturePaystackDaraja (own Paybill)
    C2B (customer pays independently)❌ Not supported✅ Supported
    STK Push✅ Supported✅ Supported
    Transaction feesPaystack rates applySafaricom rates apply
    Requires a Paybill❌ No✅ Yes
    Customer pays to own Paybill❌ Pays to Paystack numbers✅ Pays to your Paybill
    Setup complexityLow — just API keysMedium — Daraja registration required