eBay Handle Inquiries
Purpose of this document is to outline the details of how to store eBay inquiries within Hemi.
Version | Date | Created / Updated | Notes |
---|---|---|---|
v1.0 | 31.12.2024 | Bogomil Pavlov | First publish |
At the moment we are storing only cancellation and return request from eBay as claims however there are another type called Inquiries. Simply the inquiries represent Item Not Received (INR) and can be created from the buyer as soon as the estimated delivery date window has passed. Since the product is not yet received we buyer is not able to make a return request and since the order is already shipped the buyer is not able to make a cancellation request thus the Inquiries take place. The flow is exactly the same as we do for the Cancellation and the Returns first we have to Search Inquiries based on filters then we can Issue Inquiry Refund (Accept) or Close Inquiry (Reject).
All validations,triggers etc are as per the Claims abstraction found here : Claims general management
Search Inquiry
In order to incorporate the new type of claim we will have to additional enumeration for Order Claim > Type called “Inquiry”. This way we can easily filter the Inquiries in have and be able to apply different default actions if required. Please note every inquiry is per product so if we have an order with more than one item and we have more than one Inquiry opened we will store them as two separate claims within Hemi.
API Call: GET /post-order/v2/inquiry/search
API Docs: https://developer.ebay.com/devzone/post-order/post-order_v2_inquiry_search__get.html
Parameters:
Parameter | Required | Comment |
---|---|---|
fieldgroups | Optional | In the future, the fieldgroups query parameter may be used in the request to control the amount of detail that is returned in the response, but for now, the scope of the response will be the same even if this query parameter is used and set to DEFAULT, which is the only supported value.Applicable values are from InquirySearchFieldGroupEnum. |
inquiry_creation_date_range_from | Optional | The inquiry_creation_date_range_from and inquiry_creation_date_range_to query parameters are used if the user wants to retrieve inquiries that were created during a specific time range. The starting date range is input into the inquiry_creation_date_range_from query parameter. The inquiry_creation_date_range_from date must be older than the inquiry_creation_date_range_to date, and it cannot be set back more than 18 months in the past. If the inquiry_creation_date_range_from query parameter is used, but the inquiry_creation_date_range_to query parameter is not used, the method will look for all inquiries created at or after this date/time, going forward 90 days from this date. The ISO-8601 date format should be used for this query parameter. Here's a sample of that format: 2015-05-15T03:52:39.000Z. |
inquiry_creation_date_range_to | Optional | The inquiry_creation_date_range_from and inquiry_creation_date_range_to query parameters are used if the user wants to retrieve inquiries that were created during a specific time range. The ending date range is input into the inquiry_creation_date_range_to query parameter. The inquiry_creation_date_range_to date must be more recent than the inquiry_creation_date_range_from date. If the inquiry_creation_date_range_from query parameter is used, but the inquiry_creation_date_range_to query parameter is not used, the method will look for all inquiries created at or after the inquiry_creation_date_range_from value, going forward 90 days from this date. The ISO-8601 date format should be used for this query parameter. Here's a sample of that format: 2015-05-15T03:52:39.000Z. |
inquiry_status | Optional | This query parameter is used if the user wants to search for INR inquiries in a specific state. One of the enumeration values defined in the InquirySearchFieldGroupEnum type definition must be used in this query parameter.Applicable values are from InquiryStatusFilter. |
item_id | --- | The unique eBay-assigned ID of a listing. If this parameter is used, eBay will search for any INR inquiries filed against this listing.This parameter is conditionally required if the transaction_id query parameter is used, as both Item ID and Transaction ID values are needed to identify a line item. |
limit | Optional | This parameter specifies the maximum number of INR inquiries to display per page of data. If this query parameter is not used, its value defaults to 25 (inquiries per page).Min value: 1Max value: 200 Default value: 25 |
offset | Optional | This parameter specifies the number of entries to skip in the result set before returning the first item in the paginated response. A 0-based index is used, so page '1' of results is returned if 0 is set in this field or if this query parameter is omitted. Specify a positive value equal to or lower than the number of pages available (which you determine by examining the results in the paginationOutput container of your initial call).Combine offset with the limit query parameter to control how many and which items are returned in the response.Min value: 0Default value: 0 |
order_id | Optional | The unique ID of an order. An order_id value is provided as a query parameter if the user wants to see if an inquiry was filed against one or more order line items in the order specified in this field.Note: The order ID value changes as an order goes from the unpaid to the paid state. |
sort | Optional | This query parameter is used if you want to control whether INR inquiries are retrieved in descending order (most recent inquiries returned at top of the response) or ascending order (oldest inquiries returned at top of the response). If this query parameter is used, either Descending or Ascending must be used as the value.Descending is the default value, so this query parameter is more useful if you want to sort inquiries in ascending order.Default: Descending |
transaction_id | Optional | The unique eBay-assigned ID of the line item purchase. If this parameter is used, the item_id query parameter must also be used, as both Item ID and Transaction ID values are needed to identify a line item. If you use transaction_id without also supplying an item_id value, this parameter is ignored. |
From the paraments we want to use:
inquiry_creation_date_range_from ****
and inquiry_creation_date_range_to
and search for any inquiries for the last 90 days.
limit
set as 200 by default
offset
to be able to filter pages if more than 200 records returned
Sample Request:
URL GET [https://api.ebay.com/post-order/v2/inquiry/search?inquiry_creation_date_range_from=2024-01-10T03:52:39.000Z&inquiry_creation_date_range_to=2024-12-31T03:52:39.000Z&limit=200&offset=1](https://api.ebay.com/post-order/v2/inquiry/search?inquiry_creation_date_range_from=2024-01-10T03:52:39.000Z&inquiry_creation_date_range_to=2024-12-31T03:52:39.000Z&limit=200&offset=1)
Sample Response:
{
"members": [
{
"itemId": 387056077543,
"transactionId": 1582545139025,
"inquiryId": 5349566917,
"buyer": "fredle88",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 172.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2025-01-22T07:00:00.000Z"
},
"creationDate": {
"value": "2024-12-19T11:37:40.000Z"
},
"lastModifiedDate": {
"value": "2024-12-20T08:14:50.000Z"
}
},
{
"itemId": 387650920824,
"transactionId": 1576036936025,
"inquiryId": 5349000054,
"buyer": "smal_arlen",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 299.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2025-01-14T07:00:00.000Z"
},
"creationDate": {
"value": "2024-12-11T18:22:49.000Z"
},
"lastModifiedDate": {
"value": "2024-12-13T08:29:10.000Z"
}
},
{
"itemId": 387056075184,
"transactionId": 1569892138025,
"inquiryId": 5347112239,
"buyer": "jonnyal78",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 99.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-12-10T07:00:00.000Z"
},
"creationDate": {
"value": "2024-11-11T13:21:15.000Z"
},
"lastModifiedDate": {
"value": "2024-12-11T07:11:56.000Z"
}
},
{
"itemId": 387056076179,
"transactionId": 1566356749025,
"inquiryId": 5346188112,
"buyer": "askewf",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 79.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-11-25T07:00:00.000Z"
},
"creationDate": {
"value": "2024-10-25T07:29:15.000Z"
},
"lastModifiedDate": {
"value": "2024-10-28T07:30:55.000Z"
}
},
{
"itemId": 387056076179,
"transactionId": 1563296558025,
"inquiryId": 5345804906,
"buyer": "gemch8587",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 79.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-11-18T07:00:00.000Z"
},
"creationDate": {
"value": "2024-10-18T11:17:08.000Z"
},
"lastModifiedDate": {
"value": "2024-11-19T07:57:09.000Z"
}
},
{
"itemId": 387056076028,
"transactionId": 1562539314025,
"inquiryId": 5345562499,
"buyer": "neeve.uk2014",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 68.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-11-12T07:00:00.000Z"
},
"creationDate": {
"value": "2024-10-14T13:50:52.000Z"
},
"lastModifiedDate": {
"value": "2024-10-15T09:32:51.000Z"
}
},
{
"itemId": 387056076028,
"transactionId": 1562533966025,
"inquiryId": 5345502763,
"buyer": "michha_395121",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 68.0,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-11-11T07:00:00.000Z"
},
"creationDate": {
"value": "2024-10-13T07:29:29.000Z"
},
"lastModifiedDate": {
"value": "2024-10-14T12:13:37.000Z"
}
},
{
"itemId": 387056076179,
"transactionId": 1554245546025,
"inquiryId": 5343810054,
"buyer": "barbour283",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 89.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-10-11T07:00:00.000Z"
},
"creationDate": {
"value": "2024-09-12T19:08:40.000Z"
},
"lastModifiedDate": {
"value": "2024-10-12T08:19:26.000Z"
}
},
{
"itemId": 387056075893,
"transactionId": 1551660469025,
"inquiryId": 5343590207,
"buyer": "willforfinn",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 119.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-10-08T07:00:00.000Z"
},
"creationDate": {
"value": "2024-09-09T12:29:06.000Z"
},
"lastModifiedDate": {
"value": "2024-09-12T12:22:46.000Z"
}
},
{
"itemId": 387056074827,
"transactionId": 1546812021025,
"inquiryId": 5342438583,
"buyer": "antig144",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 99.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-09-17T07:00:00.000Z"
},
"creationDate": {
"value": "2024-08-19T10:10:07.000Z"
},
"lastModifiedDate": {
"value": "2024-08-20T08:01:02.000Z"
}
},
{
"itemId": 387056076179,
"transactionId": 1544381275025,
"inquiryId": 5341769197,
"buyer": "thedustycircus",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 89.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-09-04T07:00:00.000Z"
},
"creationDate": {
"value": "2024-08-06T23:11:50.000Z"
},
"lastModifiedDate": {
"value": "2024-09-05T10:30:08.000Z"
}
},
{
"itemId": 387056073900,
"transactionId": 1533863073025,
"inquiryId": 5339984800,
"buyer": "jstelectronicsltd",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 99.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-08-05T07:00:00.000Z"
},
"creationDate": {
"value": "2024-07-05T15:48:24.000Z"
},
"lastModifiedDate": {
"value": "2024-07-10T12:30:51.000Z"
}
},
{
"itemId": 387056074065,
"transactionId": 1535233080025,
"inquiryId": 5339903040,
"buyer": "fireman77graham",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 169.15,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-08-01T07:00:00.000Z"
},
"creationDate": {
"value": "2024-07-04T05:15:06.000Z"
},
"lastModifiedDate": {
"value": "2024-07-04T08:43:20.000Z"
}
},
{
"itemId": 387056073105,
"transactionId": 1530274713025,
"inquiryId": 5339140092,
"buyer": "joelomred",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 110.49,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-07-19T07:00:00.000Z"
},
"creationDate": {
"value": "2024-06-20T08:01:00.000Z"
},
"lastModifiedDate": {
"value": "2024-06-24T12:32:05.000Z"
}
},
{
"itemId": 387056075036,
"transactionId": 1529429215025,
"inquiryId": 5338830884,
"buyer": "hayw582",
"seller": "hooverlimited",
"inquiryStatusEnum": "CLOSED",
"claimAmount": {
"value": 139.99,
"currency": "GBP"
},
"respondByDate": {
"value": "2024-07-15T07:00:00.000Z"
},
"creationDate": {
"value": "2024-06-14T15:55:35.000Z"
},
"lastModifiedDate": {
"value": "2024-06-19T06:34:45.000Z"
}
}
],
"totalNumberOfInquiries": 15,
"paginationOutput": {
"offset": 1,
"limit": 15,
"totalPages": 1,
"totalEntries": 15
}
}
Response Mapping:
eBay Fields | Hemi Field | Comment | ||
---|---|---|---|---|
members |
||||
itemId |
Used to map the order item. The itemId will be our Product in Order > Channel Item ID which we use in order to map the correct product |
|||
transactionId |
Used to map the order. The transactionId will be our Product in Order > Item Transaction ID which we will use in order to map the order item and then the order for which the Inquiry is opened |
|||
inquiryId |
Order Claim > Marketplace ID | |||
buyer |
N/A | |||
seller |
N/A | |||
inquiryStatusEnum |
Order Claim > Marketplace Status | |||
claimAmount |
||||
value |
Based on the amount we will know if we shall add only item or item and shipping cost within the refund and how much each of them to be. | |||
Please note we can have a case where Inquiry is open for the one out of two order items but with full shipping cost. | ||||
currency |
N/A | |||
respondByDate |
||||
value |
N/A | |||
creationDate |
||||
value |
Order Claim > Marketplace Date | |||
lastModifiedDate |
||||
value |
N/A | |||
totalNumberOfInquiries |
N/A | |||
paginationOutput |
||||
offset |
||||
limit |
||||
totalPages |
||||
totalEntries |
As Order Claim > Marketplace Reason we want to always have “Item Not Received” and Order Claim > Initiated By to be always set as “Buyer”.
Status Mapping:
eBay Status | Hemi Status | Hemi Action | Hemi Claim Status | Comment |
---|---|---|---|---|
CLOSED | Completed | Accept | Accepted & Refunded | This enumeration value indicates that the INR inquiry is closed. |
CLOSED_WITH_ESCALATION | Completed | Reject | Rejected | This enumeration value indicates that the INR inquiry was closed because it was escalated to a case. |
CS_CLOSED | Completed | Reject | Rejected | This enumeration value indicates that the INR inquiry was closed by a customer support representative. |
OPEN | N/A | N/A | Created | This enumeration value indicates that the INR inquiry has been created and the seller has been notified. |
OTHER | N/A | N/A | Created | This enumeration value indicates that the status of the INR inquiry cannot be determined. |
PENDING | N/A | N/A | Created | This enumeration value indicates that the INR inquiry is currently in the pending state. |
WAITING_BUYER_RESPONSE | Completed | Accept | Accepted | This enumeration value indicates that the INR inquiry is open, and the next action is expected to be from the buyer, such as confirming receipt of a refund that the seller has issued. |
WAITING_SELLER_RESPONSE | N/A | N/A | Created | This enumeration value indicates that the INR inquiry is open, and the next action is expected to be from the seller. |
The logic behind the statuses and action is when we receive already closed inquiries how to store them within Hemi and when to update the statuses within Hemi.
Inquiry Refund
Once we have stored the claim in Hemi with Open status we then can take the relevant action. If we want to accept an inquiry we simply have to make inquiry refund which will trigger the refund to the buyer. As per our claim abstraction the trigger for the Inquiry Refund is when we have Order Claim > Action = Accept and Order Claim >Status = Pending and Order Claim > Marketplace Status = OPEN if this is success we will receive from eBay a new inquiry status which is “WAITING_BUYER_RESPONSE”. Which means we do not control the final claim status and we cant process the inquiry to any to CLOSED so we will rely on updates from the marketplace
API Call: POST /post-order/v2/inquiry/{inquiryId}/issue_refund
API Docs: https://developer.ebay.com/devzone/post-order/post-order_v2_inquiry-inquiryid_issue_refund__post.html
Sample Request:
POST https://api.ebay.com/post-order/v2/inquiry/5349566917/issue_refund
inquiryId
- Obtained from the Order Claim > Marketplace ID
No Body Required
Sample Response 200:
{
"refundResult": {
"refundSource": "INSTANT_REFUND",
"refundStatus": "SUCCESS"
}
}
After we process the refund we just want to set Order Claim > Action = Accept and Order Claim >Status = Completed and with the next response from the marketplace we will update the Order Claim > Marketplace Status and Order Claim > Claim Status. Please note for all inquiries which we receive from eBay with Order Claim > Marketplace Status = CLOSED we want to add the order refund and process the relevant status updates on the products.
Close Inquiry TBC
Once we have stored the claim in Hemi with Open status we then can take the relevant action. If we want to reject an inquiry we simply have to make Close Inquiry. As per our claim abstraction the trigger for the Inquiry Refund is when we have Order Claim > Action = Accept and Order Claim >Status = Pending and Order Claim > Marketplace Status = OPEN if this is success we will receive from eBay a new inquiry status which is “WAITING_BUYER_RESPONSE”. Which means we do not control the final claim status and we cant process the inquiry to any to CLOSED so we will rely on updates from the marketplace
API Call: POST /post-order/v2/inquiry/{inquiryId}/close
API Docs: https://developer.ebay.com/devzone/post-order/post-order_v2_inquiry-inquiryid_close__post.html
Sample Request:
POST https://api.ebay.com/post-order/v2/inquiry/5349566917/close
No Body Required
Sample Response 200:
A successful call returns an HTTP code of 200; there is no payload for the response.