D&H Distributing Tools
Written By Christopher Scaminaci
Last updated 7 days ago
D&H Distributing Tools
dnh_ · 18 tools · Free 16 · Pro 2
Two independent D&H surfaces in one connector, sold separately, so either can be configured alone. The REST Customer Order Management API uses a client id and secret; every call carries a company code - US, Canada or DSC - and a ten-digit account number, both defaulted from the credential and overridable per tool. It pages on a scroll id with a page size that must be a multiple of ten between 10 and 200, and array filters are comma-joined and capped at 50 values. The XML dispatch surface authenticates with a D&H website user code and password carried inside the request document, and its XML responses are converted to JSON. That vocabulary forks by country: the US and Canada offer different carriers and branches, Canada uses province and postal code rather than state and ZIP, and Canada has no expected-ship-date element - supplying one is rejected rather than ignored. Neither surface has a cancellation endpoint.
All connector tools · D&H Distributing setup guide
D&H Distributing tool groups
- Items — 8 tools
- Orders — 4 tools
- XML Items — 4 tools
- XML Orders — 2 tools
Items
dnh_get_item details
dnh_get_item details
[D&H Distributing] Get full product detail for one D&H item — more than price and availability alone return. itemId is the D&H item number (e.g. TI83PLUS); to look an item up by manufacturer part number, customer item number or UPC, use dnh_search_items instead.
dnh_get_item_availability details
dnh_get_item_availability details
[D&H Distributing] Get real-time inventory availability for one D&H item, broken down by distribution centre. itemId is the D&H item number (e.g. TI83PLUS). Use this before submitting an order to confirm stock, and dnh_get_item_availability_bulk for up to 50 items at once.
dnh_get_item_availability_bulk details
dnh_get_item_availability_bulk details
[D&H Distributing] Get real-time inventory availability for up to 50 items in one call, each broken down by distribution centre. Identify items either by D&H item number (items) or by your own customer item numbers (customerItemNumbers); each list is capped at 50. Provide at least one of the two lists.
dnh_get_item_price details
dnh_get_item_price details
[D&H Distributing] Get the real-time customer-specific price for one D&H item. itemId is the D&H item number (e.g. TI83PLUS), not the manufacturer part number — use dnh_search_items to resolve a manufacturer number or UPC first. Pass quantity to get volume pricing for that quantity. For several items at once use dnh_get_item_prices_bulk (up to 50).
dnh_get_item_price_and_availability details
dnh_get_item_price_and_availability details
[D&H Distributing] Get price and inventory availability for one D&H item in a single call — the tool to prefer when quoting, since it halves the round trips versus dnh_get_item_price plus dnh_get_item_availability. itemId is the D&H item number (e.g. TI83PLUS). Pass quantity for volume pricing.
dnh_get_item_price_and_availability_bulk details
dnh_get_item_price_and_availability_bulk details
[D&H Distributing] Get price and inventory availability together for up to 50 items in one call — the most efficient way to build a multi-line quote. Identify items either by D&H item number (items) or by your own customer item numbers (customerItemNumbers); each list is capped at 50. Provide at least one of the two lists.
dnh_get_item_prices_bulk details
dnh_get_item_prices_bulk details
[D&H Distributing] Get customer-specific prices for up to 50 items in one call. Identify items either by D&H item number (items) or by your own customer item numbers (customerItemNumbers); each list is capped at 50 and anything beyond that is dropped. Provide at least one of the two lists.
dnh_search_items details
dnh_search_items details
[D&H Distributing] Find D&H products by manufacturer part number, your own customer item number, or UPC — the tool to reach for when you do not yet know the D&H item number. Supply at least one search criterion. Results page via scrollId: pass the scrollId returned by the previous call to fetch the next page. pageSize must be a multiple of 10 between 10 and 200 (default 50) and is rounded down to a multiple of 10 if it is not.
Orders
dnh_create_sales_order details
dnh_create_sales_order details
[D&H Distributing] Submit a sales order to D&H. DESTRUCTIVE AND NOT REVERSIBLE: this places a real purchase order against the customer's D&H account and there is no cancellation endpoint — a mistake has to be resolved with a D&H sales representative. Confirm price and stock with dnh_get_item_price_and_availability_bulk and carrier names with dnh_list_carriers first. orderJson is the order body. Required: customerPurchaseOrder (your PO, max 30 chars; use a fresh PO per order — D&H documents duplicate-PO rejection for its XML lane and the REST spec is silent on the rule, so do not rely on reuse either way) and shipments — an array where each entry has lines, an array of line objects carrying exactly one of item (D&H item number) or customerItemNumber, plus orderQuantity. Optional per shipment: branch (BR01 Mid-Atlantic, BR03 Toronto, BR04 West Coast, BR05 Midwest, BR06 Atlanta, BR08 Vancouver — omit to let D&H pick the best warehouse). Optional per line: unitPrice, fulfillEntireQuantityOnly, externalLineNumber, clientReferenceData. Optional at the top level: shipping (serviceType one of pickup/ground/nextDay/secondDay/nextDaySaturdayDelivery/firstClassMail/priorityMail, carrier, allowPartialShipment, allowBackOrder — setting both allow flags false can cause D&H to cancel an order it cannot fill completely), deliveryAddress (drop-ship authorized accounts only; requires deliveryName and address with street/city/region/postalCode/country), endUserData, specialInstructions (any value routes the order to a D&H representative for manual review), freightBillingAccount, flooringAuthorizationNumber, clientReferenceData, enrollDevices with customerOrganizationId. Example: {"customerPurchaseOrder":"PO-1042","shipping":{"carrier":"FedEx","serviceType":"ground"},"shipments":[{"lines":[{"item":"TI83PLUS","orderQuantity":5}]}]}
dnh_get_sales_order_tracking details
dnh_get_sales_order_tracking details
[D&H Distributing] Get the status and shipment tracking of one sales order by its D&H order id. Use dnh_list_sales_order_tracking when you only have a purchase order number or an invoice number.
dnh_list_carriers details
dnh_list_carriers details
[D&H Distributing] List the shipping carriers available to this account for order placement. Call this before dnh_create_sales_order to get valid carrier names — the order's shipping.carrier must be one of these. Optionally filter by shipMode: parcel, lessThanTruckload, or fullTruckload. Results page via scrollId; pageSize is a multiple of 10 from 10 to 200 (default 50).
dnh_list_sales_order_tracking details
dnh_list_sales_order_tracking details
[D&H Distributing] Look up the status and shipment tracking of previously submitted orders by D&H order number, your purchase order number, or D&H invoice number. At least one of the three identifiers is required. Use this to answer "where is my order" and to retrieve carrier tracking numbers. Results page via scrollId; pageSize is a multiple of 10 from 10 to 200 (default 50).
XML Items
dnh_xml_get_availability details
dnh_xml_get_availability details
[D&H Distributing] Get inventory availability for up to 50 D&H items via the XML dispatch surface, broken down by distribution centre. Needs the DandH.com user code and password rather than the REST API credentials. Prefer dnh_get_item_availability_bulk unless this account only has XML access. Each ITEM returns a BRANCHQTY array of BRANCH, QTY and INSTOCKDATE (the expected restock date when a branch is out of stock) plus TOTALQTY across all branches. Anything past the first 50 item numbers is dropped.
dnh_xml_get_price details
dnh_xml_get_price details
[D&H Distributing] Get unit prices for up to 50 D&H items via the XML dispatch surface. Needs the DandH.com user code and password rather than the REST API credentials. Prefer dnh_get_item_prices_bulk unless this account only has XML access. Returns an ITEM array of PARTNUM plus UNITPRICE; an item that could not be priced carries a MESSAGE instead. Anything past the first 50 item numbers is dropped.
dnh_xml_get_price_and_availability details
dnh_xml_get_price_and_availability details
[D&H Distributing] Get price and inventory availability together via the XML dispatch surface. NOTE the lower limit: a combined request accepts only 25 item numbers, half the 50 that dnh_xml_get_price and dnh_xml_get_availability allow, and anything past the first 25 is dropped. Needs the DandH.com user code and password rather than the REST API credentials. Prefer dnh_get_item_price_and_availability_bulk unless this account only has XML access.
dnh_xml_item_inquiry details
dnh_xml_item_inquiry details
[D&H Distributing] Get detailed product data for ONE item via the XML dispatch surface — the richest item read D&H offers, and the only one exposing several of these fields: UNITPRICE at the quantity you ask for (volume pricing), ERP (estimated retail price), REBATEVALUE and REBATEENDDATE, and the ISNONSTOCK, ISFACTORYDIRECT, FREEFRT and RESTRICTED flags, plus per-branch quantities. Needs the DandH.com user code and password rather than the REST API credentials. Set lookupType to DH when partNumber is a D&H item number, or MFR when it is a manufacturer part number.
XML Orders
dnh_xml_create_order details
dnh_xml_create_order details
[D&H Distributing] Submit an order via the XML dispatch surface. DESTRUCTIVE AND NOT REVERSIBLE: a real purchase order on the customer's D&H account, no cancellation endpoint, and the PO number must be unique per account. ALWAYS read STATUS before treating the order as placed: success carries ORDERNUM; failure carries MESSAGE and no ORDERNUM, and is an ORDINARY RESULT, not an error. A retry with the same PO is rejected rather than deduplicated, so use a fresh PO. Prefer dnh_create_sales_order unless this account only has XML access. Confirm price and stock first. RESULT SHAPE in full: a placed order is {"ORDERNUM":"5005560","STATUS":"success"} (ORDERNUM is the D&H order number, present only on success); a rejected one is {"STATUS":"failure","MESSAGE":"..."} with no ORDERNUM. D&H reports submission failure inside the document, so a response is not proof the order exists. Both countries' guides document the same three elements. The XML service serves BOTH the US (dandh.com) and Canada (dandh.ca), and the accepted values below differ by country. The country is configured on the connector, not passed here. Every closed-vocabulary value is checked BEFORE transmission, and a rejection names this tenant's own valid values — so when in doubt, submit and read the error rather than guessing; no PO number is consumed by a rejected request. Shipping: shipCarrier is one of Pickup, UPS, FedEx, USPS (US) or Pickup, FedEx, Purolator (Canada). shipService is one of Pickup, Ground, 2nd Day Air, Next Day Air, FirstClassMail, PriorityMail, Red Sat Del (US) or Pickup, Ground, 2nd Day Air, Next Day Air (Canada). onlyBranch and a line's branch use distribution-centre city names — Harrisburg, California, Chicago or Atlanta (US); Toronto or Vancouver (Canada) — NOT the BR01-BR08 codes the REST API uses; omit both to let D&H pick the best branch from the ship-to address. expectedShipDate is US-only and is REJECTED on a Canadian account rather than dropped. Fulfilment flags matter: allowPartialShipment and allowBackOrder both default to true when omitted. Setting BOTH to false means the order FAILS unless every quantity is available at one branch. false/true backorders the shortfall; true/false spreads across branches and silently drops what it cannot fill; true/true spreads and backorders. linesJson is a JSON array of line objects: partNumber and quantity are required, branch and price optional (price is available to select accounts only). endUserDataJson is an optional JSON object of end-user registration fields keyed by D&H field name — valid keys are ORGANIZATION, ATTENTION, ADDRESS, ADDRESS2, CITY, PONUM, DEPARTMENT, PHONE, FAX, EMAIL, AUTHQUOTENUM, MCN, CCOIDNUM, SERIALNUM, ESDEMAIL, RESELLEREMAIL, RESELLERPHONE, CUSTACCTNO, DATEOFSALE, MODELNO, SKU, DOMAIN, ADMINEMAIL, UPDATETYPE, SUPPORTSTARTDATE, plus STATE and ZIP on a US account or PROVINCE and POSTALCODE on a Canadian one. Any value in remarks puts the order On Hold awaiting a D&H sales representative — it is not a free annotation field. Drop-ship fields (shipTo*) apply to drop-ship authorized accounts only and may need dropShipPassword.
dnh_xml_get_order_status details
dnh_xml_get_order_status details
[D&H Distributing] Look up detailed order status via the XML dispatch surface — the richest order read D&H offers. Returns, per order and branch: order date, PO and order numbers, invoice number (or "In Process"), INVTOTAL with tax/environmental-handling/freight/handling/subtotal attributes, sold-to and ship-to addresses, an ORDERDETAIL line list with price, quantity to ship, QTYBO backordered quantity, ETA, vendor and description, and a PACKAGE list with carrier, service, tracking number, ship date and the serial numbers of the items in each package. MESSAGE carries the order milestone: Cancelled, In-Process, Order Sent to Vendor for Fulfillment, Backordered, Shipped, or Invoiced. Supply any combination of purchase order numbers, D&H order numbers and D&H invoice numbers; each identifier is looked up separately and the combined total across all three lists is capped at 50. Backordered items produce an extra ORDERSTATUS entry: an entry with INVTOTAL 0 and QTYBO above 0 points at a spawned order number carrying the backordered quantity. Needs the DandH.com user code and password.
More in Tools Reference
Atera ToolsAuvik ToolsAvanan (Check Point Harmony Email) ToolsConnectWise Sell ToolsStill need help? Ask the team