Skip to main content
All CollectionsAdvanced HelpIntegrationsDIY Integration
Orders & Invoices— Real-Time History from the ERP
Orders & Invoices— Real-Time History from the ERP

We list the systems already supported for real-time Orders and Invoices from your ERP and how to integration new back-office ERP systems.

João Estima avatar
Written by João Estima
Updated over a month ago

Live Orders and Live Invoices, provides real-time list of Orders/Invoices to logged users on your EvolutionX webstore. In the Orders module, customers can find there previous orders and their details. In Invoices module, customers can find the invoices and their balance, creating a payment and view their details. Live Orders replaces the normal EvolutionX Orders list and view.

New ERP Integrations for Live Orders/Invoices

We work either directly with the API for your ERP or through a partner integrator (who provides API support) to setup Live Endpoint for new systems. This typically is a fast-tracked development to ensure you are up and running quickly. Contact our team today to discuss your options and questions.

Content

Current ERP Systems with Live Orders/Invoices Integrations

The following systems are already integrated for Live Orders/Invoices and are easy to setup:

  • ECI Horizon

  • ECI DDMS

  • Acumatica

  • Prophet 21 by Epicor (P21 DCKAP Integrator, Cloras Integration)

  • Sap B1

  • BMI

  • Prima Software

  • Spruce

  • TIMS Software

  • Winman

  • Kore Kourier Integrator V2

  • Dynamics 365 using Flintech

  • Live Customer Account

Alternatives to Live Orders

EvolutionX has orders features built in. Here are some of the alternatives to using Live Orders from your ERP:

The following requests and responses are examples for Live Orders:

Live Orders List

Request Header

Notes:

  • Bearer Token is preferred but oAuth2 and other authorization types can be supported too.

  • The Method for the endpoint should be POST.

Example Request Header:

Content-Type: application/json
Accept: application/json
Authorization: Bearer Token or username & password

Request Body

Notes:

  • The Customer Code attribute will use the references of the ERP for the account number. It is not required for the ERP to store EvolutionX IDs for these entities. If needed, the EvolutionX Customer Account can store a GUID or Record ID in the Seller Reference as well (ask DevOps if you need this value in this integration).

  • Filters are required. The most important fields to support are:

    • customer_code — the ERP customer code as stored in the EvolutionX Customer Account Number attribute.

    • current_page & per_page (used for pagination)

    • order_id / customer_po / date_from & date_to (from and to dates, time is not required but we assume UTC unless specified)

Warning: The field “user_seller_reference” is null when the user has the “view all orders” permission.

Example Request Body

{
"evo_customer_id": "277504",
"evo_user_id": "27504",
"customer_code": "ACME001",
"seller_reference": "01",
"user_seller_reference": "01",
"filters": {
"order_id": "",
"customer_po": "",
"third_party_order_number": "",
"start_date": "2022-09-01T10:00:19Z",
"end_date": "2023-03-31T11:56:19Z"
},
"current_page": "1",
"per_page": "15"
}

Response Body

Notes:

  • Return record sort in order of order_date descending to ensure that recent orders are included in page 1 of results.

  • Not all fields are required in the response, the most critical ones are the following:

  1. order_id

  2. customer_code

  3. order_status_description

  4. order_date (time is not required but we assume UTC unless specified)

  5. sub_total

  6. tax_total

  7. total

  8. customer_po

  9. third_party_order_number

  • The return should have distinct order_id.

  • If there are no items to send, the record should be empty (without objects).

Warning: The field “user_seller_reference” is null when the user has the “view all orders” permission.

Example Request Body

{
"orders": [
{
"order_id": "S3085810",
"customer_code": "ACME001",
"order_type_description": "Quote",
"order_status_description": "Open",
"order_date": "2023-01-05T00:00:00",
"ship_date": "2023-01-17T00:00:00",
"discount_total": 90.34,
"sub_total": 90.34,
"tax_total": 5.42,
"total": 95.76,
"customer_po": "Duda",
"order_comments": "",
"third_party_order_number": "Evox001"
},
{
...
}
],
"total_orders": 200
}

Live Orders By ID View

Request Header

Notes:

  • Bearer Token is preferred but oAuth2 and other authorization types can be supported too.

  • The Method for the endpoint should be POST.

Example Request Header:

Content-Type: application/json
Accept: application/json
Authorization: Bearer Token or username & password

Request Body

Notes:

  • The Customer Code (EvolutionX Customer Account Number) and Order Id (EvolutionX Order Seller Reference) will use the references of the ERP. It is not required for the ERP to store EvolutionX IDs for these entities.

Warning: The field "user_seller_reference" is all filled but that can changed and a permission might take place like orders.

Example Request Body

{
"evo_customer_id": "277504",
"evo_user_id": "27504",
"customer_code": "ACME001",
"seller_reference": "01",
"user_seller_reference": "01",
"order_id": "S3085810"
}

Response Body

Notes:

  • Not all fields are required in the response, the most critical ones are the following:

  1. order_id

  2. customer_code

  3. billing_details

  4. shipping_details

  5. order_status_description

  6. order_date (we assume UTC unless specified)

  7. sub_total

  8. sales_tax

  9. total (sum of quantities ordered per SKU plus the tax)

  10. customer_po

  11. third_party_order_number

  12. order_lines

  • If there is no order for the customer, the response should empty.

  • The "tracking_information" will provide the status delivery details, to suppress this feature ignore this field.

  • The tracking_information.note has a limit of 150 characters.

{
"order_id": "S3085810",
"customer_code": "ACME001",
"billing_details": {
"customer_code": "ACME001",
"name": "Name, INC.",
"address1": "",
"address2": "",
"address3": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431"
},
"shipping_details": {
"customer_code": "ACME001",
"name": "Name, INC.",
"address1": "",
"address2": "",
"address3": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431"
},
"order_type_description": "Quote",
"order_status_description": "Open",
"order_date": "2023-01-05T00:00:00",
"ship_date": "2023-01-17T00:00:00",
"discount_total": 62,
"sub_total": 62,
"tax_total": 4.5,
"total": 66.5,
"ordered_by": "TAYLOR BUSDECKER",
"customer_po": "COMMUNITY",
"order_comments": "comment",
"third_party_order_number": "EVOX001",
"order_lines": [
{
"line_no": 1,
"product_id": "1000098",
"sku": "2W01102",
"description": "MLBK U1980-O-KK",
"note": "line note",
"uom": "EA",
"qty": "1",
"qty_shipped": "1",
"unit_price": 60.00,
"tax": 2.00,
"total": 62.00
}
],
"tracking_information": [
{
"carrier_account_number": "Carrier",
"delivery_charge": "",
"delivery_date": "2023-01-15T00:00:00",
"shipping_date": "2023-01-05T00:00:00",
"status": "Delivered",
"status_time": "2023-01-15T12:54:10",
"weight": "0.2kg",
"note": "Leaved delivery at the door.",
"tracking_number": "UP15501788",
"tracking_url": ""
}
]
}

The following requests and responses are examples for Live Invoices:

Live Invoices List:

Request Header

Notes:

  • Bearer Token is preferred but oAuth2 and other authorization types can be supported too.

  • The Method for the endpoint should be POST.

Example Request Header:

Content-Type: application/json
Accept: application/json
Authorization: Bearer Token or username & password

Request Body

Notes:

  • The Customer Code will use the references of the ERP. It is not required for the ERP to store EvolutionX IDs for these entities.

  • Filters are required. The most important fields to support are:

    • customer_code

    • current_page

    • per_page

    • invoice_id / customer_po / start_date & end_date (time is not required but we assume UTC unless specified)

Warning: The field “user_seller_reference” is always filled. While there is currently no specific permission tied to it, one may be introduced in the future.

Example Request Body

{
"evo_customer_id": "277504",
"evo_user_id": "27504",
"customer_code": "ACME001",
"seller_reference": "01",
"user_seller_reference": "01",
"filters": {
"invoice_id": "",
"customer_po": "",
"start_date": "",
"end_date": ""
},
"current_page": "1",
"per_page": "10"
}

Response Body

Notes:

  • Return record sort in order of invoice_date descending to ensure that recent invoices are included in page 1 of results.

  • Not all fields are required in the response, the most critical ones are the following:

  1. invoice_id

  2. customer_code

  3. billing_details

  4. shipping_details

  5. order_id

  6. invoice_date (we assume UTC unless specified)

  7. total

  8. sub_total

  9. sales_tax

  10. balance

  11. customer_po

  • The return should have distinct invoices_id.

  • If there are no items to send, the record should be empty (without objects).

{
"invoices": [
{
"invoice_id": "S009007634",
"customer_code": "ACME001",
"billing_details": {
"customer_id": "1795",
"name": "Name, INC.",
"address1": "",
"address2": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431"
},
"shipping_details": {
"customer_id": "1795",
"name": "Name, INC.",
"address1": "",
"address2": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431"
},
"order_id": "S3085810",
"invoice_status_description": "Open",
"invoice_date": "2022-12-19T00:00:00",
"duedate": "2023-03-19T00:00:00",
"discount_total": 21.17,
"sub_total": 21.17,
"tax_total": 1.32,
"total": 22.49,
"balance": 12.49,
"customer_po": "25126 T66"
},
{
...
}
],
"total_invoices": 220
}

Live Invoices By ID View:

Request Header

Notes:

  • Bearer Token is preferred but oAuth2 and other authorization types can be supported too.

  • The Method for the endpoint should be POST.

Example Request Header:

Content-Type: application/json
Accept: application/json
Authorization: Bearer Token or username & password

Request Body

Notes:

  • The Customer Code will use the references of the ERP. It is not required for the ERP to store EvolutionX IDs for these entities.

Warning: The field “user_seller_reference” is always filled. While there is currently no specific permission tied to it, one may be introduced in the future.

Example Request Body

{ 
"evo_customer_id": "277504",
"evo_user_id": "27504",
"customer_code": "ACME001",
"seller_reference": "01",
"user_seller_reference": "01",
"invoice_id": "S009007634"
}

Response Body

Notes:

  • Not all fields are required in the response, the most critical ones are the following:

  1. invoice_id

  2. customer_code

  3. billing_details

  4. shipping_details

  5. order_id

  6. invoice_date (we assume UTC unless specified)

  7. total

  8. sub_total

  9. sales_tax

  10. balance

  11. customer_po

  12. invoice_lines

  • If there are no items to send, the record should be empty (without objects).

{
"invoice_id": "S009007634",
"customer_code": "ACME001",
"billing_details": {
"customer_id": "1795",
"name": "Name, INC.",
"address1": "",
"address2": "",
"address3": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431"
},
"shipping_details": {
"customer_id": "1795",
"name": "Name, INC.",
"address1": "",
"address2": "",
"address3": "",
"city": "GIBSONBURG",
"state": "OH",
"postal_code": "43431",
},
"order_id": "S3085810",
"invoice_status_description": "Open",
"order_date": "2023-01-05T00:00:00",
"invoice_date": "2022-12-19T00:00:00",
"duedate": "2023-03-19T00:00:00",
"discount": 21.17,
"sub_total": 21.17,
"tax_total": 1.32,
"total": 22.49,
"balance": 12.49,
"customer_po": "25126 T66",
"note": "Invoice note",
"invoice_lines": [
{
"item_id": "1000098",
"sku": "2W01102",
"qty": "50",
"qty_shipped": "10",
"description": "(100) 42mm CSK",
"uom": "BOX",
"unit_price": "8.00",
"tax": 3.00,
"price": "83.00",
"note": "line note"
},
{
...
}
]
}

ERP DIY Integration

To use this feature you need the ERP DIY Integration App see the full article.

Contact the customer success team to discuss a new Live Orders/Invoices integration project.

Did this answer your question?