Documentation You are here: start » gateways » pesapal


Subscriptions are not supported with PesaPal at this time. If you intend to sell subscriptions with your FoxyCart store, you will need to make use of another payment gateway.

Setting Up PesaPal for FoxyCart

Important: Ensure all the following steps are completed for your PesaPal account, as without it transactions could fail to complete correctly.

  1. Login to your PesaPal Merchant account and click on IPN Settings in the menu
  2. In the Website Domain enter
  3. In the Website IPN Listener Url field, enter
  4. Important For the last two steps, ensure you change the URL's to match your actual FoxyCart store domain. For example, if your FoxyCart store domain was, you would set the Website Domain to and the IPN Listener Url to be If you had a custom subdomain set up for your store though, and it was instead something like, the Website Domain would be and the IPN Listener Url would be


Obtaining a Test Account

Please Note: Foxy's test account that can be used within the Foxy admin is set up only to work with a locale of Kenya with ksh currency. To test for your own store, you'll need to get a test account with PesaPal that supports your currency.

Contact PesaPal for info on obtaining a test account. Know more? Feel free to edit this page with info.

Test Card Numbers

When on test servers, the card number to use to test a card is right below the card number field on the payment form.

Troubleshooting & Interpreting Response Codes

Contact pesapal for info. Know more? Feel free to edit this page with info.

Important Notes and Caveats

Possible Action: Datafeed Handling

At the time of the customer completing the transaction - we don't necessarily know whether the transaction was completed yet or not. We instead rely on a notification from the gateway after the checkout has been completed to confirm whether the transaction was approved or not. To handle this, transactions are initially marked as pending, and when we get a confirmation from the gateway on the result of the transaction, we update it accordingly. Each time the status changes, a datafeed will be sent to your endpoint if configured with the transaction details and the status node will be present.

The status node can contain one of three different values: pending, approved or rejected. Depending on the types of actions you're needing to perform at your datafeed endpoint, you need to make sure the appropriate status value is present first.

User Notes and Experiences

If you have tips, experience, or helpful notes related to this gateway that would benefit others, please add them below, including your name and the date. We reserve the right to edit or remove comments that don't add value to this page.

Site Tools