API reference

Orders

Order endpoints handle the complete order lifecycle, from creation to tracking. Supports both doorstep and season order fulfillment.


GET /Carts

Retrieve saved shopping carts created via the API or B2B portal.

Parameters

No query parameters required beyond standard headers.

Refresh Schedule

Data is updated in real-time.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Carts`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const carts = await res.json()

Response

[
  {
    "CartId": 0,
    "PONumber": "string",
    "Note": "string",
    "Items": [
      {
        "VariantNo": "string",
        "Quantity": 0,
        "Note": "string"
      }
    ]
  }
]

POST /Carts

Create a new shopping cart for customer continuation. The system tracks the cart origin for reference.

Payload

All fields marked with * are optional.

{
  *"PONumber": "string",
  *"Note": "string",
  "Items": [{
             "Sku": "020056-07",
             "Quantity": 0,
             *"Note": "string"
           }]
}

Important

The sku variable could be either the HLC variant number, UPC, EAN or Vendor Number.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Carts/Create`, {
  method: 'POST',
  headers: {
    Authorization: apiKey,
    language: 'en',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    cartName: 'Spring 2026 Order',
    items: [
      { variantNo: '020056-07', quantity: 5 },
      { variantNo: '030012-M', quantity: 3 },
    ],
  }),
})

const cart = await res.json()

Response

{
  "CartId": 0
}

POST /Orders/Prices

Retrieve order pricing for validation before order submission.

Important

Originally introduced in API version 4.0, now available across all API versions.

Payload

{
  "OrderLines": [
    {
      "Sku": "string",
      "Quantity": 0
    }
  ]
}

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Prices`, {
  method: 'POST',
  headers: {
    Authorization: apiKey,
    language: 'en',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    OrderLines: [
      {
        Sku: '500027-01',
        Quantity: 1,
      },
      {
        Sku: '620185-05',
        Quantity: 2,
      },
      {
        Sku: '030152-04',
        Quantity: 10,
      },
    ],
  }),
})

const order = await res.json()

Response

{
  "ResponseLines": [
    {
      "LineTotal": 0,
      "ItemPrice": 0,
      "OriginalPrice": 0,
      "Sku": "string",
      "Quantity": 0
    }
  ],
  "OrderSubTotal": 0
}

GET /Orders

Retrieve order history with line item details.

Parameters

The following request parameters are available:

ParameterDescription
dateFromStarting date from which orders will be returned. Supported formats: 'mm/dd/yyyy' and 'yyyy-mm-dd'.
dateToEnding date up to which orders will be returned. Supported formats: 'mm/dd/yyyy' and 'yyyy-mm-dd'.

Refresh Schedule

Data is refreshed 4 times daily.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(
  `${baseUrl}/Orders?dateFrom=2026-01-01&dateTo=2026-01-31`,
  { headers: { Authorization: apiKey, language: 'en' } },
)

const orders = await res.json()

Response

[{
  "OrderId": 0,
  "AccountNo": "string",
  "OrderNumber": "string",
  "OrderDate": "2017-03-21T16:39:36.950Z",
  "OrderDateText": "string",
  "OrderDateHourText": "string",
  "StoreName": "string",
  "ShippingAddress": {
                      "Street": "string",
                      "City": "string",
                      "State": "string",
                      "PostalCode": "string"
                     },
  "CartName": "string",
  "PoNumber": "string",
  "LanguageId": "string",
  "OrderType": "string",
  "OrderStatus": "string" (Processing, Invoiced),
  "SubTotal": 0,
  "PaymentTerms": "string",
  "PaymentMethod": "string",
  "SubmittedBy": "string",
  "NumShipments": 0,
  "OrderLines": [{
                  "LineId": 0,
                  "VariantNo": "string",
                  "Description": "string",
                  "Qty": 0,
                  "NetPrice": 0,
                  "DisplayNetPrice": "string",
                  "Note": "string",
                  "NetAmount": 0,
                  "DisplayNetAmount": "string",
                  "KitVariantNo": "string",
                  "KitSeqNo": "string",
                  "LabelPrice": 0,
                  "LabelPriceFormatted": "string",
                  "DealerBarcode": "string"
                }]
}]

POST /Orders/Create/FulFillment

Create fulfillment orders.

Important

This endpoint is deprecated but remains functional for v3.0 compatibility. Use /Orders/FulFillment for v4.0+ implementations. Request body schemas differ between versions.

Parameters

No query parameters required. Request body contains order details.

Payload

All fields marked with * are optional.

{
 *"OrderOptions":{
    "PONumber": "string",
    "Note": "string"
 },
 "ShippingOptions":{
    *"CarrierAccountNumber": "string",
    "SignatureRequired": false|true,
    *"DocumentLanguage": "en|fr",
    "DeliveryAddress":{
       "ContactName": "string",
       "Street": "string",
       "City": "string",
       "State": "string",
       "ZipCode": "string",
       "CountryCode": "ca|us",
       *"PrimaryPhoneNumber": "phone"
     }
 },
 "ReturnOptions":{
   *"ReturnAddressID": 1
 },
 "Items":[{
   "Sku": "020056-07",
   "Quantity": 0,
   *"Note": "string"
   }]
}
  • If ReturnAddressID is not sent, the service will take by default the address that is set on the My Account > Doorstep Delivery preferences page. Otherwise, the ID should be retrieved by calling the Account/Addresses function, and taking the ID of the address of Type Shipping that you want as a return address.
  • The State of the DeliveryAddress must be the abbreviated (2 letters) code. Please refer to the State Codes table below.
  • Please be advised that **the Note in the OrderOptions is the equivalent of the Special Processing Instructions ** in the cart when submitting an order through the website. This means that one of our team members will be required to personally review this order. This may cause a delay in processing, and ultimately, in delivery.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
  method: 'POST',
  headers: {
    Authorization: apiKey,
    language: 'en',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    items: [{ variantNo: '020056-07', quantity: 2 }],
    shippingAddress: {
      name: 'John Doe',
      address1: '123 Main St',
      city: 'Springfield',
      state: 'IL',
      zip: '62701',
    },
  }),
})

const order = await res.json()

Response

{
  "CartId": 123456
}

POST /Orders/FulFillment

Create fulfillment orders.

Important

Available in API version 4.0 and later.

Parameters

No query parameters required. Request body contains order details.

Payload

{
  "ShippingAddress": {
    "Name": "string",
    "Street": "string",
    "City": "string",
    "StateCode": "None",
    "ZipCode": "string",
    "CountryCode": "None",
    "PrimaryPhoneNumber": "string",
    "IsResidential": true
  },
  "Note": "string",
  "PurchaseOrderNumber": "string",
  "SignatureRequired": true,
  "DocumentLanguage": "string",
  "OrderLines": [
    {
      "Sku": "string",
      "Quantity": 0,
      "Note": "string",
      "Warehouse": "string"
    }
  ]
}
  • If ReturnAddressID is not sent, the service will take by default the address that is set on the My Account > Doorstep Delivery preferences page. Otherwise, the ID should be retrieved by calling the Account/Addresses function, and taking the ID of the address of Type Shipping that you want as a return address.
  • The State of the DeliveryAddress must be the abbreviated (2 letters) code. Please refer to the State Codes table below.
  • Please be advised that **the Note in the OrderOptions is the equivalent of the Special Processing Instructions ** in the cart when submitting an order through the website. This means that one of our team members will be required to personally review this order. This may cause a delay in processing, and ultimately, in delivery.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
  method: 'POST',
  headers: {
    Authorization: apiKey,
    language: 'en',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    DocumentLanguage: 'en',
    OrderLines: [
      {
        Sku: '010828-01-26',
        Quantity: 1,
        Note: 'Demo',
        Warehouse: '',
      },
    ],
    PurchaseOrderNumber: 'PO#1000',
    ShippingAddress: {
      Name: 'John Doe',
      Street: '1000 BestBike East',
      City: 'North Vancouver',
      StateCode: 'BC',
      ZipCode: 'V7L 1A4',
      CountryCode: 'CAN',
      PrimaryPhoneNumber: '+16466756646',
      isResidential: true,
    },
    SignatureRequired: 'true',
    Note: 'THIS IS A TEST',
  }),
})

const order = await res.json()

Response

{
  "id": "string",
  "Status": "string",
  "ContactEmailAddress": "string",
  "PurchaseOrderNumber": "string"
}

POST /Orders/Season

Create season orders.

Important

Originally introduced in API version 4.0, now available across all API versions.

Parameters

No query parameters required. Request body contains order details.

Payload

{
  "DeliveryLocationId": 0,
  "PurchaseOrderNumber": "string",
  "OrderLines": [
    {
      "Sku": "string",
      "Quantity": 0,
      "Note": "string",
      "Warehouse": "string"
    }
  ],
  "Note": "string"
}

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Create/FulFillment`, {
  method: 'POST',
  headers: {
    Authorization: apiKey,
    language: 'en',
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    DeliveryLocationId: 1,
    Note: '',
    PurchaseOrderNumber: 'PO#10000',
    OrderLines: [
      {
        Sku: '751417-01',
        Quantity: 1,
        Note: 'Demo',
        Warehouse: '',
      },
      {
        Sku: '891049-01',
        Quantity: 1,
        Note: 'Demo',
        Warehouse: '',
      },
    ],
  }),
})

const order = await res.json()

Response

{
  "id": "string",
  "Status": "string",
  "ContactEmailAddress": "string",
  "PurchaseOrderNumber": "string"
}

GET /Orders/Packages

Retrieve shipment tracking information for your orders.

Parameters

The following request parameters are available:

ParameterDescription
orderNumberThe order number to track.

Refresh Schedule

Data is updated every 15 minutes.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Tracking?orderNumber=ORD-12345`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const tracking = await res.json()

Response

[
  {
    "SalesId": "string",
    "PoNumber": "string",
    "OrderShippingStatus": "string",
    "Packages": [
      {
        "PackageId": "string",
        "TrackingNumber": "string",
        "Carrier": "string",
        "Items": [
          {
            "VariantNo": "string",
            "Qty": 0
          }
        ],
        "ContainerTypeCode": "string"
      }
    ],
    "UnshippedQuantities": [
      {
        "VariantNo": "string",
        "Qty": 0
      }
    ]
  }
]

GET /Orders/Tracking

Retrieve shipment tracking information for your orders.

Parameters

The following request parameters are available:

ParameterDescription
cartIdsThe cart ids of the orders to track.

Refresh Schedule

Data is updated every 15 minutes.

Example

Request

const baseUrl = 'https://api.hlc.bike/us/v4.1'
const apiKey = process.env.HLC_API_KEY

const res = await fetch(`${baseUrl}/Orders/Tracking?orderNumber=ORD-12345`, {
  headers: { Authorization: apiKey, language: 'en' },
})

const tracking = await res.json()

Response

[
  {
    "OrderNumber": "string",
    "CartId": "string",
    "Carrier": "string",
    "BoxNumber": "string",
    "TrackingNumber": "string",
    "TrakingUrl": "string",
    "PurchaseOrderNumber": "string"
  }
]

Previous
Catalog