> This page is for Product Documentation.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.navipartner.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.navipartner.com/_mcp/server.

# Set up Shopify returns with the e-commerce order experience

With the **Shopify Ecommerce Order Experience** feature, closed Shopify returns are downloaded automatically and imported as e-commerce documents. A user then processes them from the **Shopify Event Log Entries**, which creates and posts the credit memos.

The e-commerce order experience is the newer import method. It currently covers fewer situations than the legacy order import. Only closed Shopify returns with returned items and card or payment service provider refunds are imported. Refunds without a return, shipping refunds, return fees, goodwill amounts, gift cards, store credit, and exchanges aren't supported. For the full comparison, refer to [<ins>Shopify returns and refunds</ins>](/product/ecommerce-shopify-returns-refunds#what-is-covered).

> **Note:** If your company needs refunds without a return, shipping refunds, gift card refunds, or fully automatic processing, use the [<ins>legacy order import</ins>](/product/ecommerce-shopify-returns-refunds-setup) instead.

## Before you enable the feature

* Agree with the staff that they will always create and close a return in Shopify. Refunds made without a return aren't imported.
* Agree on who will process the return entries in Business Central every day.
* Finish all rows in the **Shopify Legacy Return Queue** that have the **New**, **Processing**, **Draft Created**, or **Waiting** status. The feature can't be enabled while these rows exist.
* Make sure there are no unimported entries left from the legacy Shopify order import.
* Test the setup in a sandbox environment first, as described in [<ins>Test before go-live</ins>](#test-before-go-live).

## Enable the feature

1. Search for **NaviPartner Feature Management**, and enable **Shopify Ecommerce Order Experience**.\
   The Shopify integration needs to be enabled already. If there are rows in the **Shopify Legacy Return Queue** with the **Error** or **Dismissed** status, you're asked to confirm. Dismissed returns may be imported again by the new import.\
   Enabling the feature stops the legacy order and return job queue entries, and creates the new ones.

2. Search for **Shopify Stores**, and open the store you want to set up.

3. In the **Sales Return Order Integration** section, populate the following fields:

   | Field name                         | Description                                                                                                                         |
   | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
   | **Get Returns Starting From**      | Mandatory. Shopify orders updated before this date aren't scanned for returns. This is normally the go-live date of the new import. |
   | **Sales Return Order Integration** | Enables the import of returns.                                                                                                      |

4. Check that the following job queue entries are running:

   | Job queue entry                                 | Description                                                                                       |
   | ----------------------------------------------- | ------------------------------------------------------------------------------------------------- |
   | **Get Sales Orders from Shopify**               | Downloads orders and closed returns every minute.                                                 |
   | **Process Sales Orders from Shopify Event Log** | Processes orders. Return entries aren't processed by this job, and need to be processed manually. |

> **Warning:** The feature can't be disabled while any entry in the **Shopify Event Log Entries** has the **Ready** status. Because return entries aren't processed automatically, process or handle all return entries before you switch back to the legacy order import.

## Setup checklist

| Where                             | What to set                                                                             | Why                                                                                                                                 |
| --------------------------------- | --------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
| **Shopify Store** card            | **Sales Return Order Integration** and **Get Returns Starting From**                    | Enables the download of returns.                                                                                                    |
| **Payment Method Mapping**        | A mapping with a **Payment Method Code** for each Shopify gateway used for refunds      | Each refund becomes a payment line. If the mapping is missing, the *"…is not set up for payment."* error is displayed.              |
| **Payment Gateway** (Shopify)     | Disable **Enable Refund**                                                               | Shopify payments can't be refunded from Business Central. If this option is enabled, every posted credit memo shows a refund error. |
| **Items**                         | All returned SKUs exist as items or item variants                                       | Otherwise, the *"Unknown sku"* error is displayed.                                                                                  |
| **E-commerce Stores**             | **Salesperson/Purchaser Code** (mandatory), location, dimensions, and customer settings | Used on the return order. The customer is found or created in the same way as for orders.                                           |
| **Location mapping**              | A location mapping by shipping address, or a default location                           | Returned items are received at this location. The restock location from Shopify isn't used.                                         |
| **Incoming Ecom Sales Doc Setup** | **Release Sale Ret Ord After Prc** (optional)                                           | Releases the return order. For Shopify, **Release Order on Import** on the e-commerce store also needs to be enabled.               |
| **Shopify Integration Setup**     | **Max. Document Process Retry Count** (default 5)                                       | Specifies the number of attempts per event log entry.                                                                               |

The fields in the **Legacy Order Import** section of the **Shopify Store** card (such as the refund G/L accounts, **Refund Item Charge No.**, and **Post Returns Automatically**) are hidden, and aren't used by this import method.

## Process return entries

Return entries need to be processed manually every day:

1. Search for **Shopify Event Log Entries**.
2. Filter the list by **Document Type** = **Return Order**, and **Processing Status** = **Ready** or **Error**.
3. Select the entries, and choose **Process Document**.
   * If the status changes to **Processed**, the credit memo is posted.
   * If the status changes to **Error**, read the error in the **Processing Information** FactBox, fix the cause, and process the entry again. If the retry limit is reached, use **Reset Retry Count** first.

## Test before go-live

Test the following scenarios in a sandbox environment before you start using the feature in production:

* A normal card return. Check that the credit memo amount matches the Shopify refund, and that the items are received at the correct location.
* A partial return, and a return with two refunds.
* A return in a foreign currency, if the shop sells in more than one currency.
* A return whose first processing attempt is postponed and then processed again. Check that the return order is posted and not deleted.
* A refund made without a return. Make sure the customer understands that it needs to be booked manually.