As a developer who builds high-quality integrations and customizations on the cloud-based Intacct platform, I constantly get requests to build an integration that pulls data from a system into Intacct. Often times the system I need to interface with is a legacy system. A lot of these legacy systems share the same characteristics, such as on-premise, closed-loop, stand-alone, etc. When integrating with such systems, an intermediary file and a daily scheduler are often required to transfer the data from this system to Intacct.
Recently, I worked with the iPad based-Point of Sale (POS) system Revel. Our business partner’s client is in the restaurant business and has multiple Revel iPad based POS devices deployed in their different stores. The business partner booked the sales manually on a daily basis. Because of our expertise on the Intacct platform, they contracted us to automate the process for thier client.
Unlike legacy systems, Revel exposes an open and modern RESTful API that allows third-party developers to easily integrate with their API. So, I was able to understand their API quickly and turn it around a working solution within a week. The integration is based on ASP.NET WebAPI and hosted in Microsoft Azure. Here's how it pulls the daily sales into Intacct:
- BTerrell API sends a request to Revel REST API via HTTPS for all stores to retrieve the sales reports daily.
- Revel REST API returns the sales reports in JSON format.
- BTerrell API parses the JSON data and then converts it into a XML file that conforms to the Intacct XML API format.
- BTerrell API invokes an Intacct API call by submitting the XML file prepared from the above step.
- If the above steps succeed:
- Daily sales are booked to a private entity as a single GL batch in the Sales Journal in Intacct.
- A success message is logged.
- If the above steps fail, a message indicating the nature of the failure and appropriate next steps is written to a failure log.
The diagram illustrates the workflow.