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.
-
Step 1: Go to your WordPress back-end.
a) Go to 'Plugins' (in the left menu bar).
b) Click on 'Add New Plugin'.
1) Click on 'Upload Plugin'.
2) Click on 'Choose File' and select the file you received from our support team.
3) Click on 'Install Now'. -
Step 2: Activate the Plugin
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/25Request 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/133Request Body (POST/PUT):
... "meta_data": [ { "key": "_tinx_item_discount_group", "value": "Shoes" } ] ...