Endpoints
XML Requests
Nine types of requests can be sent to the Order Update server:
- getOrder
- getAllNewOrders
- update
- updateShipping
- searchOrders
- getReturn
- searchReturns
- initiateReturn
- updateReturn
Common Request Elements
All order update requests follow XML standards and should include the standard XML header:
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.0">
<action name="getOrder">
<username>jsinclair</username>
<password>123abc</password>
</action>
</orderUpdateRequest>orderUpdateRequest Tag — This tag encompasses the entire order update request version. The current available versions are 1.0, 1.1, 1.2 and 1.3.
action Tag — This tag tells the Order Update server which action to take and which user should execute the action. The parameter "name" may have the value of "getAllNewOrders", "getOrder", "update", "updateShipping" or "searchOrders", indicating which action to take. The value of the elements "username" and "password" must represent a valid AbeBooks.com bookseller, and this bookseller must be the owner of the purchase order being processed by the action.
getAllNewOrders Request
This request returns all new orders that are available for processing (all ABEPOs that are in the status "seller notified").
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="getAllNewOrders">
<username>jsinclair</username>
<password>123abc</password>
</action>
</orderUpdateRequest>All orders returned by the getAllNewOrdersRequest may be processed by the update request. The output is limited to 500 orders. Repeated calls to this request will return the same orders until the individual orders are processed, or change status for some other reason, such as buyer cancellation.
To receive more than 500 orders, use the <offset> and <limit> parameters, incrementing the offset to 500 on each subsequent call. Keep using it until you receive less than 500 orders, at which point you would have completed all the pending orders.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="getAllNewOrders">
<username>jsinclair</username>
<password>123abc</password>
</action>
<limit>500</limit>
<offset>0</offset>
</orderUpdateRequest>searchOrders Request
This action is used to search for purchase orders based on a set of parameters. Each of the parameters is optional. A request with no parameters uses the default for all parameters, results are always sorted by creation date in descending order (newest first). All parameters are grouped inside an orderSearch tag. The response has the same format as the getAllNewOrders response.
| Parameter | Required | Description |
|---|---|---|
| createdAfter | No | Return orders created on or after this date in ISO 8601 format. Cannot be used with updatedAfter or updatedBefore. Defaults to 10 years ago, which is also the earliest date that can be searched. |
| createdBefore | No | Return orders created on or before this date in ISO 8601 format. Cannot be used with updatedAfter or updatedBefore. Must be after createdAfter. Defaults to the current time. |
| updatedAfter | No | Return orders whose status was last updated on or after this date in ISO 8601 format. Cannot be used with createdAfter or createdBefore. Defaults to 10 years ago, which is also the earliest date that can be searched. |
| updatedBefore | No | Return orders whose status was last updated on or before this date in ISO 8601 format. Cannot be used with createdAfter or createdBefore. Must be after updatedAfter. Defaults to the current time. |
| status | No | The status of the orders to return. Valid values are CANCELLED, EXPIRED, ORDERED, PROCESSED and REJECTED. Defaults to all statuses. |
| limit | No | The maximum results to return in the search. The default is 10. Valid values are from 0 to 100. A value greater than 100 is treated as 100. |
| offset | No | Use with the limit to page through results if the number of results available exceeds the limit. Defaults to 0. |
All date parameters must include a timezone offset (for example 2025-04-30T00:00:00-07:00) or be in UTC (for example 2023-10-19T19:07:50Z). Dates are converted to the America/Vancouver timezone for processing. Orders older than 10 years from the current date cannot be searched.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.3">
<action name="searchOrders">
<username>jsinclair</username>
<password>abc123</password>
</action>
<orderSearch>
<createdAfter>2025-04-30T00:00:00-07:00</createdAfter>
<createdBefore>2025-05-01T00:00:00-07:00</createdBefore>
<status>PROCESSED</status>
<limit>100</limit>
<offset>0</offset>
</orderSearch>
</orderUpdateRequest>To page through results, increment the offset by the limit on each subsequent call. Keep going until you receive fewer orders than the limit, at which point you have retrieved all matching orders.
The searchOrders action works with any request version. The shipping speed and last status update date fields (see the Response Element Reference) are only returned when the request uses version 1.3 or later.
getOrder Request
If you specify an order number with this request, the order details can be retrieved. This request will return processed and unprocessed purchase orders. Retrieval is limited to purchase orders on which you are the seller.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="getOrder">
<username>jsinclair</username>
<password>123abc</password>
</action>
<purchaseOrder id="1234"/>
</orderUpdateRequest>update and updateShipping Request
The update request is used to change the status of the purchase order and each of the books in the purchase order. Marking a book as "shipped" results in a credit card transaction on the buyer's card. An update request can take one of two forms: A single status that is applied to all items in the order, or a status for individual items. Each item in the order must be set to one of the valid statuses. Failure to update the status of all items in an order will result in the update request failing. Note that the update request only processes one order at a time.
Example with status applied to all items:
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="update">
<username>jsinclair</username>
<password>123abc</password>
</action>
<purchaseOrder id="3425234">
<shipping>
<company>FEDEX</company>
<trackingCode>12343456231341234</trackingCode>
</shipping>
<status>shipped</status>
</purchaseOrder>
</orderUpdateRequest>Example with status applied to individual items:
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="update">
<username>jsinclair</username>
<password>abc123</password>
</action>
<purchaseOrder id="3425234">
<purchaseOrderItemList>
<purchaseOrderItem id="1212">
<status>shipped</status>
</purchaseOrderItem>
<purchaseOrderItem id="1213">
<status>rejected</status>
</purchaseOrderItem>
</purchaseOrderItemList>
</purchaseOrder>
</orderUpdateRequest>If you do not have the shipping information at the time the order status is updated, you can use the orderUpdateRequest with the updateShipping action at a later time. This request is useful for minimizing returns made for "item did not arrive" as well as reducing the number of customer service contacts. Please note that the shipping company field is limited to 25 characters, and the tracking number is limited to 200.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="updateShipping">
<username>jsinclair</username>
<password>abc123</password>
</action>
<purchaseOrder id="xxxxxxx">
<shipping>
<company>FEDEX</company>
<trackingCode>12343456231341234</trackingCode>
</shipping>
</purchaseOrder>
</orderUpdateRequest>Request Element Reference
purchaseOrder Tag — Identifies the order to update. The ID is the AbeBooks.com purchase order ID, or ABEPOID. The user specified in the action tag must own the purchase order for this request to be successful.
shipping Tag (optional) — Can be used to inform the buyer of the shipping company used and the tracking number.
status Tag (applied to all items) — This status tag applies to all items in the order. If it is present, all item specific statuses are ignored.
| Status | Definition |
|---|---|
| Shipped | Bookseller will ship the item |
| Rejected | Bookseller rejected the item |
| PreviouslySold | Bookseller already sold the item |
| CreditCardDeclined | The buyer's credit card was declined |
| availabilityConfirmed | Seller Direct order accepted |
purchaseOrderItemList Tag — Contains the list of items in the order.
purchaseOrderItem Tag — Identifies the item within the order to alter. The ID must be set to the AbeBooks purchase order item ID or ABEPOITEMID. For an order update request to be accepted, all items within the order must be included.
status Tag (applied to individual items):
| Status | Definition |
|---|---|
| Shipped | Seller will ship the item |
| Rejected | Seller rejected the item |
| PreviouslySold | Seller already sold the item |
| availabilityConfirmed | Seller Direct order accepted |
getReturn Request
This action is used to retrieve a single return using the return ID.
searchReturns Request
This action is used to search for returns based on a set of parameters. Each of the parameters is optional, and a request with no parameters will search for the most recent returns. Returns in the response are always ordered by most recent initiated date first. All parameters are grouped inside a returnSearch tag.
| Parameter | Required | Description |
|---|---|---|
| purchaseOrderItem id | No | The identifier for a single purchase order item. |
| returnStatus | No | The current status of a return. The allowed statuses are defined in the Return Statuses appendix. |
| dateStart | No | The date to start looking for returns in ISO 8601 format. If only start date is provided then returns from the date start to current time will be searched for. |
| dateEnd | No | The date to stop looking for returns in ISO 8601 format. If only end date is provided, then all returns up until the end date will be searched for. |
| limit | No | The maximum results to return in the search. The default for the limit is 500. Valid values are from 0 to 500. |
| offset | No | Use with the limit to page through results if the number of results available exceeds the limit. |
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="searchReturns">
<username>jsinclair</username>
<password>abc123</password>
</action>
<returnSearch>
<purchaseOrderItem id="629929538"/>
<returnStatus>I</returnStatus>
<dateStart>2023-09-13T20:00:00+02:00</dateStart>
<dateEnd>2023-09-13T21:00:00+02:00</dateEnd>
<limit>100</limit>
<offset>0</offset>
</returnSearch>
</orderUpdateRequest>initiateReturn Request
This action allows the creation of a return for a given item. All parameters are grouped inside a returnInitiation tag.
| Parameter | Required | Description |
|---|---|---|
| purchaseOrderItem id | Yes | The identifier for a single purchase order item. |
| returnReason | Yes | The reason for the return. Valid return reasons can be found in the Return Reasons appendix. |
| processImmediately | No | A true or false value that determines if the return should be processed immediately or opened but not processed. This parameter is invalid for return reasons 01 and 07 along with any return on an order that had a seller direct payment method because those returns will always be processed immediately. Defaults to true if not specified. |
| includeReturnShipping | No | A true or false value that determines if the buyer should be refunded for return shipping. This parameter is only valid for return reason 05. Any request that has this parameter but does not have return reason 05 will fail. |
| comments | No | A text field to attach comments to a return. These comments are visible to buyers. |
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateRequest version="1.1">
<action name="initiateReturn">
<username>jsinclair</username>
<password>abc123</password>
</action>
<returnInitiation>
<purchaseOrderItem id="629929538"/>
<returnReason>05</returnReason>
<includeReturnShipping>true</includeReturnShipping>
<processImmediately>false</processImmediately>
<comments>seller return comments</comments>
</returnInitiation>
</orderUpdateRequest>updateReturn Request
This action allows the status of a return that is "In progress" to be changed. All parameters are grouped inside a returnUpdate tag. There are rules around what updates are allowed on returns — see the Rules for Updating Returns appendix.
XML Responses
Purchase Order Response (getOrder/update)
The requests "getOrder" and "update" return a single purchase order. In the case of an "update" request, the statuses of each item in the order will be updated and the order totals re-calculated.
Note: there are two places that a "status" tag appears — one relating to the purchaseOrder, which encompasses the order as a whole, and one relating to each purchaseOrderItem in the order, which indicates the status of individual items. It is possible for some items in an order to be in "Buyer Cancelled" status while others are "Shipped". In this case, it's important that only the "shipped" items are physically shipped to the buyer, as no payment is collected for cancelled items. For partially cancelled orders, the purchaseOrder status will appear as "Processed", so it's important to examine the status of each individual purchaseOrderItem.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.1">
<purchaseOrder id="1121066">
<buyer id="877723">
<email>blah@somewhere.com</email>
<mailingAddress>
<city>Vancouver</city>
<code>V8T 1Z1</code>
<country>Canada</country>
<name>John Doe</name>
<phone>604-123-1234</phone>
<region></region>
<street>123 John Avenue</street>
<street2></street2>
</mailingAddress>
</buyer>
<domain id="1">
<name>abebooks.com</name>
</domain>
<indirectTaxList>
<indirectTax>
<taxCollectionModel>EU VAT for Ecommerce</taxCollectionModel>
<AbeBooksRegistrationNumber>IM1234567</AbeBooksRegistrationNumber>
<taxMessage>dummy message</taxMessage>
</indirectTax>
</indirectTaxList>
<orderDate>
<date><day>2</day><month>8</month><year>2002</year></date>
<time><hour>1</hour><minute>13</minute><second>38</second></time>
</orderDate>
<orderTotals>
<gst currency="USD">0.0</gst>
<handling currency="USD">0.0</handling>
<shipping currency="USD">8.5</shipping>
<subtotal currency="USD">25.0</subtotal>
<tax currency="USD">0.0</tax>
<total currency="USD">33.5</total>
</orderTotals>
<purchaseMethod>CC</purchaseMethod>
<purchaseOrderItemList>
<purchaseOrderItem id="2077519">
<book id="63511185">
<author>Irving, Washington</author>
<description>Robert A. Reynolds 8vo, 357p Klikitat Edition.</description>
<price currency="USD">25.0</price>
<title>Adventures of Captain Bonneville</title>
<vendorKey>000073</vendorKey>
<weightValue>1.00</weightValue>
<weightUnit>GRAMS</weightUnit>
</book>
<orderDate>
<date><day>2</day><month>8</month><year>2002</year></date>
<time><hour>1</hour><minute>13</minute><second>38</second></time>
</orderDate>
<purchaseOrder id="1121066"/>
<sellerTotal currency="USD">0.0</sellerTotal>
<status code="05">Ordered</status>
</purchaseOrderItem>
</purchaseOrderItemList>
<reseller id="15">
<name>abebooks</name>
</reseller>
<seller id="6158"/>
<shipmentManifest>
http://www.abebooks.com/servlet/ShipmentManifest?abepoid=1121066
</shipmentManifest>
<shipping>
<extraItemShippingCost currency="USD">0.0</extraItemShippingCost>
<firstItemShippingCost currency="USD">0.0</firstItemShippingCost>
<maxDeliveryDays>42</maxDeliveryDays>
<minDeliveryDays>28</minDeliveryDays>
<company>FEDEX</company>
<trackingCode>12343456231341234</trackingCode>
</shipping>
<specialInstructions>Deliver express</specialInstructions>
<status code="05">Ordered</status>
</purchaseOrder>
</orderUpdateResponse>When a request uses version 1.3 or later, the purchase order response includes two additional fields: a speed element within the shipping tag, and a lastStatusUpdateDate tag on the order. These fields are returned by getOrder, getAllNewOrders, update, updateShipping and searchOrders.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.3">
<purchaseOrder id="1121066">
...
<lastStatusUpdateDate>
<date><day>3</day><month>8</month><year>2002</year></date>
<time><hour>14</hour><minute>22</minute><second>5</second></time>
</lastStatusUpdateDate>
...
<shipping>
<extraItemShippingCost currency="USD">0.0</extraItemShippingCost>
<firstItemShippingCost currency="USD">0.0</firstItemShippingCost>
<maxDeliveryDays>42</maxDeliveryDays>
<minDeliveryDays>28</minDeliveryDays>
<company>FEDEX</company>
<trackingCode>12343456231341234</trackingCode>
<speed>PRIORITY</speed>
</shipping>
...
</purchaseOrder>
</orderUpdateResponse>Response Element Reference
purchaseOrder Tag — Encompasses the entire order and indicates the AbeBooks.com ABEPOID.
buyer Tag — Lists the buyer specifics including name and address. The ID listed is the AbeBooks.com ClientID for this buyer.
domain Tag — Shows the originating domain for the order.
| Domain Id | Domain Name |
|---|---|
| 1 | abebooks.com |
| 46 | abebooks.co.uk |
| 47 | abebooks.de |
| 48 | abebooks.fr |
| 51 | abebooks.it |
| 52 | iberlibro.com |
| 53 | zvab.com |
orderDate Tag — Lists the date the order was placed.
lastStatusUpdateDate Tag (v1.3+) — The date and time the order's status was last updated, using the same date/time structure as orderDate.
orderTotals Tag — Lists the order totals displayed to the buyer in the bookseller's currency.
| Tag | Definition |
|---|---|
| subtotal | The total of all items unprocessed or shipped |
| tax | The total tax on the order |
| gst | The total GST on the order |
| shipping | Total shipping on the order |
| handling | Total handling on the order |
| total | The total of all items, taxes, and shipping |
purchaseMethod Tag — Displays the purchase method in use for the purchase order.
| Purchase Method | Definition |
|---|---|
| CC | AbeBooks.com processed credit card |
| SD | Seller Direct |
| UNK | Unknown (Please contact inventory@abebooks.com if you receive this code.) |
Seller Direct purchase method types (available for orderUpdateRequest v1.1+):
- Check
- PayPal
- Direct Debit (Personally Authorized Payment)
- Bank/Wire Transfer
- Cash on Delivery (COD)
- Money Order
- Bank Draft
- Invoice
- Cash
purchaseOrderItem Tag — Contains the item specific information. The ID specifies the purchase order item ID, or ABEPOITEMID.
book Tag — Contains the book information in the order including author, description, title, ISBN, bookseller book price (in the seller's currency) and bookseller's BookID.
taxCollectionModel Tag (v1.1+) — Displays the tax collection model for which AbeBooks is responsible.
abeBooksRegistrationNumber Tag (v1.1+) — Displays AbeBooks' tax registration number.
taxMessage Tag (v1.1+) — Shows tax related information, if applicable.
weightValue Tag (v1.2+) — Shows the weight of a given item.
weightUnit Tag (v1.2+) — Shows the weight unit of a given item. Possible values: "GRAMS", "KILOGRAMS", "OUNCES", "POUNDS".
sellerTotal Tag — Contains the seller total in the bookseller's currency for this item. This value is zero on seller direct orders.
status Tag (item) — The status of the item, distinct from the status of the purchaseOrder.
| Status | Definition |
|---|---|
| Buyer Cancelled | The buyer cancelled the item |
| Cancelled | The bookseller cancelled the item |
| Expired | The item expired because it was not processed in a timely manner |
| Ordered | The item is ready for processing |
| Previously Sold | The item was already sold by the seller |
| Rejected | The item was rejected by the credit card processor used by AbeBooks |
| Shipped | The item was shipped by the bookseller |
| Availability confirmed | The Seller Direct order has been processed by the seller |
seller Tag — Lists the seller's AbeBooks client ID and currency.
shipmentManifest Tag — Shows the AbeBooks.com shipment manifest URL, present once the purchase order is in a processed status.
shipping Tag — The extraItemShippingCost and firstItemShippingCost fields will return 0.0 if users change rate types or use multiple templates. The total shipping cost will continue to be in the orderTotals section.
speed Tag (v1.3+) — The shipping speed for the order. Possible values: "PRIORITY", "STANDARD". May be empty if no shipping speed is set.
specialInstructions Tag — Contains the buyer's special instructions to the bookseller, if any.
status Tag (order) — Shows the status of the entire order. This is distinct from the status of the individual purchaseOrderItems and should not be relied upon to determine the status of individual items.
| Status | Definition |
|---|---|
| Ordered | The order is ready for processing |
| Processed | The order has been processed by the bookseller |
| Expired | The order expired because it was not processed in a timely manner |
| Cancelled | The bookseller cancelled the order |
| Rejected | The item was rejected by the credit card processor used by AbeBooks |
Purchase Order List Response (getAllNewOrders/searchOrders)
The "getAllNewOrders" request returns a list of all orders ready for processing by the bookseller. An order will not be returned by this request after it has been processed or has expired. The "searchOrders" request returns a list in the same format, containing the orders that match the search parameters.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.1">
<purchaseOrderList>
<purchaseOrder id="1121066">
...
</purchaseOrder>
<purchaseOrder id="1121076">
...
</purchaseOrder>
</purchaseOrderList>
</orderUpdateResponse>Empty response:
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.1">
<purchaseOrderList/>
</orderUpdateResponse>Single Return Response
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.2">
<return id="629929538">
<buyerCurrency>GBP</buyerCurrency>
<buyerEmail>abcdeg@gmail.com</buyerEmail>
<buyerRefundAmount>48.53</buyerRefundAmount>
<buyerRefundDate>
<date><day>9</day><month>11</month><year>2024</year></date>
<time><hour>8</hour><minute>52</minute><second>13</second></time>
</buyerRefundDate>
<comments>Pages were ripped</comments>
<initiatedDate>
<date><day>9</day><month>11</month><year>2024</year></date>
<time><hour>8</hour><minute>30</minute><second>13</second></time>
</initiatedDate>
<purchaseOrderItem id="11111111">
<book id="1234567">
<author/>
<description/>
<isbn/>
<price>50.0</price>
<title>Book Title</title>
<vendorKey>ABE-1000000</vendorKey>
</book>
<orderDate>
<date><day>9</day><month>11</month><year>2024</year></date>
<time><hour>8</hour><minute>30</minute><second>13</second></time>
</orderDate>
<purchaseOrder id="2222222"/>
<sellerTotal>58.5</sellerTotal>
<status code="24">Returned/Refunded</status>
</purchaseOrderItem>
<returnReason code="04">Item was damaged</returnReason>
<returnStatus code="L">Buyer refunded</returnStatus>
<sellerBilledDate>
<date><day>9</day><month>11</month><year>2023</year></date>
<time><hour>10</hour><minute>55</minute><second>11</second></time>
</sellerBilledDate>
<shipper>MyShipper</shipper>
<shipperTrackingCode>123456789</shipperTrackingCode>
<returnlessRefundRule id="RR-00001"/>
</return>
</orderUpdateResponse>Return Response Element Reference
- return id — The unique identifier for a return. Each return id is associated with a single purchaseOrderItem.
- buyerCurrency — The currency the buyer was refunded in.
- buyerEmail — The buyer's email.
- buyerRefundAmount — The amount refunded to the buyer in buyer currency.
- buyerRefundDate — The date the buyer was refunded. Can be empty if the return is still "In progress".
- comments — Comments from the initiator of the return, can be from either the buyer or seller.
- initiatedDate — The date the return was initiated.
- purchaseOrderItem — The detail of the item being refunded. A purchaseOrderItem may appear for more than one return if a return has been cancelled and a new return is created.
- returnReason — The reason why the return was made, includes both the reason code and text description.
- returnStatus — The current status of the return, includes both the status code and text description.
- sellerBilledDate — The date the refund charge was billed to the seller. Can be empty if the return is still "In progress".
- shipper — The return shipper name provided by the buyer. Can be empty.
- shipperTrackingCode — The return shipper tracking code provided by the buyer. Can be empty.
- returnlessRefundRule id (v1.2+) — The Returnless Refund Rule ID of the rule that matched on this return, indicating that the buyer was told not to ship the book back and would be processed automatically. If blank, the return has gone through the regular returns process.
List of Returns Response
Used in the searchReturns response. Multiple returns inside a returnList tag, each with the same format as the single return response.
<?xml version="1.0" encoding="ISO-8859-1"?>
<orderUpdateResponse version="1.1">
<returnList>
<return id="1121066">
...
</return>
<return id="1121076">
...
</return>
</returnList>
</orderUpdateResponse>