Sorry, your browser does not support JavaScript! Payment API for mobile apps - Pine Labs Developer | ePOS

Pine Labs' ePOS

Introduction                 

Pine Labs' ePOS is an Android app that enable merchants to accept payments on his own Android mobile phone. It offers quick onboarding, fast transaction speed and intuitive interface. Integrate it with your apps for creating innovative solutions on merchant's Android mobile phone.

Pine Labs' ePOS integration allows user to access the following features:

  • Accept payments using multiple payment modes like credit card, debit card, UPI, digital wallets
  • Simplified reconciliation for all your payment modes
  • Create users on the go for expanding business
  • Unified view of all payments transactions

Sample Use Case

  • User selects products and checkout for payment
  • User selects payment mode and proceeds for payment
  • Billing App calls DoTransaction API with payment amount
  • Pine Labs' ePOS processes the payment and merchant receives notification on his mobile
interAppCommunication

Inter-application communication

Billing application will communicate with Pine Labs' ePOS APIs for transactions. For communication, it will use Messenger over Bound Service.

In this process, the service defines a Handler that responds to different types of Message objects. This Handler is the basis for a Messenger that shares an IBinder with the client, allowing the client to send commands to the service using Message objects. Additionally, the client defines a Messenger of its own to send messages back. This technique allows the apps to perform Inter-Process Communication (IPC).

Getting started

To integrate your application(s) with Pine Labs' ePOS API on the Android devices, following steps need to be followed :

  1. Firstly you need to create a developer account with Pine Labs using Signup option.
  2. Once signed-up, sign-in to your developer account to proceed.
  3. Unit-testing using Simulator includes the below mentioned steps :
    1. First, you need to register your mobile device by using the Add device option. It would require IMEI number of the mobile device. Dial *#06# on mobile to get IMEI.
    2. For mobiles with dual SIM option, always use IMEI1 for device registration.
    3. Next, you need to download the simulator application available on the GitHub link .
    4. Now, install the simulator application on your mobile.
    5. To activate the app, use your mobile number and 1234 as password. On successful activation home screen of app will be displayed. Now, the application is all set for testing.
    6. On home screen, to perform test Card Payment transaction, provide amount and your own working mobile to receive a SMS with tiny URL of payment page.
    7. Use test card number without spaces: 4012 0010 3714 1112 any future date as card expiry date and any 3 digit number as CVV.
    8. Once transaction is completed, go to Transactions tab on home screen and use Get Status option to check status of transaction.
  4. After signing-in to test your app, you need to create a billing application profile.
  5. Once the billing application profile is created, a unique test key will be displayed in app profile
  6. To proceed further, you will need to add the test key in your billing application code which has been registered on the portal. This test-key is unique for every application.
  7. For reference, you can download a sample billing application along with source code available using this GitHub link .
  8. During unit-testing phase, you can also download and execute sample test cases using this GitHub link .
  9. Post development and unit-testing, you need to go for Certification in the developer portal account.
  10. You need to create test plan for the billing application and run test steps to complete all the test cases under this test plan as guided on the portal.
  11. Once you run the test cases, the logs will be uploaded through Simulator App for validation, and execution will be verified.
  12. Post completion of test cases execution, you will get an option to proceed for the application Certification.
  13. You will be given Production key for the application and you shall use this in application apk and your app is ready to be uploaded on Google Play store
  14. Pine Labs' production ePOS Mobile App can be downloaded from Google Play Store

API integration Process

Messenger usage flow:

  1. Pine Labs' ePOS will host a service that will implement a Handler for receiving call-back from Billing App.
  2. This handler will create a Messenger object which further creates an IBinder object which Pine Labs' ePOS service returns to Billing App.
  3. Billing App will use the IBinder object to create a Messenger object to send Messages.
  4. The service running in Pine Labs' ePOS will receive each Message in JSON string format in its Handler and corresponding API action is performed.
  5. After processing the API request, the service will respond back in JSON string format to Billing App using Messenger.

Sample Code for calling Pine Labs' ePOS API from Billing App

  1. Billing App will bind to the Pine Labs' ePOSservice Handler
    Intent intent = new Intent(); 
    intent.setAction(EPOS_ACTION);
    intent.setPackage(EPOS_PACKAGE);
    bindService(intent, connection, BIND_AUTO_CREATE);
    
  2. After successful binding, the Service will respond to the ServiceConnection by returning to onServiceConnected(). A new messenger will be created using returned IBinder.
    private ServiceConnection connection = new ServiceConnection()  {
    
    	@Override
    	public  void onServiceConnected(ComponentName  name, IBinder service) {
    		mServerMessenger = new Messenger(service);
    		isBound = true;
    	}
    	
    	@Override
    	public void onServiceDisconnected(ComponentName  name) {
    		mServerMessenger = null;
    		isBound = false;
    	}
    }
    
  3. A message will be created and sent using the above mServerMessenger. This message will contain the API request information.
    Message message = Message.obtain(null, MESSAGE_CODE);
    Bundle data = newBundle();
    String value = {
    	"Header" : "{
    		"ApplicationId" : "abcdefgh",
    		"UserId" : "user1234", 
    		"MethodId" : "1004", 
    		"VersionNo" : "1.0"
    		}
    	}"; // sample json request
    data.putString(BILLING _REQUEST_TAG, value);
    message.setData(data); 
    try  { 
         message.replyTo = new Messenger(new IncomingHandler());
         mServerMessenger.send(message);
    } catch (RemoteException e) {
         e.printStackTrace();
    }
    	
  4. On receiving the response back from Service, Billing App will process the response in IncomingHandler.
    private class IncomingHandler extends Handler {
    	@Override
    	public void handleMessage(Message msg) {
    		Bundle bundle = msg.getData();
    		String value = bundle.getString(BILLING_RESPONSE_TAG);
    		// process the response Json as required.
    	}
    }
    

List of Constants:

Name Value
EPOS_PACKAGE com.pinelabs.epos
EPOS_ACTION com.pinelabs.masterapp.SERVER
MESSAGE_CODE 1001
BILLING _REQUEST_TAG MASTERAPPREQUEST
BILLING_RESPONSE_TAG MASTERAPPRESPONSE

Request Header Information

Below are the parameters of Header which will be common for all API requests.

Name Description Data Type
Application Id (required) Unique application Id issued by Plutus System String (100)
UserId (optional) Billing application user-Id/name String (100)
MethodId (required) Unique Method Id. Refer Method List in Glossary String (10)
VersionNo (required) API version number. For e.g. "1.0" String (10)

Sample Request

 { 
	"Header": {
	"ApplicationId": "abcdefgh", 
	"UserId": "user1234",
	"MethodId": "1001",
	"VersionNo": "1.0" 
	}
} 

Response - Header Information

Below are the parameters of Header data which will be common for all API responses.

Name Description Data Type
Application Id Unique application Id issued by Plutus System String (100)
UserId Billing app user-Id/name String (100)
MethodId Unique Method Id. Refer Method List in Glossary String (10)
VersionNo API version number. For e.g. "1.0" String (10)

Below are the parameters of Response data which will be common for the all API responses.

Name Description Data Type
ResponseCode Response code String (10)
ResponseMsg Response message String (255)
{ 
	"Header" : { 
		"ApplicationId" : "abcdefgh",
		"UserId" : "user1234",
		"MethodId" : "1001",
		"VersionNo" : "1.0"
 	}, 
 	"Response" : {
		"ResponseCode" : "00",
		"ResponseMsg" : "Success" 
	} 
}

API Details

DoTransaction

This API will be called when the Billing App completes the product selection and is ready to accept payment from the customer. Billing App will add all required tender options in its App, and call this API with specific tender such as Sale, Void etc. For complete list of supported transactions refer to Transaction Types in Glossary

Request Parameters:

Tag Name Description Data Type
TransactionType (required) The type of payment transaction to be processed Refer Glossary for list of supported Transaction Types. Long
BillingRefNo (required) Transaction reference number from external application String(10)
PaymentAmount (required) Amount to be charged to customer expressed as a whole number in lowest currency unit (i.e. in paise) Long
BankCode (optional) Payment mode for accepting payment. See payment modes for possible values. String(2)
InvoiceNo (optional) If independent transaction, then it is not required. Else in case of dependent transaction, it is the Invoice number of parent transaction. String(6)
BatchNo (optional) If independent transaction, then it is not required. Else in case of dependent transaction, it is the Batch number of parent transaction Integer
Roc (optional) If independent transaction, then it is not required. Else in case of dependent transaction, it is the Roc of parent transaction Integer
Sample JSON

UPI Sale

Request:

{
  "Detail": {
    "BillingRefNo": "1552377816904",
	"BankCode": 4,  //ICICI UPI
    "PaymentAmount": 1411, // Requested amount Rs.14.11
    "TransactionType": 5120
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "TRANSACTION INITIATED CHECK GET STATUS",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "AcquiringBankCode": "4",
    "PlutusVersion": "v1.0.0",
    "Remark": "TRANSACTION INITIATED CHECK GET STATUS",
    "LoyaltyPointsAwarded": 0,
    "MerchantId": "ICIC000000649003",
    "BillingRefNo": "upi1234",
    "TerminalId": "20020000172",
    "InvoiceNumber": 105,
    "AmountProcessed": "2000",
    "PrintCardholderName": 0,
    "TransactionTime": "001109",
    "PineLabsBatchId": 2000,
    "CardType": "UPI",
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 5120,
    "BatchNumber": 9007,
    "AcquirerName": "ICICI UPI"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 100,
    "AppVersion": "190618",
    "ResponseMsg": "TRANSACTION INITIATED CHECK GET STATUS"
  }
}

UPI Get Status

Request:

{
  "Detail": {
    "BankCode": "04",
    "BatchNo": 9007,
    "BillingRefNo": "upi1234",
    "PaymentAmount": 2000,
    "Roc": 105,
    "TransactionType": 5122
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "APPROVED",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "AcquiringBankCode": "4",
    "PlutusVersion": "v1.0.0",
    "Remark": "APPROVED",
    "LoyaltyPointsAwarded": 0,
    "MerchantId": "ICIC000000649003",
    "BillingRefNo": "upi1234",
    "TerminalId": "20020000172",
    "InvoiceNumber": 106,
    "AmountProcessed": "2000",
    "RetrievalReferenceNumber": "009900415668",
    "PrintCardholderName": 0,
    "TransactionTime": "001436",
    "ApprovalCode": "000039",
    "CardNumber": "1234****dfcbank",
    "PineLabsBatchId": 2000,
    "CardType": "UPI",
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 5122,
    "BatchNumber": 9007,
    "AcquirerName": "ICICI UPI"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 0,
    "AppVersion": "190618",
    "ResponseMsg": "APPROVED"
  }
}

UPI Void

Request:

{
  "Detail": {
    "BankCode": "01",
    "BatchNo": 9007,
    "BillingRefNo": "card1234",
    "PaymentAmount": 2000,
    "Roc": 105,
    "TransactionType": 5121
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "APPROVED",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "AcquiringBankCode": "2",
    "PlutusVersion": "v1.0.0",
    "Remark": "APPROVED",
    "LoyaltyPointsAwarded": 0,
    "MerchantId": "ICICI000000649003",
    "BillingRefNo": "upi1234",
    "TerminalId": "20020000172",
    "InvoiceNumber": 107,
    "AmountProcessed": "2000",
    "RetrievalReferenceNumber": "009900415668",
    "PrintCardholderName": 0,
    "TransactionTime": "001550",
    "ApprovalCode": "000040",
    "CardNumber": "1234****dfcbank",
    "PineLabsBatchId": 2000,
    "CardType": "UPI",
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 5121,
    "BatchNumber": 9007,
    "AcquirerName": "ICICI UPI"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 0,
    "AppVersion": "190618",
    "ResponseMsg": "APPROVED"
  }
}

PhonePe Wallet Sale

Request:

{
  "Detail": {
    "BillingRefNo": "TX12345678",
    "PaymentAmount": 10000,  //For Amount Rs.100.00
    "BankCode": 105,   //PhonePe
    "TransactionType": 5102
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Freecharge Wallet Sale

Request:

{
  "Detail": {
    "BillingRefNo": "TX12345678",
    "PaymentAmount": 10000,   //For Amount Rs.100.00
    "BankCode": 103,   //Freecharge
    "TransactionType": 5102
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

PhonePe/Freecharge Wallet Sale Response

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "TRANSACTION INITIATED CHECK GET STATUS",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "AcquiringBankCode": "105",
    "PlutusVersion": "v1.0.0",
    "MerchantId": "PINELABSEPOS",
    "BillingRefNo": "phonepe1234",
    "TerminalId": "21050000154",
    "InvoiceNumber": 109,
    "AmountProcessed": "3000",
    "PrintCardholderName": 0,
    "TransactionTime": "002306",
    "CardNumber": "******2806",
    "PineLabsBatchId": 3000,
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 25393,
    "BatchNumber": 9007,
    "AcquirerName": "PHONE PE"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 100,
    "AppVersion": "190618",
    "ResponseMsg": "TRANSACTION INITIATED CHECK GET STATUS"
  }
}

Wallet Get Status

Request:

{
  "Detail": {
    "BankCode": "105",
    "BatchNo": 9007,
    "BillingRefNo": "phonepe1234",
    "PaymentAmount": 3000,
    "Roc": 109,
    "TransactionType": 5112
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "APPROVED",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "AcquiringBankCode": "11",
    "PlutusVersion": "v1.0.0",
    "Remark": "APPROVED",
    "LoyaltyPointsAwarded": 0,
    "MerchantId": "180704",
    "BillingRefNo": "airtel1234",
    "TerminalId": "20110000155",
    "InvoiceNumber": 117,
    "AmountProcessed": "200",
    "RetrievalReferenceNumber": "42438940",
    "PrintCardholderName": 0,
    "TransactionTime": "003737",
    "ApprovalCode": "000022",
    "CardNumber": "9739****04",
    "PineLabsBatchId": 200,
    "CardType": "Freecharge",
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 5127,
    "BatchNumber": 9007,
    "AcquirerName": "freecharge"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 0,
    "AppVersion": "190618",
    "ResponseMsg": "APPROVED"
  }
}

Airtel Money Sale

Request:

{
  "Detail": {
    "BillingRefNo": "TX12345678",
    "PaymentAmount": 10000,
    "TransactionType": 5127
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Detail": {
    "BatchNumber": 9015,
    "MerchantAddress": "2ND AND 3RD FLOOR BUILDING NO.2 UNITECH ",
    "PlutusVersion": "v1.0.0",
    "AcquiringBankCode": "11",
    "CardNumber": "9739****04",
    "AmountProcessed": "100",
    "TerminalId": "11100000838",
    "Remark": "APPROVED",
    "PineLabsBatchId": 100,
    "LoyaltyPointsAwarded": 0,
    "TransactionTime": "175329",
    "HostResponse": "APPROVED",
    "TransactionDate": "07012019",
    "PineLabsRoc": 5127,
    "RetrievalReferenceNumber": "561374",
    "AcquirerName": "AIRTEL BANK",
    "ApprovalCode": "000010",
    "MerchantId": "180704",
    "MerchantCity": "ALIGARH",
    "PrintCardholderName": 0,
    "InvoiceNumber": 107,
    "CardType": "Airtel Bank",
    "MerchantName": "vivek PRIVATE LIMITED"
  },
  "Header": {
    "ApplicationId": "1001",
    "UserId": "***123**123***",
    "MethodId": "1001",
    "VersionNo": "1.0"
  },
  "Response": {
    "ResponseMsg": "APPROVED",
    "ResponseCode": 0,
    "AppVersion": "-1",
    "ParameterJson": "parameter"
  }
}

Credit/Debit Card Sale

Request:

{
  "Detail": {
    "BillingRefNo": "1552377816904",
    "PaymentAmount": 100,
    "TransactionType": 5561
  },
  "Header": {
    "ApplicationId": "abcdefgh",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Bank EMI Sale

Request:

{
  "Detail": {
    "BillingRefNo": "1552377816904",
    "PaymentAmount": 100,
    "TransactionType": 5566
    "BankCode" : 1,
  },
  "Header": {
    "ApplicationId": "abcdefgh",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Brand EMI Sale

Request:

{
  "Detail": {
    "BillingRefNo": "1552377816904",
    "PaymentAmount": 100,
    "TransactionType": 5567
    "BankCode" : 1,
  },
  "Header": {
    "ApplicationId": "abcdefgh",
    "MethodId": "1001",
    "UserId": "UserId",
    "VersionNo": "1.0"
  }
}

Credit/Debit Card, Bank & Brand EMI Sale Response

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "TRANSACTION INITIATED CHECK GET STATUS",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "PlutusVersion": "v1.0.0",
    "Remark": "TRANSACTION INITIATED CHECK GET STATUS",
    "LoyaltyPointsAwarded": 0,
    "RewardRedeemedPoints": 0,
    "RewardBalancePoints": 0,
    "MerchantId": "7764",
    "BillingRefNo": "card1234",
    "TerminalId": "30400000672",
    "InvoiceNumber": 102,
    "AmountProcessed": "1500",
    "PrintCardholderName": 0,
    "RewardRedeemedAmount": 0,
    "TransactionTime": "000350",
    "PineLabsBatchId": 1500,
    "CardType": "PG",
    "PineLabsClientId": 3525,
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 5561,
    "BatchNumber": 9007,
    "AcquirerName": "PG"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 100,
    "AppVersion": "190618",
    "ResponseMsg": "TRANSACTION INITIATED CHECK GET STATUS"
  }
}

Get Status for Credit/Debit Card, Bank & Brand EMI

Request:

{
  "Detail": {
    "BankCode": "01",
    "BillingRefNo": "TX55555",
    "PaymentAmount": 2000,
    "TransactionType": 5563,
    "BatchNo": 9010,
    "Roc": 102
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "***123**123***",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Response": {
    "AppVersion": "-1",
    "ParameterJson": "parameter",
    "ResponseMsg": "Approved",
    "ResponseCode": 0
  },
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "VersionNo": "1.0",
    "UserId": "***123**123***"
  },
  "Detail": {
    "BatchNumber": 9010,
    "CardType": "PG",
    "RewardRedeemedPoints": 0,
    "RewardRedeemedAmount": 0,
    "PlutusVersion": "v1.0.0",
    "Remark": "Approved",
    "RewardBalancePoints": 0,
    "AmountProcessed": "2000",
    "CardNumber": "401200******1112",
    "PineLabsClientId": 2901,
    "MerchantId": "4569",
    "TransactionTime": "181706",
    "PineLabsBatchId": 2000,
    "TransactionDate": "07042019",
    "BillingRefNo": "5",
    "PineLabsRoc": 5563,
    "AcquirerName": "PG",
    "LoyaltyPointsAwarded": 0,
    "HostResponse": "DUPLICATE BILL",
    "RetrievalReferenceNumber": "918510001041",
    "PrintCardholderName": 0,
    "MerchantName": "Squat team",
    "InvoiceNumber": 105,
    "MerchantAddress": "2ND AND 3RD FLOOR BUILDING NO.2 UNITECH ",
    "CardholderName": "Anmol",
    "MerchantCity": "NOIDA"
  }
}

Credit/Debit Card, Bank & Brand EMI Sale Void

Request:

{
  "Detail": {
    "BankCode": "01",
    "BatchNo": 9007,
    "BillingRefNo": "TX12345678",
    "PaymentAmount": 1500,
    "Roc": 102,
    "TransactionType": 5562
  },
  "Header": {
    "ApplicationId": "1001",
    "MethodId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  }
}

Response:

{
  "Header": {
    "MethodId": "1001",
    "ApplicationId": "1001",
    "UserId": "userId",
    "VersionNo": "1.0"
  },
  "Detail": {
    "HostResponse": "APPROVED",
    "MerchantAddress": "OKHLA B 63 INDUSTRIAL AREA PHASE-1 SOUTH",
    "MerchantCity": "Delhi",
    "PlutusVersion": "v1.0.0",
    "Remark": "APPROVED",
    "LoyaltyPointsAwarded": 0,
    "RewardRedeemedPoints": 0,
    "RewardBalancePoints": 0,
    "MerchantId": "7764",
    "BillingRefNo": "card1234",
    "TerminalId": "30400000672",
    "InvoiceNumber": 104,
    "AmountProcessed": "1500",
    "PrintCardholderName": 0,
    "RewardRedeemedAmount": 0,
    "TransactionTime": "000913",
    "ApprovalCode": "384562",
    "PineLabsBatchId": 1500,
    "CardType": "PG",
    "PineLabsClientId": 3526,
    "MerchantName": "PANEX OVERSEASE",
    "TransactionDate": "04082020",
    "PineLabsRoc": 0,
    "BatchNumber": 9007,
    "AcquirerName": "PG"
  },
  "Response": {
    "ParameterJson": "parameter",
    "ResponseCode": 0,
    "AppVersion": "190618",
    "ResponseMsg": "APPROVED"
  }
}

Response Parameters:

Tag Name Description Data Type
Payments Array of payments object Object Array
BillingRefNo Transaction reference number from external application. Pine Labs' ePOS app will only use this value for printing on chargeslip. String (10)
ApprovalCode Authorization code, if transaction was approved. Otherwise empty string. Presence of non-zero length approval code string indicates successful authorization of transaction. String(6)
HostResponse Response string if a response for transaction was received from customer’s bank/UPI PSP or Wallet. Otherwise, if any error occurs before response is received, this is an empty string. String(50)
CardNumber Customer's Mobile Number / Empty string String(19)
ExpiryDate Empty String String(4)
CardholderName Empty String String(25)
CardType Empty String String(12)
InvoiceNumber Transaction invoice number, if transaction authorized. Otherwise, 0/EDC ROC (the same is printed on chargeslip) Long
BatchNumber Transaction batch number, if transaction authorized. Otherwise, 0/EDC Batch ID (in case of Reward transaction) Long
TerminalId TID, if transaction authorized. Otherwise, empty string String(8)
LoyaltyPointsAwarded Loyalty point awarded, if any. Long
Remark Description of error, if an error occurs. Otherwise, empty string. An empty string in this field DOES NOT imply successful transaction authorization String(100)
AcquirerName Name of Bank/UPI PSP/Wallet to which transaction was routed. E.g. "ICICI BANK" String(48)
MerchantId ME ID, if transaction authorized. Otherwise, empty string String(15)
RetrievalReferenceNumber RRN, if transaction authorized. Otherwise, empty string String(12)
CardEntryMode Not applicable Integer
PrintCardholderName Not applicable Integer
MerchantName Merchant name, if transaction authorized. Otherwise, empty string String(23)
MerchantAddress Merchant address line, if transaction authorized. Otherwise, empty string String(23)
MerchantCity Merchant city line, if transaction authorized. Otherwise, empty string String(23)
PlutusVersion App Version String(40)
AcquiringBankCode Code for bank used for processing transaction. Integer
RewardRedeemedAmount Redeemed Amount in Paise Long
RewardRedeemedPoints Redeemed Points Double
RewardBalanceAmount Balance Amount String(10)
RewardBalancePoints Balance Points Double
Field0 Multiple Usage Field String
AmountProcessed Amount will be in paise or lowest currency. String(99)
Field3 Multiple Usage Field String
Field4 Multiple Usage Field String
TransactionDate Date of the Transaction as per acquiring host. Date to be printed on chargeslip. In MMDDYYYY Format. String(8)
TransactionTime Time of the Transaction as per acquiring Bank/UPI PSP/Wallet host Time to be printed on chargeslip. HHMMSS where HH in 24 hour format. String(6)
PineLabsClientId Unique ID assigned to Pine Labs EDC. Integer
PineLabsBatchId Batch ID of Pine Labs EDC Integer
PineLabsRoc ROC of Pine Labs EDC Integer
AdditionalInfo Reserved for Future use Array[ ]
Key Key Name String(10)
Value Value Text String(100)

Glossary

Method Ids

Code Message
1001 Do Transaction

Transaction Types

S.No. Transaction Description Transaction Type Value
1. Wallet Sale 5102
2. Wallet Void 5104
3. Wallet Get Status 5112
4. UPI Sale 5120
5. UPI Void 5121
6. UPI Get Status 5122
7. Airtel Money Sale 5127
8. Bank EMI Sale 5566
9. Brand EMI Sale 5567
10. Credit/Debit Card Sale 5561
11. Void 5562
12. Get Status 5563
13. Resend SMS 5564

Wallet IDs - Bank Code

  Wallet Name Bank Code - ID
1. FreeCharge 103
2. Phone Pe 105

UPI - Bank Code Types

Wallet Name Bank Code
ICICI UPI 4

Response Codes

For all API successful responses, Response Code will be set to zero.

Code Message
1 App not activated
2 Already activated
3 Invalid Method Id
4 Invalid User/Pin
5 User blocked for max attempt
6 Permission denied for this user
7 Invalid data-format
8 Permission denied for this user
100 Transaction Initiated Check Get Status

More error-codes will be added as per specific scenarios.


References

GitHub link to download Pine Labs' ePOS simulator app: Click here

GitHub link to download sample billing app: Click here

Link to download Production app of Pine Labs' ePOS on Google Play Store: Click here