# Welcome

Whether you're a start-up, growing business or individual, learn how to setup, manage and integrate with iPay to accept payments and manage your business.

![](/files/-M5eVnP6em46pu6lwzIk)

**Before you can start integrating iPay into your solution, you will need an iPay account which is free. Create a free business account now if you don't have an iPay account:**[**Sign Up Now**](https://manage2.ipaygh.com/xmanage/get-started)

{% hint style="success" %}
&#x20;[Sign up for a free account if you don't have an iPay account.](https://manage2.ipaygh.com/xmanage/get-started)
{% endhint %}

#### **In this document, you'll learn how to integrate iPay with your product.**&#x20;

#### **Start by selecting what you want to use iPay for?**

|                                                   <img src="/files/-Lvz-hqxfx3QqJ1OhZjz" alt="" data-size="original">                                                   |                     <img src="/files/-Lvz-mVHnVCUgL38MVAP" alt="" data-size="original">                    |
| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------: | :--------------------------------------------------------------------------------------------------------: |
|                                            [**SELL ONLINE AND ON MOBILE**](/integrating-ipay/integrating-ipay-payment-system)                                           |                        [**SELL ON YOUR ECOMMERCE STORE**](/ipay-plugins/all-plugins)                       |
| **Whether you are selling on your website, mobile app, a subscription service or testing out your business idea, receive payments from your customers in ONE account.** | **Checkout, download and install any of the plugins for platforms that are already integrated with iPay.** |
|                             [Setup a **Payment Link** - No Integration required](/integrating-ipay/integrating-ipay-payment-system/untitled)                            |                    [WooCommerce](https://wordpress.org/plugins/ipay-ghana-woocommerce/)                    |
|            [Get Paid on your Website or App with **Online Checkout**](/integrating-ipay/integrating-ipay-payment-system/express-integration-hosted-checkout)            |                           [Wordpress](https://wordpress.org/plugins/ipay-ghana/)                           |
|                                                      [Send **Invoices** to your customers](/business-tools/invoice)                                                     |                                [Shopify](/ipay-plugins/all-plugins/shopify)                                |
|                          [Use our **API** if you are coding yourself](/integrating-ipay/integrating-ipay-payment-system/mobile-money-payments)                          |                    [Magento](https://github.com/darelabs/ipay-magento2-plugin/releases)                    |


# Creating an iPay account

All you need to know to start simplifying your payments, inventory and customer loyalty.

### Step 1

{% hint style="info" %}
Opening an iPay Account is **FREE**. You simply visit the iPay website [https://www.ipaygh.com](https://www.ipaygh.com/) , and click on **Sign Up** button at the top right corner.&#x20;
{% endhint %}

![Click on the Sign Up button on the top right corner](/files/-M6JQ2t31SU777PxOGfp)

### Step 2

&#x20;Select the type of account that best fits your needs and fill in your details accordingly.

![Choose account type and click continue](/files/-M6JQo9RH1gx5QCMgfun)

![Fill in your details accordingly and click create account](/files/-M6JRh3qW2F5iGdzBMin)

{% hint style="success" %}
Once you complete your account creation and are logged into your account, you will directed to the welcome screen to your iPay Dashboard.
{% endhint %}

![](/files/-M6JTIuMJeNrtLJTE8wZ)

This is your Dashboard, where you can view, setup and manage all your sales, payments, transfers, customers, products, and more.&#x20;

By default, your account is on the **BASIC PLAN** and in **TEST MODE**.

> You will need to completed the following steps to **Activate** your Account and receive **LIVE** payments.
>
> 1. Provide your personal information including a valid national ID.
> 2. Link your Bank Account for settlement of funds.
> 3. Provide some information about your business and request activation.


# Setting up your sales channel

iPay provides you with several options to receive payments :

## :ballot\_box\_with\_check: Sell Online and On Social Media

#### Set up in just few clicks at Zero Integration Cost.

* **For Merchants without a Website or Online Store:**\
  \
  Simply **create an** [**iPay Payment Link/Page**](/integrating-ipay/integrating-ipay-payment-system/untitled) **and share it** with your customers on your social media pages, via SMS or email in a few clicks. Your customers click to order, pay and you are notified of their payment.<br>
* **For Merchants with a Website or Online Store:** \
  \
  :digit\_one: [**Website or Mobile App**](/integrating-ipay/integrating-ipay-payment-system/express-integration-hosted-checkout)\
  iPay provides [**a simple checkout option**](/integrating-ipay/integrating-ipay-payment-system/express-integration-hosted-checkout) to start receiving mobile money, QR and card payments on your website or mobile app.\
  \
  &#x20;         :a: Use HTML code generator to generate the widget code.\
  &#x20;         :b: Copy and paste into your website on your website builder or CMS to start accepting payments on your website (No coding required)\
  \
  :digit\_two: [**Ecommerce Store**](/ipay-plugins/all-plugins)\
  Download and install any of the plugins for platforms that are already integrated with iPay such as Wordpress, Woocommerce, Magento, Shopify, Andriod etc.

## :ballot\_box\_with\_check: Sell Offline or On Phone &#x20;

#### Send Invoices to your customers via SMS and Email and get paid in express time.

Our Invoicing solution allows businesses to request for payments from their customers remotely.&#x20;

{% hint style="info" %}
This is ideal for retail, SME or SOHO businesses who have a need to take orders on the phone or on social media but require a means to accept payments from their customers before processing the orders for delivery.

[**CLICK TO SEE HOW**](/business-tools/invoice)
{% endhint %}

## :ballot\_box\_with\_check: Sell In Your Shop or On the Go&#x20;

#### For Retail Shops, Restaurant & Bars, FMCG businesses, Sales or Delivery personnel, GO CASHLESS with iPay

* [ ] No need to display multiple mobile money numbers.
* [ ] No need to risk taking cash in your shop.
* [ ] No need to risk leaving cash to your sales or delivery personal.&#x20;

{% hint style="info" %}
Use our simple mobile POS solution on any mobile device and receive all mobile money (all networks), QR and card payments in **ONE ACCOUNT**.
{% endhint %}

See what our customers have to say about our mobile based POS solution @ [**iPay Customer Stories**](https://www.youtube.com/watch?v=Uu6LkSsa09I)

## :ballot\_box\_with\_check: Key Features:

* **NO POS device required**. Accept Mobile Money, QR and Card payments in your shop using any mobile device.&#x20;
* **Instant SMS or Email confirmation** of payment to both business and customer.&#x20;
* Get **access to real-time statement of your sales** and customer purchase trends.
* **Manage your products**, **inventory** and customer loyalty.
* Transfer your **funds directly into your bank account** or pay your suppliers, utility bills, top up airtime and send money in **ONE click**.

{% hint style="success" %}

#### **Contact our Support team to help setup your shop**

:e-mail: Email us @ [support@ipaygh.com](https://www.ipaygh.com/)\
&#x20;:telephone\_receiver: Call : +233 30 273 5088 / +233 30 396 7121\
&#x20;:clock8: Mon - Fri **|** 8:00am - 5:00pm
{% endhint %}


# Transfers

### When and how do you receive your funds in your bank account?

If you receive a payment, we will send you notification email and/or SMS as well as display the payment as a Received Payment Transaction in your Transactions History.&#x20;

{% hint style="info" %}
**All payments received are deposited in your iPay Balance on a T+1 basis (less any applicable Fees as per our Fee Schedule), where T is the transaction date.**&#x20;
{% endhint %}

Your received funds in your iPay Balance can be transferred to your designated bank account based on your account type and upon your request.&#x20;

{% hint style="success" %}
Alternatively, you can use our **PayOut/Send Money** function to disburse payments to your suppliers or vendors via mobile money or **pay your bills** and **top-up airtime** instantly.&#x20;
{% endhint %}

You can initiate a transfer request at any time on a business day by clicking the “**Transfer Funds**“ button in your iPay Dashboard. When your request is processed, you will receive a Funds Transfer Report via Email and/or SMS.&#x20;

{% hint style="info" %}
Transfers to your account may normally register in your bank account within **48hours**. You can always check on the status of your transfer in your iPay Dashboard.
{% endhint %}

### Are there any transfer limits?

{% hint style="danger" %}
You may only request **one transfer per business day**.&#x20;

We process only a **minimum transfer of GHS 200**. If your collected funds are less than this minimum, it shall remain pending transfer until your transactions reach the minimum GHS 200 limit.
{% endhint %}


# Upgrading your account

Before upgrading your account, you can only interact with iPay in BASIC MODE. All of iPay's features are available in **BASIC MODE**; however, there are limits on your total collections, payouts and payment options available to you.&#x20;

{% hint style="info" %}
**Kindly refer to our** [**pricing**](https://www.ipaygh.com/pricing) **for more information**.
{% endhint %}

To upgrade your account to **STANDARD MODE** with no limits and enable card payments, you will be required to be registered business or organization and provide the following additional information:

#### :digit\_one: Business Registration Documents:

* Certificate of Incorporation&#x20;
* Certificate to Commence Business&#x20;
* Form 3

#### :digit\_two: Director's Documentation

* Tax Identification Number (TIN) certificate&#x20;
* A valid Photo ID (National ID, Driver’s License or Data page of Passport)&#x20;
* Residential Address with Proof of Residence

{% hint style="info" %}
Simply send an email to[ **support@ipaygh.com**](https://www.ipaygh.com/) with the required documentation, stating your account name and number.&#x20;
{% endhint %}

&#x20;:no\_entry: Please ensure that your corporate bank account matches your business registration and your website or sales channel represents it. \
&#x20;:no\_entry: If you sell online, kindly ensure your online store is active with a verifiable website or social media address, shipping/delivery policy, returns and refunds policy clearly documented and visible to your customers.&#x20;

Once you have submitted your application for account upgrade, our back office team will review your application and approve it for an upgrade, if you have sufficiently provided all the information required to upgrade your account. \
&#x20;:no\_entry: If we see a problem, we will get in touch right away to resolve it as quickly as possible.

## :no\_entry\_sign: Businesses we do not support for Online Card payments:

| **Category**                         | **Description**                             |
| ------------------------------------ | ------------------------------------------- |
| Travel Agencies and Tour Operators   | Travel arrangements, tours, charters        |
| Telecom Sales and Equipment          | Telecommunication devices                   |
| Telecom Services                     | Telecommunication services                  |
| Computer Network Services            | Internet service providers                  |
| Wire Transfers and Money Orders      |                                             |
| Drugs, Proprietaries & Sundries      |                                             |
| Drug Stores and Pharmacies           |                                             |
| Direct Marketing - Travel            | Includes discount clubs                     |
| Direct Marketing - Catalog           | Mail and telephone orders                   |
| Direct Marketing - Outbound          | Mail and telephone orders                   |
| Direct Marketing - Inbound           | Teleservices, audio & videotext             |
| Direct Marketing - Subscription      | Recurring subscriptions                     |
| Direct Marketing - Other             | Radio and TV sales                          |
| Cigars, Tobacco                      | Includes stands                             |
| Timeshares                           | Rentals, leases and sales                   |
| Adult Dating and Escort              | Various dating services                     |
| Video Tape Rental Stores             | Adult content                               |
| Ticketing Agencies                   | Secondary ticketing                         |
| Video Games and Arcades              | Skill Games requires registration           |
| Betting and Casino Gambling          | Online casino, lottery, wagers              |
| Government Services                  | State Lottery Requires Registration         |
| Non-Governmental Organizations (NGO) | Charitable and Social Service Organizations |
| Import and Export companies          |                                             |


# Online and On Mobile

## Overview

This describes into details how to integrate into iPay gateway checkout to collect customer payments from your Website, Web App or mobile App.&#x20;

{% hint style="info" %}
You can use our re-direct API to process payments from ***MTN Mobile Money, Airtel Money, Vodafone Cash, Tigo Cash, VISA*** and ***MasterCard*** and ***QRs***.
{% endhint %}

## Explanation of Terminologies

{% hint style="info" %}
**Merchant Key**\
It is a unique key assigned to your account for integration and receiving payments.

:ballot\_box\_with\_check:This can be found on the ***`Getting Started`***&#x70;age on the left side bar.
{% endhint %}

{% hint style="info" %}
**Invoice ID**\
It is an internally generated transaction invoice id.

:ballot\_box\_with\_check: This is unique for every transaction and not more than 25 characters in length.
{% endhint %}

{% hint style="info" %}
**Success URL**\
The page to which iPay will redirect the user after user completes the iPay checkout process.

:no\_entry: **Please note that this does not mean that payment has been received!**
{% endhint %}

{% hint style="info" %}
**Cancel URL**\
The URL your customers should be taken to when they cancel their payment.
{% endhint %}

{% hint style="info" %}
**IPN URL (Instant Payment Notification)**\
This specifies the URL to which iPay will send notification once payment is received.

:no\_entry: Please note the IPN notification from iPay is not confirmation of a payment. Rather it is a prompt that an event of interest has happened to one of your invoices.
{% endhint %}


# Online Checkout

## What is Online Checkout

iPay's Online checkout makes it possible to integrated with a line of code thereby making it the easiest way to start accepting payments.

{% hint style="info" %}
With Online Checkout,\
&#x20;we do all the hard work so you don't need much of a technical knowledge to integrate .:wink:
{% endhint %}

{% hint style="warning" %}
This generates the HTML code you'll need to copy and paste into your website on your website builder or CMS to start accepting **only** **mobile money** payments on your website.
{% endhint %}

A button is generated on your website which pops up a payment form when clicked.

#### Sample Payment Button

![Sample generated button](/files/-Lvun_G7iGpUT9z56MVf)

<div align="center"><img src="/files/-M5uoXo20TufIAClZCr7" alt="Sample Generated Form and Checkout Page."></div>

### Terminologies

{% hint style="success" %}
**Success URL**\
The page to which iPay will redirect the user after user completes the iPay checkout process.\
:no\_entry: **Please note that this does not mean that payment has been received!**
{% endhint %}

{% hint style="danger" %}
**Cancel URL**\
The URL your customers should be taken to when they cancel their payment.
{% endhint %}

### Steps to generate button&#x20;

* [x] Login to your iPay merchant account.
* [x] Click on Sales Channels(Left side bar)
* [x] Click on Online Checkout
* [x] Upload a logo, fill all necessary inputs and click on generate.
* [x] This generates a button with a code on your right.
* [x] Copy the code and place it on your website.

### Sample generated code

```markup
This is a sample code which generates the button.

<div>
	<html class="fonts">
		<head>
			<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/css/bootstrap.min.css">
			<style type="text/css">
				.fonts{
								font-size: 12.5px;
							}
				.ipay-btn{
										background-color: #04448C;
										border-color: #04448C;
										border-radius: 17px !important;
									}
				.modal{
								width: 27% !important;
							}
				.modal-header{
											padding-left:48px !important;
											padding-right: 48px !important;
											border-bottom: none !important;
											text-align: center !important;
											}
				.modal-footer{
											height: 120px;
											padding-left:48px !important;
											padding-right: 48px !important;
											margin-bottom: -17px !important;
											border-top: none !important;
											}
				.modal-body{
										margin-bottom: -25px;
										padding-right: 48px !important;
										padding-left: 48px !important;
										border-bottom: none !important;
										margin-top: -27px;
										}
				#close:hover{
											text-decoration: none !important;
										}
				.logo{
							width: 65px;height: 65px;
							}
			</style>
		</head>
		<body>
			<div class="container">
				<div class="row">
						<div class="col-lg-3 col-md-3 col-xs-3 col-sm-5">
						<div class="input-group-prepend">
							<button type="button" class="btn btn-primary ipay-btn" data-toggle="modal" data-target="#ipayModal">Make Payment</button>
						</div>
					</div>
				</div>
				<div id="ipayModal" class="modal fade m-auto" role="dialog" data-keyboard="true" data-backdrop="true">
					<div class="modal-dialog">
						<div class="modal-content">
							<div class="modal-header">
								<img src="https://payments2.ipaygh.com/app/webroot/img/LOGO-MER02797.png" class="mx-auto d-block logo">
							</div>
							<form action="https://manage.ipaygh.com/gateway/checkout" id="ipay_checkout" method="post" name="ipay_checkout" target="_blank">
								<div class="modal-body">
									<legend class="text-center mt-1">Make Payment</legend>
									<input name="merchant_key" type="hidden" value="518322ce-440b-11e9-99e1-f23c9170642f">
									<input id="merchant_code" type="hidden" value="PSYACA">
									<input name="source" type="hidden" value="WIDGET">
									<input name="success_url" type="hidden" value="#">
									<input name="cancelled_url" type="hidden" value="#">
									<input id="invoice_id" name="invoice_id" type="hidden" value="">
									<div class="row">
										<div class="col-lg">
											<div class="form-group input-group">
												<input type="text" title="Name" name="extra_name" id="name" class="form-control" placeholder="First & Last Name">
											</div>
										</div>
									</div>
									<div class="row">
										<div class="col-lg">
											<div class="form-group input-group">
												<input type="tel" title="Mobile Number" name="extra_mobile" id="number" class="form-control" maxlength="10" placeholder="Contact Number">
											</div>
										</div>
									</div>
									<div class="row">
										<div class="col-lg">
											<div class="form-group input-group">
												<input type="email" name="email" id="extra_email" class="form-control" placeholder="Email">
											</div>
										</div>
									</div>
									<div class="row">
										<div class="col-lg">
											<div class="form-group input-group">
												<input type="text" name="total" class="form-control" id="total" placeholder="Amount(GH₵)">
											</div>
										</div>
									</div>
									<div class="row">
										<div class="col-lg">
											<div class="form-group input-group">
												<input class="form-control" type="text" name="description" id="description" placeholder="Description of Payment">
											</div>
										</div>
									</div>
									<div class="row">
										<div class="col-lg">
											<button type="submit" class="btn btn-primary ipay-btn btn-block" style="padding: 8px 11px;"><strong>Pay</strong></button>
										</div>
									</div>
									<div class="row">
										<div class="col-lg text-center mt-2">
											<a href="" data-dismiss="modal" id="close">Cancel</a>
										</div>
									</div>
								</div>
								<div class="modal-footer justify-content-center ">
									<div class="row">
										<div class="col-lg">
											<img src="https://payments.ipaygh.com/app/webroot/img/iPay_payments.png" style="width: 100%;" class="img-fluid mr-auto" alt="Powered by iPay">
										</div>
									</div>
								</div>
							</form>
						</div>
					</div>
				</div>
			</div>
			<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
			<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.0/umd/popper.min.js"></script>
			<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.1.0/js/bootstrap.min.js"></script>
			<script type="text/javascript">
				(
					function(){
						Date.prototype.today = function () { 
							return  this.getFullYear()+(((this.getMonth()+1) < 10)?"0":"") + (this.getMonth()+1) +((this.getDate() < 10)?"0":"") + this.getDate();
						};
						Date.prototype.timeNow = function () { 
							return ((this.getHours() < 10)?"0":"") + this.getHours() +((this.getMinutes() < 10)?"0":"") + this.getMinutes() +((this.getSeconds() < 10)?"0":"") + this.getSeconds();
						};
						document.getElementById("invoice_id").value = document.getElementById("merchant_code").value+ new Date().today() + new Date().timeNow();
						}
				)();
			</script>
		</body>
	</html>
</div>
```


# Payment Link

For businesses without a website who want to receive payment in the shortest possible time.

## What is Payment Link.

It is a simple way to receive payments and contributions from your customers, friends, family, groups, associations and churches by generating a payment link which payees can just click to make payment.

{% hint style="success" %}
With iPay Payment Link, the user is able to generate their own payment link and start receiving payment.:wink:&#x20;
{% endhint %}

1. It's very simple to start collecting payments. Just fill out a form with the details of your business, organization, group or item you are selling and click to create a payment link for social media.
2. Copy and share your payment link with the world - post on **Facebook, Twitter, Instagram, WhatsApp**, email it or text it.

## How to generate a payment link

First you would have to login to your merchant account.

{% hint style="success" %}
[Sign in to iPay Now!!!](https://manage2.ipaygh.com/xmanage/index)
{% endhint %}

{% hint style="info" %}
Don't have an account?

[Sign Up for a business account now!!!](https://manage2.ipaygh.com/xmanage/get-started)
{% endhint %}

1. Click on 'Sales Channel Dropdown' and select 'Payment Link' on left side bar.
2. Input your business , organisation or shop name and description.
3. Upload your logo and generate payment link.

![Generate Payment Link](/files/-M5e6ng1BCPrfP2FB0-0)

![Approve Payment Link generation](/files/-M5eBzBvyAakTXsvHFGr)

{% hint style="success" %}
Hurraaayyy!!! :clap: \
Your business is ready to receive payment.

:link: Copy the payment link and share with group.
{% endhint %}

![Sample payment page](/files/-M5eCJCgpjndf78X26mE)

{% hint style="success" %}
**After the request is initiated, customer is prompted on his/her mobile phone to authorize and complete payment.**
{% endhint %}

{% hint style="info" %}
You will receive an email alert of every successful payment into your iPay account and you can transfer it to your bank account.
{% endhint %}


# Api Integration

## Overview

This document describes into details how to integrate into iPay gateway checkout to collect customer payments from your website or mobile App.&#x20;

You can use our re-direct API to process payments from MTN Mobile Money, AirtelTigo Money, Vodafone Cash, VISA and MasterCard.

### Prerequisite

{% hint style="success" %}
To successfully complete the integration and send requests the following details are required as described in table:
{% endhint %}

| **REQUIREMENTS** | **DESCRIPTION**                                                                     |
| :--------------: | ----------------------------------------------------------------------------------- |
| **Merchant Key** | This is a unique Key created by iPay and assigned to third parties for integration. |

## Initiate payment transaction request to Gateway

{% hint style="info" %}
:digit\_one: Every request to iPay gateway to initiate and process payment transactions must contain the below parameters.&#x20;

:digit\_two: The thing to note is that iPay requires each transaction to be identified by a unique invoice ID and an amount due (in GHS for the avoidance of doubt).
{% endhint %}

## Initiate payment

<mark style="color:green;">`POST`</mark> `https://manage.ipaygh.com/gateway/checkout`

This endpoint allows you to initiate payment transaction request.

#### Query Parameters

| Name           | Type   | Description                                                                                                                                                                                                                           |
| -------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| merchant\_key  | string | Your unique assigned Merchant Key.                                                                                                                                                                                                    |
| invoice\_id    | string | <p>Your  internally generated transaction invoice id<strong>.</strong><br><strong>Should be unique for every transaction and not more than 25 characters in length</strong>.</p>                                                      |
| total          | string | <p>The total payment due for the cart.<br>Please note that the gateway will <strong>NOT</strong> compute this. We want the merchant to compute this himself /herself and to add in any tax or shipping elements they may want to.</p> |
| success\_url   | string | <p>The page to which iPay will redirect the customer after customer completes the iPay checkout process.<br><strong>Please note that this does not mean payment has been received.</strong></p>                                       |
| cancelled\_url | string | The page to which iPay will redirect the customer after customer cancels the iPay checkout process.                                                                                                                                   |
| extra\_mobile  | number | <p>Customer contact number <br>( Customer received payment notification via sms if provided)</p>                                                                                                                                      |
| extra\_email   | string | <p>Customer email address<br>( Customer receives payment Email notification if provided)</p>                                                                                                                                          |
| extra\_name    | string | Customer name                                                                                                                                                                                                                         |
| description    | string | Description of payment or order description/details                                                                                                                                                                                   |
| ipn\_url       | string | This specifies the url to which iPay sends notifications once payment is received.                                                                                                                                                    |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

### Sample code on how to generate the Request

```markup
<form action="https://manage.ipaygh.com/gateway/checkout" method="post">
    <input type="hidden" name="merchant_key"  value="PROVIDED MERCHANT KEY">
    <input type="hidden" name="success_url"  value="">
    <input type="hidden" name="cancelled_url" value="">    
    <input type="hidden" name="ipn_url"  value="">
    <input type="hidden" name="invoice_id" value="">
    <input type="hidden" name="extra_name"  value="customer name">
    <input type="hidden" name="extra_mobile" value="0240000000">    
    <input type="hidden" name="extra_email"  value="example@ipaygh.com">
    <input type="hidden" name="total" value="1.00">
    <input type="hidden" name="description"  value="Sample Order">
    <button type="submit">Make Payment</button>
</form>
```

{% hint style="success" %}
Upon successful **completion of payment process** or **cancellation of payment process** on iPay gateway checkout page by customer, the customer is re-directed to the **success url** or **cancelled url** page specified in the request respectively.
{% endhint %}

## Handling payment notifications

{% hint style="info" %}
Once the customer pays or cancels an invoice, depending on your site setup, iPay can do two things:

:digit\_one: Send an email informing you of the **payment** or **cancellation**.

:digit\_two: Send a notification to an **IPN (instant payment notification) URL** for your application to take some automated action.
{% endhint %}

It is worth stressing the IPN notification from iPay is not confirmation of a payment. Rather it is a prompt that an event of interest has happened to one of your invoices.&#x20;

It is your application’s responsibility to query the iPay gateway for details on the event using the status check end point. While this may sound complicated, it is not.\
Here’s how it works:

1. Once an invoice is **paid** or **cancelled**, iPay does a **GET** to your **IPN URL** with the **invoice\_id** parameter. Suppose, your **IPN url** is <https://test.ipaygh.com/notify> and a customer pays or cancels invoice with **invoice ID: AA123**, iPay will perform the **GET request** <https://test.ipay.com/notify?invoice_id=AA123>. \
   This call is meant to prompt your application that an event of interest has occurred with respect to the invoice.
2. Your application will then make the **GET call** "<https://manage.ipaygh.com/gateway/json_status_chk?invoice_id=AA123&merchant_key> =YOUR\_MERCHANT\_KEY" to receive details of the event.
3. iPay responds to the query in the step above with a **JSON object**. Details of the response object are described as part of the status check end point.

## Sample payment notification Request

<mark style="color:blue;">`GET`</mark> `https://manage.ipaygh.com/gateway/json_status_chk`

#### Query Parameters

| Name          | Type   | Description                                                     |
| ------------- | ------ | --------------------------------------------------------------- |
| merchant\_key | string | Your unique assigned Merchant Key                               |
| invoice\_id   | string | Invoice id of the particular transaction whose details to check |

{% tabs %}
{% tab title="200 " %}

```
```

{% endtab %}
{% endtabs %}

| PARAMETER                | VALUES                                                                                                                                                              | VALUE TYPE   | DESCRIPTION                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **`1. status`**          | <p><strong>new,</strong></p><p><strong>paid,</strong></p><p><strong>cancelled,</strong></p><p><strong>awaiting\_payment,</strong></p><p><strong>failed</strong></p> | String       | <p>Transaction status of payment: <br><strong>new</strong>: - Payment transaction is new, initiated to the respective payment network <br><strong>paid</strong>: - Payment made successfully by customer <br><strong>cancelled</strong>: - Payment cancelled by customer <br><strong>awaiting\_payment</strong>: payment pending. Customer does not complete or cancel payment. <br><strong>failed</strong>: - Transaction failed. Reason for failure is provided in status\_reason parameter.</p>                                                                                                                                                                                                                                      |
| **`2. status_reason`**   | Free text                                                                                                                                                           | String       | <p>This parameter holds detail description for a "<strong>failed"</strong> Transaction status. <br>For other status values, it is empty.</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| **`3. buyer_firstname`** | Free text                                                                                                                                                           | String       | <p>First name of customer. <br>Usually empty /null since no value is passed</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         |
| **`4. buyer_lastname`**  | Free text                                                                                                                                                           | String       | <p>Last name of customer. <br>Usually empty / null</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| **`5. buyer_email`**     | Free text                                                                                                                                                           | String       | <p>Email address of customer. <br>Usually empty / null</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              |
| **`6. buyer_phone`**     | Free text                                                                                                                                                           | String       | <p>Phone number of customer. <br>Usually empty / nul</p>                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                |
| **`7. invoice_id`**      | Free text                                                                                                                                                           | String       | Invoice Id of transaction                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| **`8. amount`**          | Free text                                                                                                                                                           | Float        | Payment amount made                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     |
| **`9. as_at`**           | Free text                                                                                                                                                           | Date         | Transaction timestamp on gateway                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
| **`10. narration`**      | Free text                                                                                                                                                           | String       | Description of payment made                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| **`11. extra`**          | Free text                                                                                                                                                           | Array Object | <p>Sub array of extra parameters available:</p><p><strong><code>channel</code></strong>- Payment channel used by customer</p><p><strong><code>email</code></strong> -  Email address of customer if provided in initial request</p><p><strong><code>mobile\_no</code></strong> - Phone number of customer if provided in initial request</p><p><strong><code>psp\_response\_code</code></strong> - This parameter is only available for <strong>Card Payment</strong> transactions. It holds the specific error code applied to a transaction</p><p><strong><code>psp\_response\_msg</code></strong> - This parameter gives explanation or description of the response error code for <strong>Card payments</strong> (if available)</p> |

### Card Payment Response Codes (psp\_response\_code)

| **CODE** | **DESCRIPTION**                                                                                                                                                                                                                                            |
| :------: | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|   **0**  | The transaction was approved by the acquirer                                                                                                                                                                                                               |
|   **1**  | The transaction could not be processed for an unspecified reason that is not covered by the other response codes.                                                                                                                                          |
|   **2**  | The transaction was declined by the issuing bank – the customer should contact the bank.                                                                                                                                                                   |
|   **3**  | <p>The processing host did not reply to the transaction request. <br>This message is displayed after a specified time if no response is received from the issuing bank. It usually indicates that the issuing bank’s system is temporarily unavailable</p> |
|   **4**  | The customer’s card is past its expiry date                                                                                                                                                                                                                |
|   **5**  | The customer’s card has insufficient credit to cover their purchase                                                                                                                                                                                        |
|   **6**  | The transaction could not be processed due to a problem with the processing host’s system                                                                                                                                                                  |
|   **7**  | The transaction could not be processed due to a problem with the Payment Server.                                                                                                                                                                           |
|   **B**  | Your acquirer has blocked this BIN. Please contact the support desk for further information                                                                                                                                                                |
|   **U**  | This transaction has been declined due to the CSC being unacceptable to the Issuer. Cardholder should contact their bank                                                                                                                                   |
|   **E**  | The transaction has been declined by the issuing bank – the cardholder should contact the bank.                                                                                                                                                            |

### Gateway Error Codes:

| **ERROR**      | **DESCRIPTION**                                 |
| -------------- | ----------------------------------------------- |
| **1.  GW-001** | merchant\_key missing or empty                  |
| **2.  GW-002** | invoice\_id missing or empty                    |
| **3.  GW-003** | total value missing or empty                    |
| **4.  GW-009** | Merchant is deactivated from receiving payments |


# All Plugins


# Shopify

This page describes into details how to integrate iPay services gateway into your shopify store to collect customer payments via mobile money and credit card channels.

## Prerequisite

{% hint style="info" %}
When you register with iPay for the first time, you get a test account and test merchant key. This is to help you complete your integration and test your setup using our test mobile money numbers **0260000000** and **0240000000**.
{% endhint %}

To successfully complete the integration and send requests the following details are required as described in table:

| REQUIREMENTS    | DESCRIPTION                                                                                                                                                                                 |
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Shopify Account | <p>An active shopify account. <br><a href="https://www.shopify.com/">Click here</a> to create a shopify account if you haven't done that already.</p>                                       |
| iPay Account    | <p>An iPay account to integrate into shopify. <a href="https://manage2.ipaygh.com/xmanage/get-started"><br>Click here</a> to create an iPay account if you haven't created one already.</p> |
| Merchant ID     | Unique iPay merchant ID.                                                                                                                                                                    |
| Merchant Key    | This is a unique key created by iPay for third parties doing integration.                                                                                                                   |

{% hint style="success" %}
Your **`merchant id`** and **`merchant key`**. You can find them in your **Account profile** (under the **Account management** tab in your iPay account dashboard).
{% endhint %}

{% hint style="info" %}
**iPay for Shopify currently supports only sites that have Ghana cedis (GHS) as a default currency.**
{% endhint %}

## Integrate your Shopify store

To integrate your shopify site, follow the steps below:

### Steps

:ballot\_box\_with\_check:Visit [iPay-Shopify-payments](https://www.shopify.com/login?redirect=%2Fadmin%2Fauthorize_gateway%2F1054045) \
\
:ballot\_box\_with\_check:Click "**`Install Payment provider`**". \
\
:no\_entry: Note: Kindly ensure you have an active Shopify site and you are logged into your site's admin panel.\
\
:ballot\_box\_with\_check:Once iPay is installed, click the **`Edit Button`** next to **iPay Ghana Payment Gateway** (under Alternative Payments providers tab in your settings).\
\
:ballot\_box\_with\_check:Provide your merchant id and merchant key.\
\
:ballot\_box\_with\_check:Save your settings and test your setup on your website using our test numbers **0240000000 or 0260000000**.

### What next after setup

Once you are ready to receive LIVE payments, complete the 3 step activation process on the "`Getting Started` Tab" in your iPay account dashboard to request activation of your account to the BASIC plan.

{% hint style="info" %}
This mode activates your LIVE merchant Key which you will use in your integration to make and receive LIVE mobile money payments only into your account and enable settlements to your remittance account details configured.&#x20;

:no\_entry: Please note, account activation is given based on completed and tested site integration.
{% endhint %}

{% hint style="info" %}
You may request for upgrade of your account to STANDARD plan after account activation, to enable you receive VISA and MasterCard payments in addition to mobile money payments.
{% endhint %}


# Invoicing

{% hint style="info" %}
**Send Invoices to your customers via** [**SMS and Email**](/business-tools/invoice#step-4) **and get paid in express time,** [**Online**](/business-tools/invoice#how-to-pay-an-invoice-online) **or** [**Offline**](/business-tools/invoice#how-to-pay-an-invoice-offline-sms)**.**
{% endhint %}

Our Invoicing solution allows businesses to request for payments from their customers remotely.

> This is ideal for retail, SME or SOHO businesses who have a need to take orders on the phone or on social media but require a means to accept payments from their customers before processing the orders for delivery.

{% hint style="success" %}

#### Key Features

:ballot\_box\_with\_check: Create custom invoice that includes your company logo and information. \
:ballot\_box\_with\_check: Send invoices using your customer’s email address or mobile number. \
:ballot\_box\_with\_check: Accept Mobile Money, QR and Card payments instantly. \
:ballot\_box\_with\_check: Track your invoices, payments and due dates all in ONE Account. \
:ballot\_box\_with\_check: Pay your suppliers, utility bills and send money in ONE click
{% endhint %}

## This is step by step guide to request payments from your Merchant Dashboard.

### Step 1

> :digit\_one: First, you will need to login to your merchant dashboard and click the ‘**`Invoices tab`**’.
>
> :digit\_two: Click on the ‘**`Create New Invoice`**’ button.

![](/files/-M5rCFp32oBZJKs6TI--)

### Step 2

> :digit\_one: You will be prompted to enter the customer’s name, email address or Mobile Money Number, payment description, Amount you are requesting and an option to set a due date for invoice to expire.
>
> :digit\_two: Click the ‘Send’ button filling in all details correctly.

![](/files/-M5rCsf0dXMpdztiFO1T)

### Step 3

> :digit\_one: You’ll have a chance to review the payment request before sending. Click ‘Continue’ to send the payment request to the customer via SMS/Email depending on the customer information provided.&#x20;
>
> :digit\_two: Your customer will receive an SMS/Email notification with instructions to complete payment

![](/files/-M5rDI2xeqAOwdSNdeHr)

### Step 4

> :digit\_one: Your customer will receive an email or SMS which looks like the samples below.

{% hint style="success" %}
All they have to do is click on "Pay Invoice" button to pay online OR pay offline by dialing \*920\*50# and entering the invoice number.
{% endhint %}

![Email Notification(Left) & Sms Notification(Right)](/files/-M5rELpRWuZ1cOQfOdZo)

## How to Pay an Invoice - Online

{% hint style="info" %}
Once customer clicks on the Pay Invoice button or URL , a secure page will open on their browser where they can follow the steps to make payment.
{% endhint %}

![](/files/-M60VrZ13isorfL4f8-g)

### Confirmation of Payment to Customer and Merchant

{% hint style="info" %}
Once payment is completed, customer receives payment receipt via Email/SMS and Merchant get instant notification of payment.
{% endhint %}

![](/files/-M5rKMjSAsxv5C_eQwwj)

## How to Pay an Invoice - Offline / SMS

> :digit\_one: Customer dials the short code **\******920\******50#**  and Chose '**1. Pay Merchant’**.&#x20;
>
> :digit\_two: They will be required to enter the unique invoice number to complete payment

![](/files/-M5rLn1Nxa9BASaH4WKN)

### Confirmation of Payment to Customer and Merchant - Offline

{% hint style="info" %}
Once payment is completed, customer receives payment receipt via SMS and Merchant get instant notification of payment.
{% endhint %}

![](/files/-M60W_aYfxEJFSPoINh0)


