Skip to content

Exchanges (RMA)

An Exchange (also called an RMA Exchange) allows customers to return a product and receive a replacement item instead of a refund. ShipEdge supports two types of exchanges to fit different business needs:

  • Exchange on Received: Send the replacement after receiving the returned item
  • Exchange Now: Send the replacement immediately, before receiving the return

Exchanges help maintain customer satisfaction while ensuring inventory accuracy and proper product flow.

Customer Satisfaction

Quickly resolve product issues without forcing customers to repurchase or wait for refunds.

Inventory Control

Track both the returned item and the replacement order in a single workflow.

Flexible Options

Choose immediate shipment or wait for return based on your business policy.

Linked Records

Exchanges are automatically linked to the original return for complete audit trails.


Wait for Return, Then Ship Replacement

Use this when you want to verify the returned item before sending the replacement.

Best For:

  • High-value products
  • Preventing fraud or abuse
  • When inventory is limited
  • Ensuring the returned item is actually received

How it works:

  1. Customer initiates a return
  2. System creates a return order (RMA)
  3. Customer ships the item back
  4. Warehouse receives and inspects the return
  5. After inspection, system releases the replacement order
  6. Replacement order ships to customer

Warehouse Processing:

  • The replacement order is created with editxao = '1' (hold until processed)
  • Order stays in PENDING status until the return is processed
  • Once warehouse processes the return, the exchange order moves to warehouse queue

Ship Replacement Immediately

Use this for immediate customer satisfaction without waiting for the return.

Best For:

  • Trusted, repeat customers
  • Lower-value products
  • Competitive customer service
  • Reducing customer wait time

How it works:

  1. Customer initiates a return with exchange
  2. System creates a return order (RMA)
  3. Immediately creates and releases the replacement order
  4. Replacement order ships right away
  5. Customer receives replacement while returning the original
  6. Warehouse processes the return when it arrives

Warehouse Processing:

  • The replacement order is created with editxao = '0' (ship immediately)
  • Order goes directly to warehouse queue for picking
  • Customer receives replacement faster

  1. Start from a Shipped Order

    Navigate to Shipped Orders (/shipped_orders.php) and locate the order the customer wants to exchange. The order must be in SHIPPED status.

  2. Initiate the Return

    Click on the order to view details, then click “Initiate return”. This opens the return creation form.

  3. Select Items to Return

    Choose which SKUs the customer is returning. For each SKU:

    • Enter the quantity being returned
    • Specify QtyGood (if sellable) and QtyHurt (if damaged)
    • Add any comments about the return reason
  4. Choose Exchange Type

    In the Request Type field, select:

    • Exchange_on_Received: To wait for the return before shipping replacement
    • Exchange_Now: To ship the replacement immediately
  5. Configure the Replacement Order

    The system automatically creates a replacement order based on the returned items:

    • Order number gets a _XCHG suffix (e.g., ORDER123_XCHG)
    • Same SKUs and quantities as the return
    • Same shipping address as the original order
    • Order status: HOLD (if Exchange on Received) or PENDING (if Exchange Now)
  6. Review and Edit the Exchange Order (Optional)

    Click “Continue” to review the exchange order. You can modify:

    • Shipping address (if customer moved)
    • Shipping method
    • Order items (if exchanging for different SKUs)
    • Special instructions
  7. Submit the Exchange

    Click “Submit” or “Process Order” to finalize:

    • Exchange on Received: Order stays in hold until return is processed
    • Exchange Now: Order immediately enters the warehouse queue
  8. Optional: Generate Return Label

    If you want to provide a prepaid return label, check “Generate label” before submitting. The system creates a return shipping label and can email it to the customer.


Access the exchanges list at /All_Orders_rs_list.php:

Page Title: “Exchanges”

What You See:

  • All replacement orders created from returns
  • RMA# linked to each exchange
  • Order status and shipping information
  • Ability to search by Shipping#, Order#, Reference#

Search Filters:

  • Shipping#: Find by replacement order shipping number
  • Order Date: Filter by date range
  • Basic Search: Search across multiple fields

Exchanges follow the standard order workflow with these key statuses:

StatusDescriptionNext Action
HOLD (64)Exchange on Received - waiting for return to be processedWarehouse processes return
PENDING (5)Exchange Now - ready for warehouse processingWarehouse picks and packs
PROCESSING (8)Warehouse is preparing the exchangeWarehouse ships order
SHIPPED (9)Exchange has been sent to customerCustomer receives item
CANCELLEDExchange was cancelledNo further action

Every exchange is linked to its original return:

From the Return View (Retun_ordersview_seller.php):

  • See “View exchange” link
  • Shows the replacement order number
  • Indicates if exchange is pending edit (editxao = 1) or shipped

From the Exchange View (All_Orders_rs_list.php):

  • See the RMA# associated with the exchange
  • Click RMA# to view the return details
  • Track both sides of the transaction

Scenario 1: Exchange on Received (Safe Approach)

Section titled “Scenario 1: Exchange on Received (Safe Approach)”

Situation: Customer ordered a jacket in size Medium but needs size Large. Your policy is to verify returns before sending replacements.

Process:

  1. Customer contacts you requesting an exchange
  2. You create an Exchange on Received return
  3. System creates replacement order with status HOLD (64)
  4. Customer ships the Medium jacket back
  5. Warehouse receives the return and processes it (marks as Good/Hurt)
  6. System automatically releases the replacement order to PENDING
  7. Warehouse picks and ships the Large jacket
  8. Customer receives the correct size

Timeline: Customer receives replacement 3-7 days after you receive their return.


Situation: Loyal customer received a defective product. You trust them and want to provide excellent service.

Process:

  1. Customer reports the defect
  2. You create an Exchange Now return
  3. System immediately creates replacement order with status PENDING (5)
  4. Warehouse picks and ships the replacement right away
  5. Customer receives the replacement within 1-2 days
  6. Customer ships the defective item back at their convenience
  7. Warehouse processes the return when it arrives

Timeline: Customer receives replacement 1-2 days after initiating the exchange.


Situation: Customer wants to exchange a blue shirt for a red shirt (different SKU).

Process:

  1. Create an Exchange on Received or Exchange Now return
  2. System creates the exchange order with the original blue shirt SKU
  3. Before submitting, edit the exchange order in Pre_orderedit.php
  4. Remove the blue shirt SKU
  5. Add the red shirt SKU with the correct quantity
  6. Submit the modified exchange
  7. Warehouse ships the red shirt based on exchange type

Key Point: You can modify exchange orders before finalizing to change products.


Clear Exchange Policy

Document when you offer Exchange on Received vs. Exchange Now. Communicate this to customers upfront.

Verify Customer Information

Confirm shipping address before processing—customer may have moved since original order.

Track Both Orders

Use the RMA link to monitor both the return and the replacement order status.

Inspect Returns Promptly

For Exchange on Received, process returns quickly so the replacement ships without delay.

Communicate Status

Keep customers informed: “We’ve shipped your replacement” or “We’ll ship your replacement when we receive your return.”

Handle Disputes Carefully

If the return doesn’t match expectations (wrong item, damaged), contact the customer before releasing an Exchange on Received.


Exchange Order Stuck in HOLD Status

Cause: Exchange on Received is waiting for the return to be processed.

Solution:

  • Check if the return has been received by the warehouse
  • Process the return in Return_order_detail_Blist.php
  • Once processed, the exchange order automatically changes to PENDING
  • If you need to ship immediately, edit the order and change editxao to 0

Can't Find the Exchange Order

Cause: Exchange might be in the wrong view or filtered out.

Solution:

  • Go to All_Orders_rs_list.php (Exchanges view)
  • Use search filters: try the original Order# or RMA#
  • Check the return view for the “View exchange” link
  • Search by the order number with _XCHG suffix

Need to Cancel an Exchange

Cause: Customer changed their mind or issue was resolved differently.

Solution:

  • If exchange hasn’t shipped yet, cancel it from the order list
  • Click the Cancel link for the exchange order
  • Update the return status if needed
  • Process a refund instead if appropriate

Wrong Product in Exchange Order

Cause: Exchange was created with the original SKUs but customer wants different products.

Solution:

  • Before finalizing, edit the exchange in Pre_orderedit.php
  • Remove incorrect SKUs
  • Add the correct SKUs and quantities
  • Verify inventory availability
  • Submit the corrected exchange

Exchange Shipped Before Return Received

Cause: Exchange Now was used instead of Exchange on Received, or warehouse error.

Solution:

  • If intentional (Exchange Now), no action needed
  • If accidental, contact customer to ensure return is still coming
  • Monitor the return and follow up if not received within expected timeframe
  • Consider adjusting exchange policy to prevent future issues

FieldTypeDescription
Request_TypeVARCHAR’Exchange_on_Received’ or ‘Exchange_Now’
editxaoINT1 = Hold until return processed, 0 = Ship immediately
order_id_xchgINTThe OrderID of the replacement order (stored in return_order table)
IDReturnINTLink from exchange order back to original order (stored in orders table)
OrderStatusINTStatus of the exchange order (5=PENDING, 64=HOLD, 8=PROCESSING, 9=SHIPPED)
orderNumVARCHAROriginal order number with _XCHG suffix
  • neworderrestocking($orderID, $flat, $rma_id): Creates the duplicate exchange order

    • Copies all customer information from original order
    • Adds _XCHG suffix to order number
    • Sets status based on exchange type
    • Links exchange to RMA via order_id_xchg
    • Copies SKUs from return detail
  • cargar_edit_tabla($OrderID, $type): Prepares exchange for editing

    • $type = '1': Exchange Now (editxao = 0)
    • $type = '2': Exchange on Received (editxao = 1)

For automated exchange creation via API, see:

  • REST API v4: /api/v4/oms/returns/exchange
  • Legacy API: /API/Returns/uReturns.php


Next Steps: After creating an exchange, monitor both the return and the replacement order. For Exchange on Received, process the return promptly to release the replacement. For Exchange Now, track the return to ensure it arrives as expected.