Customer Challenges
The procedure of processing payments for customers who choose to pay by credit card is done manually and requires a lot time consuming efforts from the NetSuite user. Due to manual aspects of this process, invoices could be missed, or customers could be charged the wrong amount.
Process Before Automation
#1. The AR Clerk creates a list of open invoices in NetSuite for customers who chose to pay with credit card.
#2. He/She then goes to the Braintree payment platform, a separate application from NetSuite, to charge the customer credit card manually for all invoices listed.
#3. Finally goes back to NetSuite to create the payment transactions manually.
About the Customer
Location: San Francisco, California
Categories: Web Infrastructure, Internet Security, Enterprise Software
Stage: IPO/Public
Number of Employees: 500 – 1000
Number of NetSuite Users: 150-200
Number of Subsidiaries: 5
Project duration: 1 month
Solution
The suggested solution was to build a custom screen in NetSuite using NetSuite Suitelet to group customer invoices and mark them for automatic processing through a NetSuite <> Braintree Integration. This solution would allow the AR Clerk to mass process bills without logging into a separate application to process them one by one. This automated process would also create the Payment transaction in NetSuite as soon the invoice is proceed successfully in the Braintree payment platform.
Processing credit card payments manually takes approximately 5 min per invoice. Processing 40 to 50 invoices would take 4hrs of the AR Clerk’s time, which is highly ineffective and not scalable. With this newly deployed integration, 50, 100, 1000 invoices could be processed in a matter of minutes, not hours…
A smart way to use NetSuite Suitelet UI and automation capabilities
First of all, Suitelet is a great way to build custom UI that enhances the workflow of the user. In this case, it allows the user create a list of invoices by applying various criteria, checking them off for payment through Braintree — all in one screen.
Another great aspect of this particular Suitelet is that it is derived from a saved search. This allows business users to adjust, add or remove result columns and search criteria without the need to involve the developer to change the Suitelet code.
Process After Automation
#1. The AR Clerk opens the Suitelet screen, selects invoices to include in the payment batch, then hits the “Submit” button.
#2. Upon submit, the NetSuite <> Braintree integration automatically charges the customer’s card on Braintree.
#3. If payment was successfully processed in Braintree, the integration script automatically creates a Payment transaction for that invoice in NetSuite. If the payment failed in Braintree, the user is notified by email and payment is not created in NetSuite. Additionally, the error details and handling is built into the automation to help users take action from the Suiteltet screen for exception cases.
With this optimization project, our client is now able to bill credit cards in a timely manner, eliminating all manual efforts and potential errors.
NetSuite Customization and Technical Highlights
Suitelet
A Server Widget Form as a custom NetSuite page to the user with a grid displaying all the invoices to be paid. A submit button is added at the top and bottom of the form.
Upon submit, the Suitelet sends the appropriate information to Braintree in order to process payments for all selected invoices.
Integration
A HTTP POST call to Braintree, using the GraphQL architecture. The call includes structured information on the invoices, and requests the payment processing.
Upon reception of the response to the HTTP POST call, the Suitelet reads the response to differentiate the invoices successfully paid, from those denied or with error.
System calls a Map/Reduce script and sends the invoices information via Script Parameters to create the appropriate Payment transactions.
System sends an email to the desired users based on a predefined NetSuite email template.
Map/Reduce Script (triggered by the above Suitelet script)
#1. Reads and parses the information passed by the Suitelet as script parameters .
#2. Goes through the invoices to generate the appropriate payment transactions.
#3. Upon failure of a payment transaction creation, the script records the invoice and notifies the user via email.
For more information, contact us.
About the Team
Howard Szeto
Senior NetSuite Solution Architect
Louis-Philippe Baillargeon
Senior NetSuite Developer