Articles in this section

Configure the GraphQL payout flow

The new GraphQL-based Shopify payout to NetSuite payout and deposit flow is available under Flows > Payout.

This consolidated flow combines the payout process previously handled by two separate flows. It retrieves Shopify Payments payout summaries and their underlying transactions, including sales, refunds, fees, adjustments, and other supported transaction types. It then creates the corresponding payout custom records, bank deposits, and variance transactions in NetSuite.

For stores with multiple Shopify business entities, the flow retrieves and processes payouts for each business entity, and syncs each transaction type to the NetSuite GL account configured in the settings for that entity.

The flow uses Shopify GraphQL APIs to retrieve payout and transaction data. The previous payout flows remain available during the transition period, but we recommend migrating to the new GraphQL payout flow.

Key benefits

  • GraphQL-based payout retrieval: Retrieves payout summaries and detailed balance transactions through Shopify GraphQL APIs.
  • Simplified payout processing: A single flow now creates payout custom records, bank deposits, and variance transactions in NetSuite.
  • Business entity-based account mapping: Maps Shopify Payments transaction types for each business entity to the appropriate NetSuite GL account and subsidiary.
    • Before running the flow, ensure that a business entity is pre-selected and configured for every Shopify business entity that processes payouts. All business entities must be set up to ensure payout reports sync properly.
  • Support for additional transaction types: The Transaction types field is a multi-select dropdown that lets you group multiple Shopify Payments transaction types to sync to the same NetSuite GL account. This means transaction types such as Shopify Cash Credit and Shopify Collective can be combined into a single mapping row. If a transaction type is not available in the dropdown, you can enter it manually using the Custom transaction types (comma-separated) field.
  • Improved transaction traceability: Shopify payout transactions, including sales, refunds, fees, and adjustments, are synced with the details required for bank reconciliation.
  • Non-blocking variance handling: Missing transactions and amount mismatches are recorded as variance transactions without preventing deposit creation.
  • Safe reprocessing: Shopify payout and transaction IDs help prevent duplicate records during payout data reprocessing.

Existing payout flows

The following existing flows now display a To be deprecated tag:

  • Shopify Payout Transactions to NetSuite Deposit (To be deprecated)
  • Shopify Payout to NetSuite Payout Custom Record (To be deprecated)

These flows remain available during the transition period. However, we recommend migrating to Shopify payout to NetSuite payout and deposit before the existing flows are retired.

Understand how the GraphQL payout flow works

The Shopify payout to NetSuite payout and deposit flow processes a Shopify payout from start to finish in a single flow.

It first retrieves Shopify payout summaries and creates corresponding payout custom records in NetSuite. For stores with multiple Shopify business entities, the flow retrieves payouts separately for each configured business entity. It then retrieves the detailed Shopify Payments transactions included in each payout, such as sales, refunds, fees, adjustments, Shopify Cash Credit, Shopify Collective, and other supported transaction types.

The flow uses Business entity transaction type to account mapping to determine the NetSuite GL account for each transaction type and business entity. It then creates the corresponding NetSuite bank deposits.

If Shopify returns a business entity that is not configured in the payout mappings, the flow stops processing that entity and reports the missing configuration instead of skipping its payouts.

If a payout contains more than 2,000 transaction lines, the flow splits the payout across multiple NetSuite deposits.

When a related NetSuite transaction is missing, or its amount does not match the Shopify transaction, the flow creates a variance transaction without blocking deposit creation. Shopify payout and transaction IDs are used to prevent duplicate records when payout data is reprocessed.

The flow completes this processing through five steps:

  1. Get payouts from Shopify: Retrieves Shopify Payments payout summaries through Shopify GraphQL APIs.
  2. Post payout custom records to NetSuite: Creates a corresponding payout custom record in NetSuite for each Shopify payout.
  3. Get Shopify payout transactions: Retrieves the detailed Shopify Payments transactions associated with each payout.
  4. Post deposits to NetSuite: Creates the corresponding NetSuite bank deposits using the retrieved payout transactions and configured account mappings.
    If a payout contains more than 2,000 transaction lines, the flow creates multiple deposits.
  5. Post payout variance transactions to NetSuite: Creates variance transactions for missing NetSuite transactions or amount mismatches without blocking deposit creation.

Configure payout account mappings

Use Business entity transaction type to account mapping to map Shopify Payments transaction types for specific business entities to the corresponding NetSuite GL accounts.

Business entity transaction type to account mapping replaces the previous fixed account settings for the GraphQL payout flow. The existing fixed account settings remain available for the payout flows marked To be deprecated during the transition period.

Existing account configurations are automatically migrated to mappings for the primary Shopify business entity, preserving the current behavior for single-entity stores. If the store uses multiple business entities, configure mappings for each additional entity before running the GraphQL payout flow.

Review the migrated mappings before running the GraphQL payout flow.

To configure or review the mappings:

  1. Open the Shopify - NetSuite integration app.
  2. Go to Settings > Payout.
  3. Locate Business entity transaction type to account mapping.
  4. Review the automatically migrated mapping rows for the primary Shopify business entity.
  5. Add mapping rows for every additional Shopify business entity that processes payouts.
  6. From Business entity, select the Shopify business entity associated with the payout. For multi-entity stores, configure each business entity separately.
  7. From Transaction types, select one or more Shopify Payments transaction types that should post to the same NetSuite account.
  8. In Custom transaction types (comma-separated), enter additional Shopify transaction type keys that are not available under Transaction types. Separate multiple values with commas.
  9. From NetSuite GL account, select the account where the selected transaction types should be posted. 
  10. Add or update mapping rows as required.
  11. Click Save.

The selected NetSuite GL account can be used to record payout funds, fees, adjustments, or variances, depending on the mapped transaction types.

Important: 

  • Configure mappings for every Shopify business entity that processes payouts. If Shopify returns a business entity that is not configured, the flow stops processing that entity and reports the missing mapping.
  • Review the automatically migrated mappings for the primary business entity and configure every additional business entity. Confirm that each required transaction type is assigned to the appropriate NetSuite GL account.

Map multiple transaction types

You can map multiple Shopify Payments transaction types to the same NetSuite GL account when they require the same accounting treatment.

Create separate mapping rows when:

  • The same transaction type must post to different accounts for different business entities.
  • Different transaction types must post to different NetSuite GL accounts.
  • A transaction type is not available under Transaction types and must be entered under Custom transaction types (comma-separated).
  • A business entity uses more than one payout currency and requires different accounts by currency. 

Limitation: Mapping different accounts by payout currency within the same business entity is not currently supported.

Add custom transaction types

Use Custom transaction types (comma-separated) when a Shopify Payments transaction type is not available under Transaction types.

To add custom transaction types:

  1. Obtain the Shopify transaction type key.
  2. Enter the key in Custom transaction types (comma-separated).
  3. Separate multiple transaction type keys with commas.
  4. Select the corresponding NetSuite GL account.
  5. Save the mapping.

If a transaction type is not selected under Transaction types or entered under Custom transaction types (comma-separated), the flow posts the transaction using the variance account.

Migrate to the GraphQL payout flow

Before migrating, review the settings, schedules, filters, and custom mappings used by the existing payout flows.

Prerequisite: Ensure that the Shopify connection has permission to read Shopify Payments account data. The GraphQL payout flow requires access to Shopify Payments accounts. Reauthorize the Shopify connection if prompted.

To migrate:

  1. Open the Shopify - NetSuite integration app.
  2. Go to Flows > Payout.
  3. Locate Shopify payout to NetSuite payout and deposit.
  4. Review the configuration of:
    • Shopify Payout Transactions to NetSuite Deposit (To be deprecated)
    • Shopify Payout to NetSuite Payout Custom Record (To be deprecated)
  5. Go to Settings > Payout.
  6. Review the automatically migrated entries for the primary Shopify business entity under Business entity transaction type to account mapping.
  7. Add mappings for every additional Shopify business entity that processes payouts.
  8. Confirm that each Business entity and Transaction types combination maps to the correct NetSuite GL account.
  9. Add or update mappings as required.
  10. Return to Flows > Payout.
  11. Enable Shopify payout to NetSuite payout and deposit.
  12. Review the custom mappings copied from the existing payout flows to the GraphQL payout flow.
  13. Confirm that the payout custom-record and deposit import mappings were transferred correctly. Reconfigure any unsupported lookup or mapping that was not copied.
  14. Run the GraphQL payout flow with representative payout data.
  15. In NetSuite, confirm that the flow creates:
    • Payout custom records
    • Bank deposits
    • Multiple deposits when a payout exceeds 2,000 transaction lines
    • Variance transactions for missing transactions, amount mismatches, or unmapped transaction types
  16. Confirm that Shopify Cash Credit, Shopify Collective, and other applicable transaction types post to the expected NetSuite GL accounts.
  17. Review the flow execution results and resolve any errors.
  18. After successful validation, move the production schedule to Shopify payout to NetSuite payout and deposit.
  19. Disable the two flows marked To be deprecated when you are ready to complete the migration.
  20. Monitor the initial scheduled runs of the GraphQL payout flow.

Important: The existing payout flows remain available during the transition period. Disable them only after you have tested and validated the GraphQL payout flow.

Limitations

  • Multiple payout currencies for one business entity: The mapping supports business entity and transaction type. It does not support assigning different NetSuite GL accounts based on payout currency within the same business entity.
  • Differences between authorized and captured amounts: Shopify can report the release of an uncaptured authorization as a refund in payout data. Because the flow cannot reliably distinguish this release from an actual refund, it can create a missing-transaction variance when no corresponding refund exists in NetSuite.
  • One customer refund associated with multiple customer deposits: The flow does not fully reconcile a single NetSuite customer refund against multiple customer deposits. Transactions that cannot be matched can be recorded as variances.