Skip to main content

Monta - Data Mapping & Synchronisation

A comprehensive technical guide to the MontaWMS (Montapacking) integration. Covers the two integration "flavours" (Simple vs. Full), sync frequencies, stock calculation logic, and detailed field mappings.

Marc de Graaf avatar
Written by Marc de Graaf
Updated yesterday

๐Ÿ”— MontaWMS: Data Mapping & Synchronisation

This guide details the data flow between MontaWMS and Optiply. Unique to this integration, there are two distinct setup "flavours" depending on how much data you wish to sync.

โฑ๏ธ Synchronisation General Board

Option 1: Simple Flavour (Purchasing Only)

This setup focuses solely on Purchase Order management and receiving.

  • Requirement: You must manually match Supplier IDs in Optiply with your Monta Supplier Codes.

Entity

Direction

Frequency

Buy Orders and Buy Order Lines

Optiply โ†’ Monta

Every 15 min

Buy Orders and Buy Order Lines

Monta โ†’ Optiply

Every 30 min

Receipt Lines

Monta โ†’ Optiply

Every 30 min

Option 2: Full Flavour (Complete Data)

This setup synchronises your entire catalogue, suppliers, and sales history.

Entity

Direction

Frequency

Products

Monta โ†’ Optiply

Every 30 min

Product Deletions

Monta โ†’ Optiply

Every 30 min

Suppliers

Monta โ†’ Optiply

Every 30 min

Supplier Products

Monta โ†’ Optiply

Every 30 min

Sell Orders

Monta โ†’ Optiply

Every 30 min

Sell Order Deletions

Monta โ†’ Optiply

Every 30 min (*1)

Buy Orders and Buy Order Lines

Optiply โ†’ Monta

Every 15 min

Buy Orders and Buy Order Lines

Monta โ†’ Optiply

Every 30 min

Buy Order Lines Deletions

Monta โ†’ Optiply

Every 30 min

Receipt Lines

Monta โ†’Optiply

Every 30 min

(*1) We only sync Sell Order deletions if the order is marked Deleted:true in Monta. This does NOT apply to individual lines; we do not sync deleted lines


โš™๏ธ Options and Features (Configuration)

The following settings are available to customise the integration logic. These options are not visible in the front-end. Please contact Customer Support to adjust these variables.

1. Products: Stock In Transit

  • Variable: use_StockInTransit (Default: false)

  • Description: Determines if we include "Stock in Transit" in your available stock level.

  • Logic: StockLevel = Stock.StockAvailable + Stock.StockInTransit.

2. Products: Sync Minimum Stock

  • Variable: sync_minimum_stock (Default: false)

  • Description: Determines if we map the MinimumStock field from Monta to Optiply.

3. Products: Return Forecasts

  • Variable: use_return_forecasts (Default: false)

  • Description: Determines if we include forecasted returns in your available stock level.

  • Logic: StockLevel = StockLevel + ReturnQuantity (Calculated based on the last 30 days of returns).

4. Supplier Products: Custom Name Mapping

  • Variable: No default variable name provided in text, but logic exists.

  • Description: Allows the customer to decide if the Supplier Product Name should be mapped from the default field (product.Description) or from CustomField1 in Monta.

5. Supplier Products: Delivery Time Sync

  • Variable: sync_leadTime_supProducts (Default: false)

  • Description: An optional flag that allows customers to sync supplier product lead times from Montapacking to Optiply.

  • Logic: When enabled, the LeadTime field from Monta is mapped to deliveryTime in Optiply's Supplier Products.

6. Buy Order Lines: Delete Approved Non-Received

  • Variable: del_bol_completed (Default: false)

  • Description: Determines if we should delete Buy Order Lines from OPEN buy orders that have been marked as "Approved" but have 0 products received.

  • Use Case: This helps clean up order lines that were approved administratively but never physically arrived.


๐Ÿ—บ๏ธ Data Mapping Details

1. Products

Optiply

Monta

Logic / Notes

Name

Description

-

SKU Code

Sku

-

EAN Code

Barcodes

Takes the first barcode from the array.

Price

SellingPrice

-

Unlimited Stock

false

Hardcoded.

Stock Level

Calculated

if use_StockInTransit = true THEN stockLevel = Stock.StockAvailable + Stock.StockInTransit

Otherwise stockLevel = Stock.StockAvailable

if f use_return_forecast = true THEN stockLevel = stockLevel + returnQuantity

Status

Calculated

If a product is deleted/missing in Monta, we set status = disabled.

Remote ID

productId

-

Note: Products inactive in Monta are not synced. If a product status changes to Inactive in Monta, you must manually update it in Optiply.

2. Suppliers

Optiply

Monta

Name

Title

Email

AddressEmail

Remote ID

Code

3. Supplier Products

Optiply

Monta

Logic / Notes

Name

product.Description

-

SKU Code

product.Sku

-

EAN Code

product.Barcodes

We take the First barcode from the array.

Price

product.PurchasePrice

-

Lot Size

product.PurchaseStepQty

-

Supplier ID

optiplyWebshopSupplierId

Internal link.

Product ID

optiplyWebshopProductId

Internal link.

Status

enabled

Always mapped as "enabled" if the link exists.

Article Code

SupplierProductCode

-

Weight

WeightGrammes

-

Volume

Calculated

(LengthMm * WidthMm * HeightMm) / 1000

Delivery Time

product.LeadTime

Only mapped if sync_leadTime_supProducts is enabled.

โš ๏ธ Important Limitation:

No Multiple Supplier Products: Each product can have only one Supplier Code in Montapacking. Consequently, it will have only one Supplier Product in Optiply.

  • If you change the Supplier Code in Monta, we delete the previous supplier product in Optiply and create a new one.

  • If you simply delete the Supplier Code in Monta, the corresponding supplier product is deleted in Optiply.

4. Sell Orders

Optiply

Monta

Notes

Total Value

0

Not mapped.

Placed Date

Received

-

Completed Date

Shipped

If Shipped is empty, we map this to the Received date.

Remote ID

WebshopOrderId

-

5. Sell Order Lines

Optiply

Monta

Notes

Product ID

Sku

-

Quantity

OrderedQuantity

-

Subtotal Value

0

Monta does not retrieve this value, so it is hardcoded to 0.

โš ๏ธ Note on Updates:

We do not sync changes to Sell Order Lines (e.g., quantity changes, deletions, or new lines) after the initial order creation. The order snapshot is taken once and not updated.

6. Buy Orders (Export: Optiply โ†’ Monta)

Optiply

Monta

Notes

Buy Order ID

inboundForecastGroup.Reference

-

Supplier ID

inboundForecastGroup.SupplierCode

In "Full Flavour", this maps from supplier.remoteId.

Placed Date

inboundForecastGroup.Created

-

Delivery Date

inboundForecast.DeliveryDate

Calculated: Placed Date + Supplier Delivery Time.

Sorting: Buy Order Lines are sorted by SKU (Ascending) when sent to Monta to help warehouse staff match lines easily.

7. Buy Order Lines (Export: Optiply โ†’ Monta)

Optiply

Monta

Logic / Calculation

Delivery Date

inboundForecast.DeliveryDate

Calculated: buyOrder.placed + supplier.deliveryTime

SKU Code

inboundForecast.Sku

-

Quantity

inboundForecast.Quantity

-

โš ๏ธ Sorting Logic:

We sort Buy Order Lines by SKU Code (Ascending) when sending the buy orders to Montapacking.

  • Reason: This allows you to more easily match lines between the Optiply Frontend and the Montapacking Frontend, as our frontend allows sorting by SKU.

8. Buy Orders (Import: Monta โ†’ Optiply)

Optiply

Monta

Logic / Notes

Supplier ID

inboundForecastGroup.SupplierCode

-

Placed Date

inboundForecastGroup.Created

-

Remote ID

inboundForecastGroup.Reference

-

Total Value

0

Monta API does not retrieve any value we could map for this field.

Completed

Calculated

If all Buy Order Lines have Approved= true

โ†’ Then optiply.completed = DateNow().

โš ๏ธ Limitation: Monta API does not support retrieving Buy Order deletions. If you delete a PO in Monta, it will not be deleted in Optiply.

โš ๏ธDo not change the reference/PoNumber in Monta.

  • We will not be able to match our buyOrderID with Montapacking. Reference to get updates or to get any itemDeliveries.

  • That order will be doubled in Optiply. When syncing buyOrders from Monta, that unknown reference will be seen as a non-existent order in Optiply and it will be created here based on that.

9. Buy Order Lines (Import: Monta โ†’ Optiply)

Optiply

Monta

Logic / Notes

Product ID

inboundForecast.Sku

-

Quantity

inboundForecast.Quantity

-

Subtotal Value

0

Monta API does not retrieve any value we could map for this field.

Buy Order ID

Optiply.buyOrderId

Internal link to the parent order.

Expected Delivery

inboundForecast.DeliveryDate

Also maps inboundForecast.ExpectedDeliveryDate.

10. Receipt Lines

Optiply

Monta

Quantity

inbounds.Quantity

Occurred

inbounds.Created

Remote ID

inbounds.Id


โ“ Frequently Asked Questions (FAQs)

Why aren't my inactive products updating?

Monta does not send data for products marked as "Inactive." Consequently, Optiply cannot "see" that the status has changed. You must manually disable these products in Optiply to match Monta.

Can I have multiple suppliers for one product?

No. The Monta architecture allows only one Supplier Code per product. Optiply mirrors this constraint; if you change the supplier in Monta, we delete the old supplier link in Optiply and create the new one.

Why are my Sell Orders not updating?

We do not sync changes to Sell Orders after the initial import. If you edit a line, add a product, or delete a line in a Sell Order within Monta, that change is not reflected in Optiply.

Did this answer your question?