> For the complete documentation index, see [llms.txt](https://docs.xorosoft.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.xorosoft.com/xoroerp-1/connected-apps/shopify/installation-guide/configuration-settings/b2b-sync/general-settings.md).

# General Settings

### Overview

The **B2B Sync** feature in Shopify Integration enables businesses to manage **B2B company structures, customer mapping, and pricing synchronization** between Shopify and XoroERP.

This functionality is designed to support:

* Company and location hierarchy (Parent–Child structure)
* Accurate order mapping based on B2B customers
* Flexible pricing rules at the company or location level

<figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2FbFpeZkqD5brVCtl6wFOS%2Fimage.png?alt=media&amp;token=2bc8b280-fe10-4239-90b0-ad052bb4ab38" alt=""><figcaption></figcaption></figure>

B2B Sync works through four core flows:

1. **B2B Company Sync**
2. **B2B Customer Sync**
3. **Customer & Location Mapping**
4. **B2B Pricing Sync**

All the above flows are configured from the **General Tab** under B2B Sync settings.

***

### B2B Sync&#x20;

#### Enable B2B Sync

**Type:** Checkbox

This setting allows your account to operate in **B2B (Business-to-Business) mode** for Shopify integration.

***

#### **What happens when this is enabled**

When **Enable B2B Sync** is turned on, all incoming orders are treated as B2B orders, and the system follows a specific method to identify customers and process orders.

* Orders are successfully created (dropped) in XoroERP
* Customers are matched using the **Shopify Customer ID**
* The system uses a **Customer Identifier Code** (such as Location ID) from the selected custom field

***

{% hint style="info" %}

#### **Important Requirement**

* The **Customer Identifier Code is mandatory**
* This value must be available in the configured custom field for each customer

If this information is missing, the system will not be able to correctly identify the customer or process the order.
{% endhint %}

***

#### **Customer Matching Logic**

When this setting is enabled:

* Customer matching is done **only using the Shopify Customer ID**
* The system will **not use phone number or email** for matching

<figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2FkQV0MZByfJtJWQgSC381%2Fimage.png?alt=media&amp;token=4e23d8c7-4c56-4576-bf8a-c6184e09a736" alt=""><figcaption></figcaption></figure>

#### What it does:

* Enables syncing of **B2B companies and locations**
* Allows **pricing rules to be applied and synced**
* Activates additional configuration options within the B2B Sync module

***

### Available Options Under B2B Sync

Once **Enable B2B Sync** is checked, the following options become available:

<figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2F45BOVaOcvjkaudEiMgus%2Fimage.png?alt=media&amp;token=a5fc4ee6-9981-44fa-84fb-8e10ab56a238" alt=""><figcaption></figcaption></figure>

***

#### 1. Enable B2B Company Sync

**Description:**

This setting allows synchronization of **Shopify B2B Companies** into XoroERP.

**What gets synced:**

* Company details
* Associated customers
* Company locations

***

**B2B Customer Sync Type**

Selecting the above option enables a dropdown:

<div data-with-frame="true"><figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2FX7IUDlcT8sghV2XTdcZe%2Fimage.png?alt=media&amp;token=4ee85eac-5b72-4564-b374-955774f17d1d" alt=""><figcaption></figcaption></figure></div>

**a. Sync B2B Customer as Customer**

* Company is created as a **Parent Customer**
* Customers are created as **Child Customers**
* Maintains a **hierarchical structure**

***

**b. Sync B2B Location as Customer**

* Each location is treated as an **independent customer**
* No parent-child hierarchy is enforced

***

**Key Behavior**

* Multiple locations under a company are handled based on the selected sync type

***

#### Business Impact

* Enables structured B2B customer management
* Supports customer/location-level tracking and operations
* Ensures correct customer mapping during order creation

***

#### 2. Sync B2B Prices

**Description:**

This setting enables synchronization of **B2B catalog pricing from XoroERP to Shopify**.

When enabled:

* Pricing rules configured in XoroERP are applied in Shopify
* Pricing is mapped to **company or location level**

***

#### **Additional Settings**

Enabling this option exposes the following configurations:

***

#### B2B Price Sync Type

This setting determines **how pricing is synced between XoroERP and Shopify for B2B customers**.

In B2B scenarios, pricing is often different for each customer or company location. This setting allows you to control whether pricing should follow a **standard mapping** or a **custom, field-based mapping**.

<div data-with-frame="true"><figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2Fz8V5n1hnl1GVFsbwM2ck%2Fimage.png?alt=media&amp;token=522fc945-d94b-46e7-9ea4-4ab83f278617" alt=""><figcaption></figcaption></figure></div>

#### **Available Options**

***

**Default Price Sync Mapping**

When this option is selected, XoroERP uses the **default mapping configuration** to sync B2B pricing along with customer location data.

To use this option, **Enable B2B Company Sync** must be turned ON. Once enabled, XoroERP automatically generates and maintains the required **location ID mappings** in the backend. These mappings are then used during synchronization with Shopify to ensure the correct pricing is applied.

This option does not require any additional setup and is ideal for scenarios where you want the system to manage pricing and location mapping automatically using the default configuration.

***

**Price Sync Customer Field Map**

When this option is selected, XoroERP syncs B2B pricing to Shopify using **custom field-based mapping** instead of the default configuration.

This allows you to control how pricing is applied by linking customers and items to specific **company locations and product variants** in Shopify.

With this setup:

* Xoro price rules are synced to Shopify
* Pricing is applied based on the **mapped customer location and item variant**
* Suitable for advanced B2B setups where pricing varies by customer or location

***

The following options appear when the user selects **“Price Sync Custom Field Map”** from the dropdown under the **B2B Price Sync Type** setting

***

#### B2B Price Sync Customer Custom Field

This field is used to select a custom field in XoroERP that stores the **B2B Location ID** for each customer.

***

**What this means**

* Each customer is linked to a **specific company location in Shopify**
* This location determines which **price catalog** applies

<div data-with-frame="true"><figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2FI5gxk6wJCgbeud0L5dYg%2Fimage.png?alt=media&amp;token=c03034d9-a7a8-4169-b29e-07aa18938fbe" alt=""><figcaption></figcaption></figure></div>

Select the custom field containing:

* **Shopify Location ID**

**How it works**

* The system reads the Location ID from the selected custom field
* It uses this ID to:
  * Identify the correct company/location in Shopify
  * Apply the correct pricing for that customer

***

**Why this is important**

Without this mapping:

* The system cannot determine which pricing to apply
* Customers may receive incorrect prices

**Purpose:**

* Maps the customer to the correct catalog location
* Ensures correct pricing visibility in Shopify

***

#### B2B Price Sync Item Custom Field

This field is used to select a custom field in XoroERP that stores the **Shopify Variant ID** for items.

***

**What this means**

* Each item in XoroERP must be linked to its corresponding **Shopify product variant**
* Pricing is applied at the **variant level in Shopify**

<div data-with-frame="true"><figure><img src="https://3188343778-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fkf8DNCjEfcSm64PCPcmf%2Fuploads%2FiEq7hopOSXs1egrU5kKo%2Fimage.png?alt=media&amp;token=a8d32e53-f641-4a80-b0f9-95fc414e767f" alt=""><figcaption></figcaption></figure></div>

Select the custom field containing:

* **Shopify Variant ID**

**How it works**

* The system reads the Variant ID from the selected custom field
* It uses this ID to:
  * Match the item in Shopify
  * Apply the correct catalog pricing

**Purpose**:

* Links ERP items to Shopify catalog items
* Ensures accurate pricing application

***

#### Business Impact

* Ensures pricing is correctly reflected in Shopify catalogs
* Enables **granular pricing control** across locations

***

#### 3. Sync B2B Locations in Catalog

**Type:** Checkbox

When enabled:

* Location-specific pricing is synced to Shopify
* Pricing rules are applied at the **company location level**

**Key Behavior**

* Catalog pricing is mapped based on:
  * Customer location
  * Item variant

#### Important Notes

* Company structure must be correctly created in Shopify before syncing
* Currency must match between:
  * Customer
  * Account
* Custom field mapping is critical for pricing sync accuracy
* Missing mappings may result in:
  * Pricing sync failures
  * Order creation issues

***

### Summary

| Setting                       | Function                            |
| ----------------------------- | ----------------------------------- |
| Enable B2B Sync               | Activates all B2B workflows         |
| Enable B2B Company Sync       | Syncs company & location structure  |
| B2B Customer Sync Type        | Defines customer hierarchy behavior |
| Sync B2B Prices               | Syncs pricing rules to Shopify      |
| Sync B2B Locations in Catalog | Enables location-based pricing      |

***

#### Enable Customer Sync

A new **Enable Customer Sync** functionality has been introduced in the **B2B Sync for Shopify** integration in Xoro. This functionality allows customer information to be synced from **Xoro to Shopify**.

#### How It Works

### B2B Sync for Shopify – Customer Sync and Pricing Settings

#### 1. Enable B2B Customer Sync

A new **Enable B2B Customer Sync** checkbox has been added under the **Enable B2B Sync** settings in Xoro. This functionality allows customer information from XoroERP to be synchronized with Shopify, enabling companies maintained in Xoro to be created and managed as B2B companies in Shopify.

When this setting is enabled, Xoro synchronizes company information, associated contacts, addresses, payment terms, supported tax exemptions, and customer metafields to Shopify.

**How It Works**

When a company is created in Xoro, the system synchronizes the company with Shopify and creates the corresponding company, location, and contact records.

The synchronization follows this workflow:

1. A company is created in Xoro with the required company and customer details.
2. Xoro synchronizes the company with Shopify.
3. Shopify creates the corresponding company record, along with its location and contact records.
4. The company's first name and last name in Xoro are used to create the associated customer contact in Shopify.
5. The supported addresses, payment terms, tax exemptions, and customer metafields are synchronized according to the configured settings and supported fields.

**Information Synced from Xoro to Shopify**

| Information              | Synchronization Behaviour                                                                                                                                               |
| ------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Company                  | The company created in Xoro is synchronized as a B2B company in Shopify.                                                                                                |
| Customer Type            | The synchronized customer type is always **Company**.                                                                                                                   |
| First Name and Last Name | The first name and last name entered for the company in Xoro are used to create the associated customer contact in Shopify.                                             |
| Billing Address          | The billing address in Xoro is synchronized as the corresponding location address in Shopify.                                                                           |
| Shipping Address         | The shipping address in Xoro is synchronized as the corresponding location address in Shopify.                                                                          |
| Payment Terms            | Payment terms from Xoro are synchronized to the corresponding customer and location in Shopify, where supported by the integration.                                     |
| Customer Tax Exemption   | The supported tax exemption flag is synchronized to the Shopify location. Currently, **Customer BC PST Exempt** is the supported tax exemption.                         |
| Customer Metafields      | Supported customer properties from Xoro can be synchronized to Shopify as customer metafields. For example, a sales representative property can be sent as a metafield. |

**Important:** This functionality synchronizes companies from Xoro to Shopify. The customer type in Shopify is always set to **Company**. It does not imply that every customer-related field or tax exemption is supported.

**Example**

Suppose the following company is created in Xoro:

* **Company Name:** ABC Supplies
* **First Name:** John
* **Last Name:** Smith
* **Billing Address:** 100 Market Street
* **Shipping Address:** 25 Warehouse Road

When the company is synchronized, Shopify creates the corresponding B2B company and its associated location and contact records. John Smith is used for the associated customer contact, and the supported billing and shipping address information is synchronized to the relevant location address fields.

#### 2. B2B Customer Sync Settings

The following settings control how customer records are synchronized and identified between Xoro and Shopify.

**2.1. Enable B2B Customer Sync**

**Purpose:** Enables the synchronization of company-type customer information from Xoro to Shopify.

**How It Works:**

* When enabled, Xoro can synchronize companies to Shopify as B2B companies.
* Shopify creates the corresponding company, location, and contact records.
* Supported customer details, such as addresses, payment terms, tax exemptions, and metafields, are synchronized as described above.
* The customer type in Shopify remains Company.

**When to Use:** Enable this setting when companies maintained in Xoro need to be available as B2B customers in Shopify.

**2.2. B2B Customer Sync Customer Custom Field**

**Purpose:** Specifies the Xoro customer custom field in which the corresponding Shopify company ID is stored.

**How It Works:**

1. A company in Xoro is synchronized with Shopify.
2. Shopify creates the corresponding company record and assigns it a unique company ID.
3. Xoro stores the Shopify company ID in the selected customer custom field.

**Example:**

If the selected custom field is `Shopify Company ID`, the Shopify company ID generated for ABC Supplies is stored in that field on the corresponding Xoro customer record.

**When to Use:** Configure this setting when you need to retain the Shopify company ID in Xoro for record identification and integration mapping.

**2.3. B2B Customer Sync Type**

**Purpose:** Determines which identifier Xoro uses to identify a customer when a new order is created in Shopify and synchronized to Xoro.

The available options are:

* **Sync B2B Company as Customer:** Uses the Shopify company ID to identify the corresponding customer in Xoro.
* **Sync B2B Customer as Customer:** Uses the Shopify customer ID to identify the corresponding customer in Xoro.
* **Sync B2B Location as Customer:** Uses the Shopify company location ID to identify the corresponding customer in Xoro.

**How It Works:**

When an order is created in Shopify, the integration uses the selected identification method to determine which Xoro customer record should be associated with the order.

**Example:**

Suppose ABC Supplies has one company in Shopify with two locations: a Main Office and a Warehouse.

* If **Sync B2B Company as Customer** is selected, the company identifier is used to identify the Xoro customer.
* If **Sync B2B Customer as Customer** is selected, the Shopify customer identifier is used.
* If **Sync B2B Location as Customer** is selected, the location identifier is used to identify the Xoro customer.

**When to Use:** Select the option that matches your customer structure in Xoro. Use company-level identification when the company represents the customer, or location-level identification when separate locations need to map to different Xoro customer records.

#### 3. Enhancements to Sync B2B Prices

The **Sync B2B Prices** settings control how Xoro pricing information is sent to Shopify B2B catalogs.

In this integration, Xoro price rules are used to determine the prices synchronized with Shopify catalogs. New checkboxes have been introduced to control the transmission of price adjustments and compare-at prices.

**3.1. Do Not Send Price Adjustment**

**Purpose:** Prevents price adjustments from being sent with Shopify B2B catalog price lists.

**How It Works:**

* When enabled, Xoro does not send price adjustments as part of the Shopify B2B catalog price lists.
* When disabled, price adjustments can be sent according to the configured pricing rules.

**When to Use:** Enable this option when you do not want Shopify B2B catalogs to receive price adjustment information from Xoro.

**3.2. Do Not Send Compare At Price in Catalog**

**Purpose:** Prevents compare-at prices from being sent with Shopify B2B catalog fixed prices.

**How It Works:**

* When enabled, compare-at prices are excluded from the fixed prices sent to Shopify B2B catalogs.
* When disabled, compare-at prices can be sent according to the applicable configuration and pricing logic.

**When to Use:** Enable this option when Shopify B2B catalogs should receive the applicable selling prices without compare-at prices.

#### 4. Advanced Settings

The Advanced Settings provide additional control over catalog synchronization, calculated price precision, and compare-at pricing.

**4.1. Fetch Price Catalog on a Recurring Basis**

**Purpose:** Automatically fetches price catalogs at recurring intervals.

**How It Works:**

The system periodically fetches the available price catalogs based on the configured time interval. This helps keep the catalog information synchronized without requiring every fetch to be initiated manually.

**When to Use:** Use this setting when price catalogs need to be refreshed regularly as part of the B2B pricing synchronization process.

**4.2. Round Up Calculated Price**

**Purpose:** Rounds the calculated B2B catalog price upward to two decimal places before sending it to Shopify.

**How It Works:**

When enabled, the calculated price is rounded upward to two decimal places before it is synchronized with Shopify.

**Example:**

If the calculated price is 125.341, the synchronized price is rounded upward to 125.35.

**When to Use:** Enable this setting when B2B catalog prices must be rounded upward to two decimal places.

**4.3. Send Compare At Price**

**Purpose:** Sends the original Xoro price, before markup or markdown calculations, to Shopify as the compare-at price.

**How It Works:**

When enabled, the integration sends the original Xoro price as the compare-at price while the calculated price is used as the applicable catalog price, subject to the other pricing settings.

**Example:**

Suppose the original Xoro price is 100.00 and a markup results in a calculated B2B price of 110.00.

* **Calculated Catalog Price:** 110.00
* **Compare-at Price:** 100.00

When this setting is enabled, the original price of 100.00 is sent to Shopify as the compare-at price.

**When to Use:** Enable this setting when the original Xoro price must be available in Shopify as the compare-at price for B2B catalog pricing.

#### 5. Summary

The B2B Customer Sync and pricing enhancements provide greater control over how Xoro customer information and B2B prices are synchronized with Shopify.

* **Enable B2B Customer Sync** allows companies in Xoro to be created as B2B companies in Shopify.
* **B2B Customer Sync Customer Custom Field** stores the Shopify company ID in a selected Xoro customer custom field.
* **B2B Customer Sync Type** determines whether incoming Shopify orders identify the Xoro customer using the company, customer, or location identifier.
* **Sync B2B Prices** settings control whether price adjustments and compare-at prices are sent to Shopify.
* **Advanced Settings** control recurring catalog fetching, upward price rounding, and sending the original Xoro price as the compare-at price.

Together, these settings help align customer identification, company and location information, and B2B catalog pricing between XoroERP and Shopify.

### How B2B Sync works

Turn on **Enable B2B Sync** in .

When enabled:

* orders are treated as **B2B orders**
* customers are matched by **Shopify Customer ID**
* **phone** and **email** are **not** used for matching
* a **Customer Identifier Code** is required in the mapped custom field

#### Company and location sync

If you enable **Enable B2B Company Sync**:

* Shopify **Company** syncs to Xoro as a **Parent Customer**
* Shopify **Locations** sync as **Child Customers** if you choose **Sync B2B Customer as Customer**
* or each location can be treated as an independent customer if you choose **Sync B2B Location as Customer**

Orders are created against the **customer/location**, not the company itself.

#### Pricing sync

If you enable **Sync B2B Prices**:

* Xoro can push pricing to Shopify at the **company** or **location** level
* **Default Price Sync Mapping** uses automatic location mapping
* **Price Sync Customer Field Map** uses custom fields for:
  * customer location ID
  * Shopify variant ID

#### Customer sync

If you enable **Enable Customer Sync**:

* a Xoro **Company** syncs to Shopify as a **Company** customer
* the company contact becomes the first synced contact

If you want, I can map this into a simple **“what syncs first, what syncs next”** flow.

#### Key Takeaway

> B2B Sync works effectively only when:

* Company structure is properly defined in Shopify
* Customer and location mapping is accurate
* Pricing rules are aligned with the selected configuration


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.xorosoft.com/xoroerp-1/connected-apps/shopify/installation-guide/configuration-settings/b2b-sync/general-settings.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
