Payment Channels

Payment channels allow you to connect with different payment providers through a single interface, giving your customers more payment options.

Key Benefit: With multiple payment channels, you can offer more payment options to your customers and have fallback options if one provider experiences issues.

Supported Payment Providers

Kipay currently supports the following payment providers:

Paystack

A popular payment provider focusing on African markets, particularly Nigeria, Ghana, and Kenya.

Visit Website
Flutterwave

A comprehensive payment solution for businesses in Africa with support for multiple payment methods.

Visit Website
M-Pesa

Kenya's leading mobile money service, providing seamless digital payments across East Africa.

Visit Website
Stripe

A global payment processor supporting businesses in over 40 countries with extensive payment options.

Visit Website

Setting Up Payment Channels

  1. First, sign up with your preferred payment provider(s) and obtain API keys
  2. In the Kipay admin dashboard, go to Payment Channels
  3. Click Add New Channel
  4. Fill in the required information for your chosen provider
  5. Save the channel

Paystack Configuration

To set up a Paystack payment channel, you'll need the following information:

Field Description Required
Public Key Your Paystack public key (starts with pk_) Yes
Secret Key Your Paystack secret key (starts with sk_) Yes
Test Mode Enable if you're using test API keys No
Webhook URL URL for receiving webhooks (auto-generated) No

You can find your Paystack API keys in the Paystack Dashboard under Settings > API Keys & Webhooks.

Flutterwave Configuration

To set up a Flutterwave payment channel, you'll need:

Field Description Required
Public Key Your Flutterwave public key Yes
Secret Key Your Flutterwave secret key Yes
Encryption Key Your Flutterwave encryption key Yes
Test Mode Enable if you're using test API keys No

You can find your Flutterwave API keys in the Flutterwave Dashboard under Settings > API.

M-Pesa Configuration

To set up an M-Pesa payment channel, you'll need the following information:

Field Description Required
Consumer Key Your M-Pesa API Consumer Key Yes
Consumer Secret Your M-Pesa API Consumer Secret Yes
Shortcode Your M-Pesa Business Shortcode Yes
Passkey Your M-Pesa Passkey for STK Push Yes
Sandbox Mode Enable for testing with M-Pesa sandbox environment No
Initiator Name Name of the initiator for C2B transactions (optional) No
Initiator Password Password for the initiator (optional) No

You can obtain these credentials from the Safaricom Developer Portal after registering your application.

Stripe Configuration

To set up a Stripe payment channel, you'll need:

Field Description Required
Publishable Key Your Stripe publishable key (starts with pk_) Yes
Secret Key Your Stripe secret key (starts with sk_) Yes
Webhook Secret Your Stripe webhook signing secret No

You can find your Stripe API keys in the Stripe Dashboard under Developers > API keys.

Managing Payment Channels

Setting a Default Channel

You can set one payment channel as the default, which will be used when no specific channel is selected for a transaction:

  1. Go to Payment Channels in the admin dashboard
  2. Find the channel you want to set as default
  3. Click the Set as Default button

Activating/Deactivating Channels

You can activate or deactivate payment channels as needed:

  1. Go to Payment Channels in the admin dashboard
  2. Find the channel you want to activate/deactivate
  3. Toggle the Active switch
  4. Save your changes

Deleting Channels

You can delete a payment channel if it's no longer needed:

  1. Go to Payment Channels in the admin dashboard
  2. Find the channel you want to delete
  3. Click the Delete button
  4. Confirm the deletion
Important: You cannot delete a payment channel that has transactions associated with it. You should deactivate it instead.

Fee Configuration

You can configure transaction fees for each payment channel:

Fee Types

You can configure who pays the fees:

Using Payment Channels in the API

When initializing a transaction via the API, you can specify which payment channel to use:

{
  "amount": 10000,
  "email": "[email protected]",
  "payment_channel_id": 1,  // Specify the channel ID here
  "description": "Payment for Order #12345",
  "currency": "KSH"
}

If you don't specify a payment channel, the default channel will be used.

Channel-Specific Features

Paystack

Flutterwave

M-Pesa

Stripe

Best Practices