Proposal summary
This proposal describes the POS integration to sync invoices from IPOS to NetSuite and create cash sales or cash refunds in NetSuite.
Prerequisites
We need the API documentation of POS integration from the IPOS team for reference.
Requirement
The client would like to sync invoices from POS to NetSuite and create cash sales and cash refunds in NetSuite. The current POS integration is getting only 30 invoice data from IPOS for one location and creating cash sales and cash refunds for those invoices per 15 minutes. Likewise, the script gets total of 120 invoices for all locations and creates records in NetSuite. Hence, the cash sale creation process is delayed and the integration process for invoices created in one day takes 2 or more days to complete.
The client would like to solve the issues in the current POS integration and create cash sales for invoices created on the same day without delay.
Our Solution
Custom Record for API Information
We will use the current custom record “IPOS Configuration” for getting the integration configuration details.
Currently, the “IPOS Configuration” custom record contains 4 instances for four different locations:

The custom record is storing the domain URL, get or post URLs of IPOS, and credentials of IPOS. It will be helpful for the NetSuite user to edit the details such as update in authorization through a custom record in NetSuite.
The Customer value entered in the “Customer” field will be the entity for all cash sales and cash refunds.
The Date fields in Custom records to identify the last sync and last error date of sales and sales return. Based on this the script will fetch the sales data from IPOS. We will disable these fields, otherwise, the user can change the date in fields and the sales data from IPOS may miss due to the incorrect date.
Error Handling
The error handling process will be the same as now and will create integration logs if the error happens in cash sale and cash refund sync.


The error will be stored in the custom record. Once the error solved and created the cash sale or cash refund record, the custom record instance will be deleted.
Error Handling Emails:
Once the error happens in the integration, an email will send to the specific user to notify the error. The email will contain the error of the integration. Separate emails will be send for each error.
Cash Sale and Cash refund sync
We will deploy one Map reduce script which is more efficient than the current script and will create cash sales for all invoices on the same day.
The script will get the active “IPOS Configuration” custom records and based on the locations from the custom record, the script will fetch invoice data from IPOS for all locations using API and create the following records:
- Cash sales for the item line having a positive quantity
- Cash refunds for item lines having a negative quantity
After the successful creation of cash sales and cash refunds in NetSuite, the script will mark the orders as created in NetSuite in POS server
The field mapping of cash sales and cash refunds will be the same as now.
Assumptions
- As per our best understanding, the data from IPOS is transferred to a location server, and data from the location server is transferred to the main server. We hope no data is missing from the main server. We are fetching data from the main server using the location Id.
- The field mapping of cash sales and cash refunds will be the same as now.
- We are considering only the Cash sale and Cash refund sync from IPOS to NetSuite. We are not considering customer or item sync.
- Update or deletion of invoices in IPOS will not be reflected in NetSuite. The update in invoices like adding a new line, and removing an existing line, and rate change will not reflect in the NetSuite. Also, the update in a cash sale in NetSuite will not reflect in IPOS.
- After a cash sale is created in NetSuite successfully, the order in IPOS will be acknowledged. So, the script can’t get the data for that order from IPOS again. So, If the user deleted a cash sale in NetSuite after successful sync, then the user cannot sync the same cash sale again to NetSuite.
- Customer and tax in cash sale and cash refund will be set from the “IPOS configuration” custom record. The customer and tax will be a static value for all cash sales and cash refunds created for the same location.
- The performance of the integrations has a dependence on the number of processors in the account. The scheduled actions will be processed based on the processing queues. So even if the script can be executed as scheduled, it may get even more delay if there is no available queue to process.
- This customization is only Applicable to inventory items.
- The script will fetch only Server data.
- Status of Cash sales will be “Deposited”.
- Shipping methods are not considered in sync since no methods are available in the IPOS.
- Payment methods are not considered.
- Sending any emails to customers from the script is out of the scope of this development.
- Warehouse locations will not include any bin management.
- We are not considering the exchange rate of transactions in NetSuite.
- We are not considering the unit of measure specified in any records
- We will set static currency “AED” in all cash sales and cash refunds.
- Intercompany transactions are out of the scope of this development
- Application of customer deposit or credit memo to orders created will not be considered in the integration.
- Since we are using Static customers, we are not considering the price level of customers in IPOS.
Risk
- Some of the API endpoints will be deprecated/version updates can take place in the future.
- If there are any null values in any fields in IPOS, we will be updating the null value itself in the corresponding fields
- Our aim is to improve the performance of the script by changing the existing architecture of the script and optimizing the code. So, additional functionalities will be considered in this scope