I was recently tasked with reconciling PayPal payments on a busy Shopify web store which integrates with the customers NetSuite account. This is all tied together by Celigo and reconciled with one of their custom solutions. There are a number of moving parts to this scenario. Here’s a basic roadmap of the standard Celigo integration up to the reconcile stage where things need help:
1. Customer places order on Shopify site and pays with their PayPal account. This creates a payment authorization against the PayPal account.
2. The order is imported into NetSuite via the Celigo order import flow.
3. The business picks, packs, and ships the order using the standard NetSuite Item Fulfillment record.
4. Celigo picks up the new Item Fulfillment record and sends the tracking number to Shopify. The customer is notified of shipment by Shopify.
5. Shopify marks the order as Fulfilled and triggers the PayPal capture event. This is the step that actually debits the end-users PayPal account for the order total.
6. Celigo picks up the billing event from Shopify and tells NetSuite to create a Cash Sale from the Item Fulfillment created in step 3.
All this is standard NetSuite, Celigo, and Shopify stuff. The problem we encounter is that the Cash Sale will remain in Open or Undeposited status until someone in accounting creates a Deposit record and enters all the recent PayPal payments onto it. To make this process easier, Celigo has a Payout add-on, which works great, but it doesn’t cover transactions made with PayPal. To cover this gap in functionality Celigo sells another add-on called “Payout to Reconciliation”, which will perform the functionality of creating the deposits and closing the open Cash Sale records. Here’s the catch though. This “Payout to Reconciliation” add-on flow only works if your Shopify store is set to capture payment at the time of sale. If your store is set to capture payment at time of shipment, this flow won’t work. The technical detail that’s missing is the PayPal authorization capture key which is created at the time NetSuite notifies Shopify of shipment. This capture key must be attached to the Cash Sale record so the Payout to Reconciliation flow can use it to create the deposit. To solve this, I created a Suitelet where a user can upload PayPal transaction details to NetSuite and have the Cash Sale records updated so the Payout to Reconciliation flow will work. Email me for details on the contact page if you would like assistance getting your business to accept PayPal payments with your Shopify/Celigo/NetSuite solution.