Get API key

We assume you have created free account on joloapi.com, if not then please Create Account now. It will take hardly 1 minute. Now to get your api key, do this:

Login -> click on Account Manage -> click on API Key

On right side, you can see your live api key. If you want to change this api key in future then you have to click on "Generate Now" button on left side.

Secure your api account

To secure your api account, you need to white list your server ip in joloapi dashboard. We will accept the incoming request from your server only. If you are using multiple servers then you need to white list all server ip. Maximum 4 different server allowed per joloapi account. To white list your server ip, do this:

Login -> click on Account Manage -> click on API Server IP

On right side, you can see your live server ip. To add/update server ip, enter ip address on left side. You can see 4 input boxes for 4 server ip. If you want to use api only on 1 server then enter only 1 ip in any input box and click on "Save Now" button. Refresh the page to view the updates.

Sandbox for testing all api without balance

During integration of api, you don't have to add balance in joloapi account. You will get success response but actual recharge will not done. To use sandbox, do this:

Get status updates

When you run api, you will get transaction status SUCCESS or FAILED in realtime. But in some rare cases, service provider might change status from SUCCESS to FAILED, then to get update on your server about this change, this feature comes handy. To setup synchronization, do this:

Login -> click on Account Manage -> click on API Synchronize

On right side, you can see your live server url. To add/update server url, enter your server url in input box given on left side and click on "Set it!" button. You need to do some coding on that server url page to capture data automatically. We will send 4 parameters of transaction on your server that you need to capture in following way using POST method:

{{ php sample code }}

$jolostatus = $_POST["status"]; //status of transaction like SUCCESS,FAILED,REPORTED
$operatortxnid = $_POST["operatortxnid"]; //Operator ID
$joloorderid = $_POST["joloorderid"]; //Jolo order ID
$userorderid = $_POST["userorderid"]; //Your website order ID
if($jolostatus=='SUCCESS'){
//UPDATE DATABASE TABLE BY MATCHING JOLO ORDER ID OR YOUR OWN WEBSITE ORDER ID if its unique
}
if($jolostatus=='FAILED'){
//UPDATE DATABASE TABLE BY MATCHING JOLO ORDER ID OR YOUR OWN WEBSITE ORDER ID if its unique
//REFUND to customer if not already
}
if($jolostatus=='REPORTED'){
//UPDATE DATABASE TABLE BY MATCHING JOLO ORDER ID OR YOUR OWN WEBSITE ORDER ID if its unique
}

Check status of transaction

In case, you do not get status updates via Synchronization method for rare transaction then you can setup this api link to get status update manually.

JSON RESPONSE

If request not accepted:
{
status: "FAILED",
error: "1"
}
If request accepted:
{
status: "FAILED",
error: "360",
txid: "Z2018000000000000",
clientid: "00973003714",
service: "9999999999",
amount: "99",
time: "January 01 2018 07:04:48 AM",
margin: "0",
operatorid: "0"
}
Impotant note:
1. If request is not accepted, status will always FAILED and error will give some randowm error codes like 1,2,3,...
2. If request is accepted, status can be SUCCESS, FAILED, REPORTED along with other transaction detail.
3. You can check transaction status of current month & previous month only. If you try to check older than this period then you will get simple text response:
"Invalid orderid or transaction is archived"
4. If transaction does not exist in our system, then you will same response:
"Invalid orderid or transaction is archived"

Check status of transaction

In case, you do not get status updates via Synchronization method for rare transaction then you can setup this api link to get status update manually.

JSON RESPONSE

If request not accepted:
{
status: "FAILED",
error: "1"
}
If request accepted:
{
status: "FAILED",
error: "360",
txid: "Z2018000000000000",
clientid: "00973003714",
service: "9999999999",
amount: "99",
time: "January 01 2018 07:04:48 AM",
margin: "0",
operatorid: "0"
}
Impotant note:
1. If request is not accepted, status will always FAILED and error will give some randowm error codes like 1,2,3,...
2. If request is accepted, status can be SUCCESS, FAILED, REPORTED along with other transaction detail.
3. You can check transaction status of current month & previous month only. If you try to check older than this period then you will get simple text response:
"Invalid orderid or transaction is archived"
4. If transaction does not exist in our system, then you will same response:
"Invalid orderid or transaction is archived"

Dispute of transaction

Your customer can raise dispute against any transaction whose status is SUCCESS. Customer will get refund only if service provider refunds the transaction.

JSON RESPONSE

If request not accepted:
{
status: "FAILED",
error: "123"
}
If request accepted:
{
status: "REPORTED",
error: "0",
txid: "Z2018000000000000",
clientid: "00973003714",
service: "9999999999",
amount: "99"
}
Impotant note:
1. If request is not accepted, status will always FAILED and error will give some randowm error codes like 1,2,3,...
error 123 = you cannot dispute this transaction because status is already FAILED or REPORTED
2. If request is accepted, status will always REPORTED along with other transaction detail.
3. You can dispute transaction of last 10 days only. If you try to check older than this then you will get simple text response:
"Invalid orderid or transaction is archived"
4. If transaction does not exist in our system, then you will same response:
"Invalid orderid or transaction is archived"

Dispute of transaction

Your customer can raise dispute against any transaction whose status is SUCCESS. Customer will get refund only if service provider refunds the transaction.

JSON RESPONSE

If request not accepted:
{
status: "FAILED",
error: "123"
}
If request accepted:
{
status: "REPORTED",
error: "0",
txid: "Z2018000000000000",
clientid: "00973003714",
service: "9999999999",
amount: "99"
}
Impotant note:
1. If request is not accepted, status will always FAILED and error will give some randowm error codes like 1,2,3,...
error 123 = you cannot dispute this transaction because status is already FAILED or REPORTED
2. If request is accepted, status will always REPORTED along with other transaction detail.
3. You can dispute transaction of last 10 days only. If you try to check older than this then you will get simple text response:
"Invalid orderid or transaction is archived"
4. If transaction does not exist in our system, then you will same response:
"Invalid orderid or transaction is archived"

Error code list api

When your api request is not accepted then you always get FAILED status along with some random error code like 1,2,3..etc. This api call is used to find out exact meaning of each error code.