This guide provides a comprehensive overview of how the ERP integrations operate and includes special considerations
where applicable.
Contents
Before a customer is synced, the customer must have placed an order with you. During a synchronization, MidwayPlus evaluates all
customers who have placed an order with you where we do not yet have your ERP's internal Customer ID. First, the customer is searched for
in your ERP. If the customer is not found, a customer record is created. After being found or created, the customer's internal
ID is stored in MidwayPlus for future syncs. The internal Customer ID, also referred to as the Erp Customer Number, can also
be viewed and managed manually in the Other Settings of customer, or provided in advance when inviting a customer. Setting
the ID ahead of time can be useful to prevent the creation of duplicate customers in your ERP in cases where the customer's information
does not match your ERP exactly.
Retail Customers
Retail customers are optionally synced to a single underlying customer in your ERP, synced individually.
When created individually, the unique identifier depends on the underlying ERP. This is configured by MidwayPlus during setup.
Special Considerations
NetSuite Field |
MidwayPlus Field |
Notes |
Company Name |
Customer name |
|
Subsidiay |
Subsidiary configured in NetSuite integration settings |
This value is configured during your NetSuite integration by MidwayPlus. |
IsPerson |
True for retail customers, default for b2b |
NetSuite generally displays this field as "Type" with values "Individual" or "Company" |
Email |
The customer's email |
Does not apply to B2B orders |
First Name/Last Name |
Ship-to address first and last name |
Does not apply to B2B orders |
Category |
Hardcoded to Category with Id 1 |
|
Address |
The customer's address |
Both a default billing and default shipping address record are created. |
Other
- The internal record ID is not shown in the UI by default. The ID can be viewed for many records by opening
the record and extracting it from the page URL. It can also be exposed in the UI via settings. More
information is available
here.
-
NetSuite requires a first and last name for new customers. Since MidwayPlus allows for multiple
users on a customer account the primary account holder is not always clear, and the First and Last
name are set to an underscore (_).
- The customer category is a required field. MidwayPlus uses the category with ID 1.
- For retail customers, the customer's email is used as the unique identifier.
- Because MidwayPlus does not require two names during a retail checkout, if less than 2 are provided
the required Last Name is set to an underscore (_).
QuickBooks Field |
MidwayPlus Field |
Notes |
Name |
Customer's Name |
Normalized, truncated at 41 characters |
Billing Addr1, Addr2, Addr3, etc. |
Customer's Default Address Line 1, Address Line 2 |
The address is populated into Addr1, Addr2, Addre3 as space allows |
Billing City |
Customer's Default Address City |
Truncated to 31 characters. |
Billing State |
Customer's Default Address Subdivision Name |
Subdivision (i.e. state, province, etc.) is limited to 21 characters and uses the common name.
E.g.: "New York", or "Saskatchewan"
|
Billing Postal Code |
Customer's Default Address Postal Code |
Truncated to 13 characters |
Billing Country |
Customer's Default Address Country Name |
Truncated to 31 characters, the Country common name. E.g.: "United States" or "Canada" |
Other
-
QuickBooks has a strict textual requirements and does not allow accented characters or many other characters and
symbols like angled quotes
“
, text is normalized based on Normalization Form KD described
here
-
MidwayPlus can only search for customers by
FullName
or ListId
and therefore the
customer's name is used as the unique identifier when the Id is not known.
- The internal QuickBooks record ID, also called the
ListId
is not made available in the UI. It looks
like 80001C34-5550612455
Before an order can be synced, the related customer must be synced. For some integrations, the related products must
also be synced and have a known internal product ID. After the order is syncted, the order ID is stored in MidwayPlus
to be queried late to determine when the order has been fulfilled.
Special Considerations
NetSuite Field |
MidwayPlus Field |
Notes |
Memo |
n/a |
Set to "MidwayPlus" |
ExternalId |
Order Number |
|
OtherRefNum |
Purchase order number |
|
Order Status |
Pending Fulfillment |
|
ShipMethod |
Shipping method |
NetSuite requires the internal shipping method Id, MidwayPlus maps your NetSuite methods internally. |
ShippingAddress |
Ship-to address |
Addr1, Addr2, Addressee, City, State (code), Country, Zip, AddrPhone, as well as a combined "AddrText" field are all populated. |
SalesRep |
|
For customer's with sales rep features enabled, the user's rep Id is used here |
Other
-
MidwayPlus can optionally set other custom fields to hardcoded values.
QuickBooks Field |
MidwayPlus Field |
Notes |
RefNumber |
Order Number |
|
Bill Address |
The order's ShipTo address |
Phone |
Ship Address |
The order's ShipTo address |
Phone number is put in the Note |
ShipMethodRef |
Shipping method |
QuickBooks requires pre-defined shipping methods, MidwayPlus maps your QuickBooks methods internally. |
Other
MidwayPlus queries open orders with a known internal ERP ID to determine if the order has been fulfilled. Once fulfilled,
MidwayPlus imports tracking information and ships the order in MidwayPlus. Fulfillment goes through the same logic
as "Shipping Complete" or "Partially Shipping" an order from the orders page. In the event the order has "Pre-pay" terms
and is shipping backordered lines that are not yet paid for, failure to collect payment will still ship and invoice the
relevant lines, and begin the failed payment flow, sending a message to your customer allowing them to retry payment
or use a different payment method.
Special Considerations
NetSuite
-
MidwayPlus determines what items have shipped by looking at
itemFulfillment
records. The
itemFulfillment
records must have a tracking number.
-
Optionally, your connection can be configured to use a secondary field for the tracking number in place
of the NetSuite default.
QuickBooks Desktop
-
MidwayPlus determines what items have shipped by looking at the order's
Other
field
which is treated as the tracking number.
-
Unfortunately, QuickBooks does not make a distinction for partial shipments, and thus if a tracking number
is found we assume the order is shipped complete.
Inventory levels and internal IDs of products or services are synced to MidwayPlus for all items in MidwayPlus that are active.
Where available, MidwayPlus uses the quantity on hand less the quantity on sales orders to determine the available quantity.
Where reasonably supported, MidwayPlus will query only the items that exist in MidwayPlus. In some integrations, all products
are pulled to compare to current MidwayPlus IDs or inventory levels.
Special Considerations
NetSuite
-
MidwayPlus uses SuiteQL to query for Active items. Not all item types have a
TotalQuantityOnHand
and those without will not update the MidwayPlus quantity.
-
MidwayPlus by default queries the
FullName
as the part number, however a different field, such as ItemId
can be used instead. Since NetSuite does not enforce
uniqueness on the FullName, duplicates may result in unexpeced or undesirable quantity
levels in MidwayPlus
- The internal product ID is required for order creation.
QuickBooks Desktop
-
MidwayPlus supports sync of both Inventory Items and Inventory Assembly Items. This setting
can be configured by MidwayPlus during setup globally or per product.
-
By default, items are considered Inventory Items.
- The internal product ID is not required for order creation, and is not saved by MidwayPlus.
MidwayPlus currently supports synchronizing payments made via Stripe to QuickBooks and is not enabled by default. Payments are
synchronized after they have been paid out by Stripe.
- Payments are synced to the Customer Payments section, also known as the Recieve Payments section.
-
The Stripe Payment Intent ID is put in both the
RefNumber
and Memo
fields. Note that
RefNumber is not long enough for the full payment intent ID.
- If the related customer is not known, the transaction is sent without a customer reference ID, which will fail to be imported,
and be listed as a synchronization error in your integration records.
- Transactions are imported with
IsAutoApply
set to false.
- Upon request, MidwayPlus can configure the Deposit to account ref globally for for synced payments.