Pine Labs' AllTap
Introduction
Pine Labs' AllTap 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' AllTap 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' AllTap processes the payment and merchant receives notification on his mobile

Inter-application communication
Billing application will communicate with Pine Labs' AllTap 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' AllTap API on the Android devices, following steps need to be followed :
- Firstly you need to create a developer account with Pine Labs using Signup option.
- Once signed-up, sign-in to your developer account to proceed.
- Unit-testing using Simulator includes the below mentioned steps :
- 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.
- For mobiles with dual SIM option, always use IMEI1 for device registration.
- Next, you need to download the simulator application available on the GitHub link .
- Now, install the simulator application on your mobile.
- 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.
- 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.
- Use test card number without spaces: 4012 0010 3714 1112 any future date as card expiry date and any 3 digit number as CVV.
- Once transaction is completed, go to Transactions tab on home screen and use Get Status option to check status of transaction.
- After signing-in to test your app, you need to create a billing application profile.
- Once the billing application profile is created, a unique test key will be displayed in app profile
- 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.
- For reference, you can download a sample billing application along with source code available using this GitHub link .
- During unit-testing phase, you can also download and execute sample test cases using this GitHub link .
- Post development and unit-testing, you need to go for Certification in the developer portal account.
- 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.
- Once you run the test cases, the logs will be uploaded through Simulator App for validation, and execution will be verified.
- Post completion of test cases execution, you will get an option to proceed for the application Certification.
- 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
- Pine Labs' production AllTap Mobile App can be downloaded from Google Play Store
API integration Process
Messenger usage flow:
- Pine Labs' AllTap will host a service that will implement a Handler for receiving call-back from Billing App.
- This handler will create a Messenger object which further creates an IBinder object which Pine Labs' AllTap service returns to Billing App.
- Billing App will use the IBinder object to create a Messenger object to send Messages.
- The service running in Pine Labs' AllTap will receive each Message in JSON string format in its Handler and corresponding API action is performed.
- 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' AllTap API from Billing App
- Billing App will bind to the Pine Labs' AllTap service Handler
Intent intent = new Intent(); intent.setAction(EPOS_ACTION); intent.setPackage(EPOS_PACKAGE); bindService(intent, connection, BIND_AUTO_CREATE);
- 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; } }
- 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(); }
- 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 |
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' AllTap 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' AllTap simulator app: Click here
GitHub link to download sample billing app: Click here
Link to download Production app of Pine Labs' AllTap on Google Play Store: Click here