Payments & Billing8 min read

    Setting up your PayHero account

    A complete walkthrough - from creating your PayHero account to generating API keys and connecting it to Jasiyo. Open PayHero in another tab and follow along.

    Before you start

    Open app.payhero.co.ke in a new tab and keep it side-by-side with this guide. You'll work through 9 short steps - most take a minute or two each. The only slow step is waiting for PayHero to approve your KYC, which usually takes a few hours.

    9

    Steps

    ~10 min

    Active work

    30 Mins

    KYC approval

    When to use PayHero

    PayHero is the right choice if you collect M-Pesa payments but don't have direct Daraja API access from Safaricom. This is common when:

    • โ†’ Your Paybill is issued by a bank (Equity, KCB, Co-op, NCBA, etc.)
    • โ†’ You have a Safaricom Till but haven't been approved for Daraja
    • โ†’ You have a Safaricom Paybill but Daraja approval is taking too long
    If you have a Safaricom-issued Paybill, we strongly recommend you apply for a Daraja account instead. Use PayHero only as a fallback if Daraja isn't available to you.
    1

    Create your PayHero account

    Head to app.payhero.co.ke and click Sign up. You'll be asked for a username and email address, then walked through a short multi-step form for your business details.

    Use a real business email address - PayHero sends activation notices, KYC updates, and low-balance alerts there.
    2

    Complete KYC verification

    Once signed in, you'll land on your dashboard. A red Complete KYC button sits at the top right - click it and submit the requested documents (business registration certificate, director ID, etc.).

    You can keep configuring your account while KYC is under review, but you cannot receive live payments until PayHero approves your submission. Approval usually takes 30 minutes.
    3

    Add a payment channel

    A payment channel is the destination where your customers' money lands. In the left sidebar, click Payment Channels โ†’ Add Channel. You'll see three channel types - pick the one that matches what you already have.

    Bank

    Bank account

    Pick this if your Paybill is issued by a bank (Equity, KCB, Co-op, NCBA). Select your bank from the dropdown and enter your account number.

    Paybill

    Safaricom Paybill

    Pick this if you have a Safaricom Paybill but no Daraja credentials. Enter your Paybill number to register it.

    Till

    Safaricom Till

    Pick this if you have a Safaricom Till without Daraja access. Enter your Till number to register it.

    Have a Safaricom Paybill? We strongly recommend applying for a Daraja account instead of routing it through PayHero. Use PayHero's Paybill channel only if Daraja is genuinely unavailable to you.
    4

    Edit your profile

    Click your avatar in the top right, then Profile โ†’ Edit profile. Fill in the basic information carefully - these fields are required before PayHero will activate live payouts.

    Fields to fill in

    Business nameYour registered business name (usually auto-filled from signup).
    Registration numberEnter your PayHero Account ID here (visible on your dashboard, e.g. 8882). PayHero uses this internally for reference.
    Contact emailThe email PayHero will use for notifications and KYC updates.
    Contact phoneYour primary contact phone number, in +254 format.
    Low balance alert (KES)Set a threshold (e.g. 100 KES). PayHero alerts you when your service token balance drops below this - so STK Pushes don't start failing mid-day.
    5

    Disable SMS & WhatsApp notifications

    Still inside the profile editor, scroll down to the Notifications section. Set both SMS and WhatsApp to Disabled, then click Save changes.

    Why this matters

    Jasiyo already sends payment receipts to your customers via your own SMS gateway. If PayHero's notifications stay enabled, your customers receive two SMS messages for every payment - and you pay for both. Disabling these saves real money on every transaction.

    6

    Generate API keys

    In the left sidebar, click API Keys, then the green + New API Key button at the top right.

    1

    Name your key

    Enter any descriptive name - for example Jasiyo Integration. This is just a label for your reference.

    2

    Generate the key

    Click Generate API Key. PayHero will display an API Username and an API Password.

    3

    Copy both values

    Copy both the API Username and API Password into a safe place - you'll paste them into Jasiyo in Step 9.

    The API Password is shown only once. If you lose it, you'll need to generate a new key. Don't close the page until you've copied both values.
    7

    Top up service tokens

    PayHero charges a small per-transaction fee from a prepaid service token balance. You need a non-zero balance before STK Push requests can be processed.

    Go to the Dashboard, find the Service tokens card, and click the green Top up โ†‘ button. Enter your M-Pesa phone number and an amount - KES 500 is a sensible starting balance for testing. You'll receive an STK Push prompt on your phone; enter your M-Pesa PIN to complete.

    Keep an eye on your token balance once you're live. Set the Low balance alert threshold (Step 4) high enough that you have time to top up before transactions start failing.
    8

    Wait for activation

    Once PayHero reviews and approves your KYC submission, your dashboard status changes. Only after this can you receive live payments.

    Before approval

    A red Complete KYC button shows on your dashboard. STK Pushes will not work yet.

    After approval

    A green Active badge appears at the top right. You can now receive live payments.

    If the badge still shows "Complete KYC" after you've submitted, sign out and back in to refresh - PayHero caches the status in your session.
    9

    Connect PayHero to Jasiyo

    With your PayHero account active and API keys in hand, you can now connect it to Jasiyo.

    1

    Go to Payments in Jasiyo

    In your ISP dashboard, click Payments in the sidebar.

    2

    Click Connect PayHero

    Find the PayHero card and click Connect.

    3

    Paste your API credentials

    Paste the API Username and API Password you copied in Step 6. Jasiyo uses these to authenticate with PayHero and fetch your channels.

    4

    Select your channel

    Click Fetch Channels. Jasiyo will list every channel registered on your PayHero account. Pick the one you set up in Step 3.

    5

    Save

    Click Save. The callback URL is configured automatically - you don't need to register anything on PayHero's side.

    That's it - PayHero is connected. Test the integration by triggering an STK Push of KES 10 from your Jasiyo dashboard before going live with customers.

    What happens when a customer pays

    1. 1Customer initiates payment - via STK Push from Jasiyo or by paying directly to your Paybill/Till
    2. 2PayHero receives the M-Pesa payment on your channel
    3. 3PayHero sends a webhook to Jasiyo with the payment details
    4. 4Jasiyo matches the payment to the customer using their account reference
    5. 5Customer's subscription is renewed and the router queues a re-enable command
    6. 6Customer is back online within ~30 seconds
    7. 7An SMS receipt is sent to the customer via your Jasiyo SMS gateway

    Troubleshooting

    โš  Channel list doesn't load in Jasiyo

    Your API Username and API Password are different from your PayHero login credentials. Generate them under API Keys (Step 6) and make sure you copied both values exactly - no leading or trailing spaces.

    โš  STK Push fails with 'Insufficient tokens'

    Your PayHero service token balance has hit zero. Top up from the dashboard (Step 7), then increase your Low balance alert threshold so this doesn't catch you off guard again.

    โš  Status still shows 'Complete KYC' after submitting

    PayHero caches the status in your session. Sign out and back in to force a refresh. If it still shows Complete KYC after 24 hours, contact PayHero support via the Raise a Support Ticket button on the left sidebar.

    โš  Customer pays but the subscription isn't renewed

    Check the account reference the customer used. It must be their Jasiyo account number (the JSY-XXXXXX code). For STK Push initiated from Jasiyo, this is set automatically - for direct Paybill payments, the customer must enter it manually.

    โš  Getting duplicate SMS receipts

    PayHero notifications are still enabled. Go back to Step 5 and set both SMS and WhatsApp to Disabled in your profile.

    You're all set ๐ŸŽ‰

    Your PayHero account is now connected to Jasiyo. Create a test customer, trigger an STK Push of KES 10 to confirm everything is wired up correctly, then onboard your real customers.