Articles in this section

Sync payouts from Shopify to NetSuite

The Payout module reconciles Shopify Payments payout data with NetSuite. It downloads payout reports from Shopify, creates custom records in NetSuite, reconciles individual transactions against existing orders and refunds, and generates Make Deposit records to move funds to your bank account.

The module uses three flows that must run in strict sequence. Run Flow 1 first, then Flow 2, then Flow 3. Running them out of order will cause reconciliation failures.

Prerequisites

Run the Shopify business entity to NetSuite (add) setup flow before enabling any payout flows. The business entity record is required for the payout export query to identify the correct Shopify Payments account.

A12.png

Flow 1: Shopify payout to NetSuite custom records (add)

This flow fetches Shopify Payments payout records and creates corresponding Celigo Shopify Payout custom records in NetSuite. Run this flow first in each payout processing cycle.

How the flow works
  1. Get payouts from Shopify (Export): Uses a GraphQL query (delta-based) to retrieve Shopify payouts with the configured status. Applies pagination and processes updated payouts for downstream reconciliation.

  2. Get payout transactions from Shopify (Lookup): Retrieves payout-related transactions (such as charges, refunds, and adjustments) from Shopify for each payout, filtering relevant records.

  3. Get payout transaction fees from Shopify (Lookup): For each payout, retrieves associated order transaction fees using the GraphQL order(id).transactions(first: 250) query. The postResponseMap script filters to only include transactions that are associated with this specific payout.

    Retrieves detailed transaction fee data associated with payouts, including fees, adjustments, and currency-related information for reconciliation.

  4. Post payout to NetSuite (Import): Creates or updates payout records in NetSuite as a custom record, storing payout-level details such as payout ID, date, status, and financial summaries.

  5. Post payout transactions to NetSuite (Import): Creates or updates payout transaction records in NetSuite using one-to-many processing, capturing transaction-level details such as amounts, fees, and associated data.

Flow 2: Shopify payout transactions reconciliation

This flow reconciles individual payout transactions from Shopify against existing NetSuite records (cash sales, invoices, customer deposits, cash refunds, and customer refunds). Run this flow after Flow 1 has completed for the same payout cycle.

How the flow works
  • Transaction type charge: Looks for an associated cash sale or customer deposit linked to the Shopify order ID. If found and amounts match, the transaction is reconciled. If the amounts differ, a variance transaction with type Amount Mismatch is created. If no matching NetSuite transaction is found, a variance transaction with type Missing Transaction is created.

  • Transaction type refund or payment_refund: Looks for an associated cash refund or customer refund. The same variance logic applies.

  • Variance transactions are linked to the Deposit record created in the Shopify payouts to NetSuite bank deposits flow.

  1. Get payouts from NetSuite (Export): Uses saved search customsearch_celigo_shopify_pay_for_reco to retrieve Shopify payout records from NetSuite, processing one record per page for structured reconciliation.

  2. Get payout transactions already from NetSuite (Lookup): Uses saved search customsearch_celigo_shopify_pay_trans_re to check which transactions have already been included in a NetSuite deposit, preventing duplicate reconciliation. 

  3. Find related transactions in NetSuite (Lookup): Uses saved search customsearch_celigo_shopify_pay_ns_trans to find the NetSuite transaction (cash sale, customer deposit, cash refund, or customer refund) matching each Shopify transaction by Shopify Order ID. 

  4. Reconcile payout transactions in NetSuite (Import): For each Shopify transaction, the reconciliation logic is:

A missing transaction may also be created if the transaction was deposited manually in NetSuite outside of the integration.

Flow 3: Shopify payouts to NetSuite bank deposits

This flow creates Make Deposit records in NetSuite to move reconciled funds from undeposited funds to your bank account. Run this flow after Flow 2 has completed.

How the flow works
  1. Get payouts to deposit from NetSuite (Export): Uses saved search customsearch_celigo_shopify_pay_to_depos (type: once) to find Celigo Shopify Payout records that are ready for deposit (reconciliation completed but no deposit record yet created). 

  2. Get payout transactions from NetSuite (Lookup): Uses saved search customsearch_celigo_shopify_pay_tra_to_d to find all reconciled transactions to include in the deposit. 

  3. Post bank deposit to NetSuite (Import): Creates a Make Deposit record in NetSuite. A maximum of 2,000 transactions can be included in a single deposit. For payouts with more than 2,000 transactions, multiple deposits are created, each containing 2,000 transactions. For example, a payout with 2,500 transactions will create two deposits: one with 2,000 and one with 500 transactions.

Post bank deposit to NetSuite (Import): Creates a Make Deposit record in NetSuite. A maximum of 2,000 transactions can be included in a single deposit. For payouts with more than 2,000 transactions, multiple deposits are created, each containing 2,000 transactions. For example, a payout with 2,500 transactions will create two deposits: one with 2,000 and one with 500 transactions.

Payout reconciliation settings

A13.png

To configure, navigate to SettingsPayouts.

Setting

Description

Payout status for syncing them

Select which Shopify Payments payout statuses to sync. Typically set to PAID. Only payouts in the selected statuses are exported by the payout export flow.

Transaction types to be excluded

Select Shopify Payments transaction types to exclude from payout reconciliation. 

Note

The payout_failure and payout_cancellation are not supported and should be excluded.

Delay to reconcile transactions

Number of days preceding the current date for which transactions are reconciled. For example, if today is April 15 and the delay is 5, only transactions from April 10 onward are included. Configure this to allow time for all related orders, billing, and refunds to sync before reconciliation runs. Recommended value: 2–5 days, depending on your order volume and processing cadence.

Transaction type to account mapping

  • Account to record variances: The NetSuite GL account is used to post Amount Mismatch and Missing Transaction variance records. Select the appropriate clearing or suspense account.

  • Accounts: Maps the Shopify Payments business entity (identified by the business entity ID from the setup flow) to the NetSuite bank account for deposit creation.

Common payout issues and resolutions

All payout transactions are creating variance records

This typically means the order, billing, or refund flows have not fully synced before the payout reconciliation ran. Increase the Delay to reconcile transactions setting to allow more time for transactional data to sync. Review the payout schedule to ensure Flow 1 runs first, then Flow 2, then Flow 3.

Payout flows running out of order

If Flow 3 runs before Flow 2, deposits will be created without full reconciliation. Check the scheduled run times for all three flows and ensure they are staggered appropriately with enough time for each flow to complete before the next begins.