Exchanges

Use case

The exchange functionality is thought to resolve the scenario when the customer is not happy with some of the lines received and would like to change some of them for another variant (One of the common example is because the size is too small or too big and they want to change it for a size bigger or smaller). The use case flow is usually generated by a call to the customer service and after the request to get a different variant for some of the lines a new order will be generated linked to the previous one with the aim to provide correct visibility and to manage refunds in case that returns are generated for exchange orders.

{
    "exchange": {
        "order_id": "100000000000001",
        "store_id": "Luma Retail Stores - Southeast",
        "lines": [
            {
                "id": "243",
                "line_number": "1"
            }
        ]
    }
}

Flow

The following flows are configurable at store granularity.

  1. Exchange items are directly send to the end customer without waiting that the exchanged lines are received by the warehouse.
  2. Exchange items are maintained ON HOLD until the exchanged lines have been received in good condition by the warehouse.

Solution considerations

  1. The Exchanged items are associated with a new order.
  2. This new order is linked to the previous one, you can find the relationship in the order updated message in the field original_order_id. Please, find in the Implementation section a message example of the magento.sales.order_management.updated with this information.
    {
     "order": {
         "id": "E00080001",
         "original_order_id": "100000000000001",
    
  3. This new order has the ZEROPAY payment method and the payment amount will be 0 for this type of orders.
  4. When a line is exchanged, this line is automatically flagged that must be returned in the following days.
  5. The type of order is accessible in a field called ‘origin’ with the constant ‘EX’
    {
     "order": {
         "id": "E00080001",
         "original_order_id": "100000000000001",
         "origin": "EX",
    

Configurable Exchanges features

The current exchanges features are available for all clients but should be activated/deactivated via feature flag.

Change shipping method

This feature allows to select a different shipping method for the reshipped order. This field is optional and in case that is not specified, the order will be shipped with the previous shipping method.

Note: the change of the shipping address will not impact the amount captured to the customer. Please remember that this is a zero price order. The shipping method must be part of the catalogue or available shipping methods.

{
    "exchange": {
        "order_id": "100000000000001",
        "store_id": "Luma Retail Stores - Southeast",
        "new_shipping_method": "EXPRESS"
        "lines": [
            {
                "id": "243",
                "line_number": "1"
            }
        ]
    }
}

Change shipping address

This feature allows to select a different shipping address for the reshipped order. This field is optional and in case that is not specified the order will be shipped with the previous shipping address. Note: MOM is not doing address validation so in case that it’s needed this will need to be validated before call send the message.

Note: MOM is not doing address verification, so it’s responsibility of the system, that trigger this messages, to do it if it is required.

{
    "exchange": {
        "order_id": "100000000000001",
        "store_id": "Luma Retail Stores - Southeast",
        "lines": [
            {
                "id": "243",
                "line_number": "1"
            }
        ],
        "new_shipping_address": {
            "address1": "7700 W Parmer Ln",
            "address2": "",
            "city": "Austin",
            "company_name": "Magento",
            "first_name": "John",
            "last_name": "Doe",
            "state": "TX",
            "zip": "78729"
        }
    }
}

Order ID

This field allows that in the case that the order is generated in a different system, you could specify the external order id generated with the aim of maintaining well synchronized the systems (please, be aware that the combination of store id / order id must be unique). In case that this field is not set, MOM will generate the order id automatically with a ‘R’ prefix.

{
    "exchange": {
        "order_id": "100000000000001",
        "store_id": "Luma Retail Stores - Southeast",
        "new_order_id": "2000000000000101"
        "lines": [
            {
                "id": "243",
                "line_number": "1"
            }
        ]
    }
}

Return Considerations

  1. The exchanged line is flagged in MCOM Admin to display that a return is not yet received for this line.
  2. A return of an exchange order should be only available when the line of the parent order is already returned.
  3. A return of an exchange item will not generate any refund when the line is returned.
  4. The money of an exchange line will be only refunded in the case that a return is received first for the parent line and then for the exchanged item.

Interface

To know more about the way that this entities are displayed out of the box in the MOM interface please take a look to the following user guide: Go to the User guide section