Configure the B2B Pricing plugin

Introduction

When using the Tinx B2B Pricing plugin for WooCommerce, you can extend the pricing configuration used in your data sync to better align with the built-in functionality of Business Central — rather than being limited by WooCommerce’s native setup.

The plugin allows you to apply customer-specific pricing, including pricing based on Customer Price Groups and Customer Discount Groups.

It supports the following pricing adjustments:

  • Set a fixed price for an individual customer.
  • Set a fixed price for a specific customer group.
  • Set a fixed price for all customers.
  • Set a campaign price for a certain period.

Besides the fixed pricing adjustments, the plugin offers these discount options:

  • Set a fixed discount percentage (%) for an individual customer.
  • Set a fixed discount percentage (%) on specific item groups in combination with the customer discount group.
  • Set a fixed discount percentage (%) for all customers.
  • Set a campaign discount for a certain period.

Install the plugin in WordPress

Install the Tinx B2B Pricing plugin. If you don't have access to our extension yet, please reach out to our support department: support@tinx-it.nl.

They can provide you with a zip file, which you can then upload as a plugin in WordPress.

Configuration Pricing Plugin

In the WordPress back-end you can find the Tinx B2B Pricing menu in the left menu bar. In the menu you will find the following elements:

  • Field Explanation
    ID Auto-increment field used as entry identifier in the API.
    Apply Price To

    Specifies the type of entity to which the price is assigned.

    Entity types: All Customers, Customer, Customer Price Group and Campaign.

    The entity types Customer, Customer Price Group and Campaign must be determined in the WordPress user (customer). We've added a section: Tinx B2B Customer Information (see screenshot).

    Price List Code Datetime field showing when the entry was last updated.
    Price Reference Specifies the entity to which the prices are assigned.
    SKU Specifies the identifier of the product.
    Minimum Qty Specifies the minimum quantity of the product.
    Unit Price Specifies the unit price of the product.
    Start Date Specifies the date from which the price is valid.
    End Date Specifies the last date that the price is valid.
    Allow Discount Specifies if a sales discount will be calculated when the price is offered.
    Last Updated

    Datetime field showing when the entry was last updated.

    GUID Unique text field (max 50 chars) used as an entry identifier in the API, not a true GUID.
  • Field Explanation
    ID Auto-increment field used as entry identifier in the API.
    Apply Discount To

    Specifies the type of entity to which the discount is assigned.

    Entity types: All Customers, Customer, Customer Discount Group and Campaign.

    The entity types Customer, Customer Disc. Group and Campaign must be determined in the WordPress user (customer). We've added a section: Tinx B2B Customer Information (see screenshot).

    Discount Reference Specifies the entity to which the discounts are assigned.
    Price List Code Free text field used to determine from which pricelist the price is sent.
    Discount Type

    Specifies the type of the product.

    Product types: All Items, Item and Item Discount Group.

    The product type Item Discount Group must be determined in the item. We've added a field in the section General: Discount Group (see screenshot).

    Item Reference Specifies the product(s) to which the discounts are assigned.
    Minimum Qty Specifies the minimum quantity of the product.
    Discount (%) Specifies the discount percentage for the product.
    Start Date Specifies the date from which the price is valid.
    End Date Specifies the last date that the price is valid.
    Last Updated Datetime field showing when the entry was last updated.
    GUID Unique text field (max 50 chars) used as an entry identifier in the API, not a true GUID.
  • Field Explanation
    Price Management > Sales Prices > Enable The pricing in the Sales Price table will overwrite the default pricing, if applicable.
    Price Management > Sales Discounts > Enable The pricing in the Sales Discounts table will overwrite the default pricing, if applicable.
    Price Management > Global > Apply Campaign Price to all Customers In Business Central, assigning all customers to a campaign is not a straightforward process. When this setting is activated, all campaigns apply to all customers.
    Price Management > Global > Disable fallback to parent SKU for variable products Forces pricing logic not to fallback on the parent SKU if the variable product has no SKU.
    Front-end > Tier Pricing

    Determine if you want to display a tiered pricing table on the product detailpage.

    There is also a shortcode available, allowing the table to be displayed anywhere on the product detail page, regardless of the above settings. The shortcode is as follows: [tinx_bulk_discount_table].

    Front-end > Global > Show Original Price The front-end pricing will display the default pricing as the regular price and the Tinx B2B pricing as the special price.
    Front-end > Global > Show on Sales Badge  
    Front-end > Advanced > Optimized Price Loading (OPL)
     
    Enable caching of price entries to reduce database queries. Updated entries via the API are re-cached to improve performance of price calculations.
    Front-end > Advanced > Refresh Interval
     
    Defines the frequency of cache clearing or allows manual cache clearing.
    Front-end > Advanced > Debug Logging

     
    Enable or disable logging of API requests and errors to assist with troubleshooting.
    Front-end > Advanced > Log Cleanup (LC)
     
    Enable this setting to control how long debug logs are retained before being deleted
    Front-end > Advanced > Log Retention Period
     
    Defines the frequency of log deletion.
    Front-end > Advanced > LC Status
     
    Displays status and schedule (next run, interval, last execution) of the cache/log cleanup task.
    Front-end > Advanced > Data Management
     
    Manually delete all entries in the Sales Price or Sales Discount table.


Business Central - REST API

Business Central communicates with the B2B Pricing Plugin via the REST API. You have to create a WooCommerce REST key to facilitate this communication. To set this up, please read this article. Once you've installed the Tinx WooCommerce Connector in Business Central, you can activate our default messages in the Dashboard Job: WOO-OUT-B2B-PRICING.

We've created the following REST endpoints if you want to created your own messages:

  •  
    • POST /wp-json/wc/v3/tinx-sales-price
      DELETE /wp-json/wc/v3/tinx-sales-price/7 or /wp-json/wc/v3/tinx-sales-price/{541762FA-88EF-EF11-9345-7C2E52344121212121234}

      Request Body (POST):

      {
          "sku": "1896-S",
          "apply_price_to": "Customer Price Group",
          "price_reference": "RETAIL",
          "min_qty": "2.00",
          "unit_price": "300.00",
          "start_date": "2025-12-13",
          "end_date": "2026-05-14",
          "allow_discount": "1",
          "price_list_code": "PL00001",
          "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121234}"
      }   
    • POST

      {
          "success": true,
          "data": {
              "id": 104,
              "entry": {
                  "id": "104",
                  "apply_price_to": "Customer Price Group",
                  "price_reference": "RETAIL",
                  "price_list_code": "PL00001",
                  "sku": "1896-S",
                  "min_qty": "2",
                  "unit_price": "300.00",
                  "start_date": "2025-12-13",
                  "end_date": "2026-05-14",
                  "allow_discount": "1",
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121234}",
                  "last_updated_at": "2025-08-28 23:34:34",
                  "action": "create"
              }
          }
      }  

      DELETE

      {
      } 
  •  
    • POST /wp-json/wc/v3/tinx-sales-discount
      DELETE /wp-json/wc/v3/tinx-sales-discount/15 or /wp-json/wc/v3/tinx-sales-discount/{541762FA-88EF-EF11-9345-7C2E52344121212121238}

      Request Body (POST):

      {
          "apply_discount_to": "Customer Discount Group",
          "discount_reference": "DET.HANDEL",
          "discount_item_type": "Item",
          "discount_item_reference": "1896-S",
          "discount_pct": "13.00",
          "min_qty": "1.00",
          "start_date": "2025-12-13",
          "end_date": "2025-12-14",
          "price_list_code": "PL00001",
          "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121238}"
      }     
    • POST

      {
          "success": true,
          "data": {
              "id": 38,
              "entry": {
                  "id": "38",
                  "apply_discount_to": "Customer Discount Group",
                  "discount_reference": "DET.HANDEL",
                  "price_list_code": "PL00001",
                  "discount_item_type": "Item",
                  "discount_item_reference": "1896-S",
                  "discount_pct": "13",
                  "min_qty": "1",
                  "start_date": "2025-12-13",
                  "end_date": "2025-12-14",
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121238}",
                  "last_updated_at": "2025-08-28 23:49:58",
                  "action": "create"
              }
          }
      }

      DELETE

      {
      }     
  •  
    • POST /wp-json/wc/v3/tinx-sales-price/batch

      Request Body (POST):

      {
          "upsert": [
              {
                  "apply_price_to": "Customer Price Group",
                  "price_reference": "RETAILS",
                  "price_list_code": "PL00001",
                  "sku": "1898-S",
                  "min_qty": "1",
                  "unit_price": "550.00",
                  "start_date": "2025-12-13",
                  "end_date": "2025-12-14",
                  "allow_discount": "1",
                  "guid": "95ad83bd-8943-4242-bf65-a29c77289"
              },
              {
                  "apply_price_to": "Customer Price Group",
                  "price_reference": "RETAILS",
                  "price_list_code": "PL00001",
                  "sku": "1896-S",
                  "min_qty": "3",
                  "unit_price": "300.00",
                  "start_date": "2025-12-13",
                  "end_date": "2025-12-14",
                  "allow_discount": "1",
                  "guid": "95ad83bd-8943-4242-bf65-a29c772"
              }
          ],
          "delete": [
              {
                  "guid": "95ad83bd-8943-4242-bf65-a29c7728"
              }
          ]
      }
    • {
          "create": [
              {
                  "action": "create",
                  "id": 107,
                  "guid": "95ad83bd-8943-4242-bf65-a29c77289",
                  "entry": {
                      "id": "107",
                      "apply_price_to": "Customer Price Group",
                      "price_reference": "RETAILS",
                      "price_list_code": "PL00001",
                      "sku": "1898-S",
                      "min_qty": "1",
                      "unit_price": "550.00",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "allow_discount": "1",
                      "guid": "95ad83bd-8943-4242-bf65-a29c77289",
                      "last_updated_at": "2025-08-28 23:59:37"
                  }
              }
          ],
          "update": [
              {
                  "action": "unchanged",
                  "id": 105,
                  "guid": "95ad83bd-8943-4242-bf65-a29c772",
                  "entry": {
                      "id": "105",
                      "apply_price_to": "Customer Price Group",
                      "price_reference": "RETAILS",
                      "price_list_code": "PL00001",
                      "sku": "1896-S",
                      "min_qty": "3",
                      "unit_price": "300.00",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "allow_discount": "1",
                      "guid": "95ad83bd-8943-4242-bf65-a29c772",
                      "last_updated_at": "2025-08-28 23:56:32"
                  }
              }
          ],
          "delete": [
              {
                  "action": "delete",
                  "id": 106,
                  "guid": "95ad83bd-8943-4242-bf65-a29c7728",
                  "entry": {
                      "id": "106",
                      "apply_price_to": "Customer Price Group",
                      "price_reference": "RETAILS",
                      "price_list_code": "PL00001",
                      "sku": "1898-S",
                      "min_qty": "1",
                      "unit_price": "550.00",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "allow_discount": "1",
                      "guid": "95ad83bd-8943-4242-bf65-a29c7728",
                      "last_updated_at": "2025-08-28 23:57:28"
                  }
              }
          ],
          "errors": {
              "create": [],
              "update": [],
              "delete": []
          }
      }
  •  
    • POST /wp-json/wc/v3/tinx-sales-discount/batch

      Request Body (POST):

      {
          "upsert": [
              {
                  "apply_discount_to": "Customer Discount Group",
                  "discount_reference": "DET.HANDEL",
                  "discount_item_type": "Item",
                  "discount_item_reference": "1896-S",
                  "discount_pct": "18.00",
                  "min_qty": "1.00",
                  "start_date": "2025-12-13",
                  "end_date": "2025-12-14",
                  "price_list_code": "PL00001",
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121240}"
              },
              {
                  "apply_discount_to": "Customer Discount Group",
                  "discount_reference": "DET.HANDEL",
                  "discount_item_type": "Item",
                  "discount_item_reference": "1896-S",
                  "discount_pct": "13.00",
                  "min_qty": "5.00",
                  "start_date": "2025-12-13",
                  "end_date": "2025-12-14",
                  "price_list_code": "PL00001",
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121239}"
              }
          ],
          "delete": [
              {
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121238}"
              }
          ]
      }  
    • {
          "create": [
              {
                  "action": "create",
                  "id": 40,
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121240}",
                  "entry": {
                      "id": "40",
                      "apply_discount_to": "Customer Discount Group",
                      "discount_reference": "DET.HANDEL",
                      "price_list_code": "PL00001",
                      "discount_item_type": "Item",
                      "discount_item_reference": "1896-S",
                      "discount_pct": "18",
                      "min_qty": "1",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121240}",
                      "last_updated_at": "2025-08-29 00:08:31"
                  }
              }
          ],
          "update": [
              {
                  "action": "update",
                  "id": 39,
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121239}",
                  "entry": {
                      "id": "39",
                      "apply_discount_to": "Customer Discount Group",
                      "discount_reference": "DET.HANDEL",
                      "price_list_code": "PL00001",
                      "discount_item_type": "Item",
                      "discount_item_reference": "1896-S",
                      "discount_pct": "13",
                      "min_qty": "5",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121239}",
                      "last_updated_at": "2025-08-29 00:08:31"
                  }
              }
          ],
          "delete": [
              {
                  "action": "delete",
                  "id": 38,
                  "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121238}",
                  "entry": {
                      "id": "38",
                      "apply_discount_to": "Customer Discount Group",
                      "discount_reference": "DET.HANDEL",
                      "price_list_code": "PL00001",
                      "discount_item_type": "Item",
                      "discount_item_reference": "1896-S",
                      "discount_pct": "18",
                      "min_qty": "1",
                      "start_date": "2025-12-13",
                      "end_date": "2025-12-14",
                      "guid": "{541762FA-88EF-EF11-9345-7C2E52344121212121238}",
                      "last_updated_at": "2025-08-29 00:06:52"
                  }
              }
          ],
          "errors": {
              "create": [],
              "update": [],
              "delete": []
          }
      }

We've modified the following default WooCommerce REST endpoints:

  • POST /wp-json/wc/v3/customers
    PUT /wp-json/wc/v3/customers/25

    Request Body (POST/PUT):

        
    ...
    "meta_data": [
    {
     "key": "tinx_b2b_customer_no",
     "value": "12396"
    },
    {
     "key": "tinx_b2b_customer_price_group",
     "value": "Wholesale"
    },
    {
    "key": "tinx_b2b_customer_discount_group",
    "value": "Electronics"
    },
    {
    "key": "tinx_b2b_payment_method",
    "value": "Invoice"
    },
    {
    "key": "tinx_b2b_shipment_method",
    "value": "PostNL"
    },
    {
    "key": "tinx_b2b_allow_discount",
    "value": "1"
    },
    {
    "key": "tinx_b2b_campaign",
    "value": ""
    }
    ]     
    ...
        
  • POST /wp-json/wc/v3/products
    PUT /wp-json/wc/v3/products/133

    Request Body (POST/PUT):

        
    ...
    "meta_data": [
    {
     "key": "_tinx_item_discount_group",
     "value": "Shoes"
    }
    ]     
    ...