eHub API ## Sections • [API Reference](https://docs.ehub.com/api-reference.md): Introduction eHub is built to help systems optimize order fulfillment with powerful API functionality. Key features include checking shipping rates, purchasing labels, generating manifests, and consolidating orders from multiple ecommerce platforms. API Overview The eHub API follows REST principles, making it accessible and easy to use through standard HTTP methods. This guide will walk you through available endpoints, request and response formats, and best practices to help you get the most out of the API. Supported Request Body Content Types The eHub API supports multiple content types for request bodies, ensuring flexibility and compatibility with different data formats. Ensure the Content-Type header in your requests matches the format of your request body. Accepted Content Types: application/json application/xml application/x-www-form-urlencoded Depending on the endpoint, the required content type may vary. Check the corresponding endpoint documentation for correct usage. Rate Limiting and Throttling The eHub API is optimized to handle high volumes of requests with minimal rate limiting or throttling. While no strict caps are enforced, for optimal performance, it's recommended to limit parallel requests to a maximum of 10 per API token. Following this guideline helps ensure efficient operation and system reliability. By following these guidelines, you can ensure the best performance and reliability when using the eHub API. • [API Versioning](https://docs.ehub.com/api-versioning.md): The eHub API uses versioning to maintain backward compatibility, allowing new features and updates to be introduced without disrupting existing integrations. Each version is embedded within the URL path, enabling developers to target specific API versions for their applications. Current Version The latest available version is v2 . You can access this version by appending the following path to the base URL: Plain text /api/v2/ For example, API request URL would look something like this: https://api.ehub.com/api/v2/{specific_endpoint} Versioning Strategy When a new version is released, the previous version remains available to ensure the continuity of your current integration. This approach allows flexibility to upgrade to the latest version when you're ready, allowing you to leverage new features and improvements without disrupting your existing processes. • [Authentication](https://docs.ehub.com/authentication.md): API Authentication All requests to the eHub API require authentication via Bearer Token, referred to as an API key in this documentation. each user receives a unique API key, ensuring individual access. If multiple users have API access within the same account, each user will have their own API key. Obtaining Your API Key To be assigned an API key, your user account must have the API role . To view the API keys for other users within the eHub account, your account must have the Primary or Owner role. To locate your API token: Log in to your eHub account at app.ehub.com Navigate to Settings → Users . Locate your user with the API role. Copy the token listed under the API KEY field. You can copy the API key with one click using the copy button to the right of the key. Using the API Token Once you have obtained your API key, include it in the Authorization header of your HTTP requests. The token must be prefixed with the word Bearer followed by a space, formatted like this: Plain text Authorization: Bearer YOUR_API_KEY Example request using the API token: Plain text curl --request GET \ --url https://api.ehub.com/api/v2/test/ping \ --header 'Authorization: Bearer {your_api_key}' \ --header 'Content-Type: application/json' Forgetting to include an API key when making a request will lead to an Unauthorized 401 error. Status: 401 - Unauthorized Plain text { "status": "error", "error_code": "errors.insufficient_scope", "error_message": "Token does not allow access to service." } • [Accounts](https://docs.ehub.com/accounts.md): eHub offers a flexible parent-child account structure that enables users with the appropriate permissions on a parent account to make API requests on behalf of child accounts. This is particularly advantageous for businesses such as 3PLs that manage multiple customers, each with its own shipping carriers and eCommerce platform integrations. API Request Using Parent-Child Relationship By leveraging the parent-child relationship, the parent account can make API requests on behalf of the child account using the parent account's API key , but targeting the child account's unique ID . This avoids the hassle of managing multiple API keys for each child account. Benefits of the Parent-Child Structure Separation of Data : Each child account maintains its own set of connections and data, keeping customer-specific data isolated. Centralized Management : The parent account can easily manage all child accounts using a single API key. Simplified API Requests : You can execute API requests for child accounts by simply specifying the child account's ID. Endpoints Available for Parent-Child API Requests Rates Shipments Order Stores Use Case Example For instance, if your customer "Child Company A" uses WooCommerce and has its own UPS shipping account, you can set up a child account in eHub specifically for that customer. This ensures that all of the data and integrations remain exclusive to that child account, creating a clean separation between different customer setups. If the child account's customer ID is 452 , then the parent would make their API request like this: CURL curl --request GET \ --url https://api.ehub.com/api/v2/customers/452/order_stores \ The response to this request will show all eCommerce integration connections for child customer 452. • [Test](https://docs.ehub.com/test.md): Ping-Pong Test The Ping Pong Test is a straightforward method used to check the health and availability of an API or system. By sending a "ping" request, the client asks the server if it's operational. If the server is functioning properly, it responds with a "pong." This lightweight request-response mechanism allows for quick diagnostics to confirm that the API is up and running. Benefits of the Ping Pong Test: System Health Checks : Ensures the API is operational. Connectivity Tests : Verifies successful communication between the client and server. Troubleshooting : Quickly identifies whether an issue is related to system downtime or connectivity problems. For eHub, the Ping Pong Test helps users ensure the API is online and responsive before moving forward with more complex API calls. • [Ping](https://docs.ehub.com/test/ping.md): A successful pong will indicate that eHub is up and running • [Rates](https://docs.ehub.com/rates.md): To successfully retrieve rates, you must provide key details. While the shipment object can include additional parameters, the following example highlights the minimum information required to generate accurate rates. The more specific your shipment details are, the more precise your rate results will be. For more information, please refer to the Rate Request page for more details and parameters. Minimum Shipment Details (JSON Example) JSON { "shipment":{ "to_location":{ "first_name":"string", // or company "address1":"string", "city":"string", "state":"string", // for a US state use the two-digit state code "country":"string", // two-digit country code "postal_code":"string", "phone":"string" }, "from_location":{ "company":"Test Test", // or first_name "address1":"string", "city":"string", "state":"string", "country":"string", "postal_code":"string", "phone":"string" }, "parcels":[ { "length":6.0, // inches "width":2.0, // inches "height":2.0, // inches "weight":36.0, // ounces "package_type":"string", } ] } } A request containing only this data will return rates for all enabled services your account qualifies for. For example, FedEx Ground and FedEx Home Delivery will not return for the same shipment since they are mutually exclusive depending on whether the destination (to_location) is residential or commercial. If you wish to narrow the results, you can include one of the following parameters within the shipment object. Service Filters You can specify desired services using the include_services field, an array containing service IDs. The service IDs can be either an integer or a string that represents the ID of the service you want to retrieve rates for. Service Filter Example (JSON) JSON { "include_services": [ 1172, // USPS Ground Advantage "686" // USPS Parcel Select ] } Including this array in your request will limit the response to rates for USPS Ground Advantage and USPS Parcel Select only. Carrier Filters To include services from specific carriers only, use the include_carriers field: Carrier Filter Example (JSON) JSON { "include_carriers": [ "usps", "fed_ex", "dhl_ecommerce" ] } To exclude services from specific carriers, use the exclude_carriers field: Exclude Carrier Example (JSON) JSON { "exclude_carriers": [ "ups", "dhl_express" ] } If you omit filtering parameters, all available services will be available for the given shipment, as no specific services or carriers are excluded. Warnings If there are any issues retrieving rates, warnings or error messages from the carrier's API will be relayed back and stored in the warnings array of the response body. This allows for a successful response even if one carrier encounters an issue while others return rates successfully. Warning Example (JSON) JSON { "warnings": [ "FedEx returned error: Destination postal code missing or invalid" ] } How to Get FedEx OneRate Rates To receive FedEx OneRate rates, you need to specify both the eligible package type and service based on the contract in the rating or shipment request. Follow these steps: Make a GET /services Call In the response, find the service object relevant to the FedEx service that qualifies for FedEx OneRate under the OneRate contract. The service is usually FedEx 2Day but may vary depending on the contract. Example GET /services Response: JSON { "services": [ ... { "service_id": 393, // <------ "service": "FEDEX_2_DAY", "service_code": "fedex_2day", "carrier_code": "fed_ex", "category": "shipping", "package_types": [ { "type": "fedex_pak", // <------ "name": "FedEx Pak" } ], "sort_order": null } ... ] } In the service object, check the package_types array to find the package type specific to the FedEx OneRate contract. Note the services[i].package_types[i].type , as it will be needed later. 2. Use the service_id and package_type in the Rating Request The shipments.parcels[i].package_type should be set to the package type agreed upon in the FedEx OneRate contract, such as fedex_pak Example Rating Request: JSON { "shipment": { "to_location": {...}, "return_location": {...}, "from_location": {...}, "parcels": [ { "length": 2.0, "width": 2.0, "height": 2.0, "weight": 3.0, "package_type": "fedex_pak", // <------ "parcel_items": [...] } ], "include_services": [393] // <------ fedex_2day } } • [Rate Request](https://docs.ehub.com/rates/rate-request.md): Quickly retrieve rates from your connected carrier accounts. Filter by service or carrier, and provide detailed shipment information for the most accurate results. • [Shipments](https://docs.ehub.com/shipments.md): Fill here with a summary of what can be done with eHub Shipment functionality. Guides for eHub's Shipment Functionality Domestic Shipping Create a Shipment : Initiates a new domestic shipment by providing the destination, origin, parcel details, and selecting a shipping service. Multi-Parcel Shipments : Supports splitting a shipment into multiple parcels. Multiple labels will be returned, each with different tracking numbers. Label Customization : Customize the label format (jpeg, png, zpl, etc.), size (4x6, 8.5x11, etc.), and add custom text or images. Cancel a Shipment : Cancel the shipment and void the label before it’s manifested by the carrier. If successful, the status will return as cancel_pending . International Shipping Customs Information : When shipping internationally, you must include HS codes, EEL/PFC codes, and detailed customs data to comply with regulations. Retrieve Customs PDF : Retrieve a customs document in PDF format, supported by certain carriers. Check for carrier availability of this feature. Additional Tips Dangerous Goods : Specify hazmat codes in the parcel object to handle hazardous materials. Each parcel can contain only one type of hazardous material. Advanced Labeling Features : Create custom tracking events for GDE shipments to show package movement even with long periods between label creation and USPS induction. Rates Overview : Retrieve simplified and organized rates for created shipments, with options to filter by carrier and service level. Tracking Track Shipments : Retrieve tracking information manually via GET requests or set up a webhook for real-time updates. Tracking Events : Create tracking events for GDE shipments to reflect package progress. Retrieve Shipment Status : Check the status of shipments using eHub’s shipment ID. Endorsements For USPS shipments ONLY. Direct the driver on what to do if the package is undeliverable. Enum Values: ADDRESS_CORRECTION - Package is returned to sender with the recipient's correct address. CARRIER_LEAVE_IF_NO_RESPONSE - Package is left at the doorstep if the door is not answered. (does not require signature or recipient presence) CHANGE_SERVICE - Sender is notified of an address change for the recipient. FORWARDING_SERVICE - Redirect the package with a recipient's mail forwarding order if one has been filed. RETURN_SERVICE - Return the package to the sender with the reason why the package couldn't be delivered. Shipment Features eHub's Shipment API provides a powerful and flexible platform for managing all aspects of your shipping operations. With this functionality, you can: Create and Ship Shipments : Seamlessly create and process shipments by providing key details like addresses, parcel dimensions, and service levels. Easily generate shipping labels and track each shipment’s progress. Create and Ship Multiple Shipments : Efficiently manage high-volume shipping with the ability to create and ship multiple parcels at once, streamlining your workflow and reducing manual effort. Retrieve a Shipment : Access detailed information on any shipment with the shipment ID, providing visibility into shipping status and tracking events. Cancel a Shipment : Cancel shipments before they are processed by the carrier and void labels to avoid unnecessary charges. For USPS, manage refunds based on prepay conditions. Create a Shipment: Create a shipment List Shipments: Discover how to retrieve a list of shipments using filters, making it easy to track, audit, and manage high-volume shipping operations. Validate an Address : Ensure addresses are accurate with address validation, preventing delivery issues and reducing the risk of returns or failed shipments. Customs and International Shipping : Simplify international shipping with support for customs data, including HS codes and customs PDF document retrieval for select service providers. Track Shipments and Create Tracking Events : Keep your customers informed with real-time tracking updates through GET requests or webhooks. Create custom tracking events for specific shipments like GDE, ensuring transparency even during long postal induction periods. Rate Management : Retrieve and compare simplified shipping rates from various carriers, helping you make cost-effective decisions for each shipment. eHub’s Shipment functionality empowers businesses to streamline their shipping operations, manage high-volume orders, and ensure a smooth customer experience across domestic and international shipments. • [Guides for eHub's Shipment Functionality](https://docs.ehub.com/shipments/guides-for-ehub-s-shipment-functionality.md): Domestic Shipping Key requirements for creating a domestic shipment: Vital details like destination and origin addresses. Parcel dimensions and service ID selection. Tips for retrieving rates when service ID is unknown. International Shipping Extra steps required for international shipments: Importance of HS Codes and EEL/PFC codes. Providing accurate customs data for compliance with regulations. How to calculate declared value and handle shipments to U.S. territories and military locations. Additional Tips Advanced features and best practices: Handling hazardous materials with hazmat codes. Customizing labels with formats, sizes, text, and images. Managing multi-parcel shipments and creating USPS test labels. Tracking How to track shipments using the API: Manual tracking through GET requests. Automated tracking through webhooks for real-time updates. Examples of tracking event arrays. Conclusion eHub’s Shipment API makes shipping simple, whether you're sending domestic or international packages. With advanced features like label customization, hazmat handling, and real-time tracking, you can streamline your entire shipping process. Whether you're just starting out or handling complex shipments, these guides give you everything you need to succeed. • [Domestic Shipping](https://docs.ehub.com/shipments/guides-for-ehub-s-shipment-functionality/domestic-shipping.md): To successfully create and process a domestic shipment, you must provide the following essential details. While many additional parameters can be added to the shipment object, this example demonstrates the minimum information required to generate a label for a domestic shipment. Plain text { "shipment":{ "to_location":{ "first_name":"string", // or company "address1":"string", "city":"string", "state":"string", // for a US state use the two-digit state code "country":"string", // two-digit country code "postal_code":"string", "phone":"string" }, "from_location":{ "company":"Test Test", // or first_name "address1":"string", "city":"string", "state":"string", "country":"string", "postal_code":"string", "phone":"string" }, "parcels":[ { "length":17.0, "width":20.0, "height":11.0, "weight":240.0, "package_type":"string" } ], "service_id":1172 } } Shipment Object Breakdown Shipment Object: The primary container for all shipment-related details. to_location / from_location: The to_location and from_location objects are required to define the destination and origin addresses. parcels: The parcels array is necessary to specify the package’s dimensions using the fields length , width , height , weight , and package_type. service_id: The service_id identifies the shipping service used (e.g., USPS Priority Mail, UPS Ground, or FedEx 2Day). If you're unsure of the correct service_id needed, use the Rates endpoint to retrieve available rates and service IDs. Errors and Warnings If any of the required fields are omitted, the system will return an error. For example, if the parcel object is missing, you'll see an error message like this: Example Error: Status: 500 - Internal Server Error Plain text { "status": "error", "error_code": "parcel.missing_parcels", "error_message": "Missing parcels for request. At least one parcel is required." } US Territories and Military Shipments Shipping to a U.S. territory or military destination (APO/FPO) requires using a domestic service with USPS. However, the shipment object also needs additional information such as an HS Tariff Code or EEL/PFC code. Refer to the International Shipments section for more details. • [International Shipping](https://docs.ehub.com/shipments/guides-for-ehub-s-shipment-functionality/international-shipping.md): When shipping internationally, it's critical to provide comprehensive information about your product in your shipment request. Incomplete data can lead to customs rejection, product loss, unhappy customers, and wasted postage due to destination country regulations. For any questions about international shipping, feel free to contact your sales representative or reach out to support at support@ehub.com . HS Codes Harmonized System Codes (HS Codes), also known as Tariff Codes, are required details on customs forms. These codes are mandatory for most USPS customs forms and are also necessary for certain FedEx, UPS, DHL, and other carrier forms. For further details, please refer to Harmonized System (HS) Codes . EEL Codes vs PFC Codes If the package value exceeds $2,500.00, a PFC code is required instead of an EEL code. Each object within the parcel_items array must include the eel_pfc field in its customs_data object. The ITN will be formatted similarly to "AES X20120502123456". To acquire an ITN, visit the AESDirect website. Parcel Items and Customs Data Customs information for international shipments is included in the parcel_items array, with each parcel_item object containing a nested customs_data object. Refer to the example below: Plain text "parcel_items": [ { "name": "string", "description": "string", "weight": 0.0, "quantity": 0.0, "price": 0.0, "cost": 0.0, "customs_data": { "content_type": "string", "no_delivery": "string", "hs_tariff_code": "string", "value": 0.0, "eel_pfc": "string" } } ] Depending on the destination country, label creation may fail if the hs_code or eel_pfc is missing. Even if the destination country doesn’t require these codes, it’s recommended to include them along with an accurate description to prevent delays or errors with customs agencies. Declared Value eHub calculates the declared value of your goods based on the following logic: Plain text let declared_value; if (parcel_item.price) { declared_value = parcel_item.price * parcel_item.quantity; } else { declared_value = parcel_item.customs_data.value * parcel_item.quantity; } Example Scenario: The parcel_item.customs_data.value = 159.00 and the parcel_item.quantity = 50.0 , the declared value of the parcel is $7,950.00 • [Additional Tips](https://docs.ehub.com/shipments/guides-for-ehub-s-shipment-functionality/additional-tips.md): Dangerous Goods To indicate that a parcel contains hazardous materials in a Shipment Creation request (POST /shipments/ship ), include the following parameters in the parcel object of the shipment: Plain text "service_options": { "dangerous_goods": { "details": { "type": "CLASS_9_NEW_LITHIUM_DEVICE" } } } The hazmat code must be specified at shipment.parcels[i].service_options.dangerous_goods.details.type . Since each parcel can only contain one type of hazardous material, a multi-parcel shipment can be used to handle various hazmat materials and specify the appropriate hazmat code for each parcel. Shipping Label Customizations Please note that although many customization options are generally available, they are dependent on the carrier's specifications and requirements. Each of these options is located in the main shipment body and should not be nested within any other object of the shipment request. Label Format eHub can generate labels of different format types. jpeg , png , pdf , zpl , epl2 , gif , and tiff For best label quality, we recommend using the zpl format with a ZPL-compatible printer. Plain text "label_format": "zpl" Label Size Typically 4"x6" labels are used but eHub can generate labels with the following sizes. '4x6' , '4x8' , '8x11' , '8.5x11' , '2 5/16x4' , and '3 7/16x5 3/16' Plain text "label_size": "4x6" Label Text and Contents label_text1 / label_text2 - Custom text able to be printed on the label label_contents This object allows for custom text or even an image to be added to the label. WARNING: Each carrier has strict guidelines regarding their shipping labels. Please reach out to support@ehub.com before attempting to utilize this feature. Plain text "label_contents": [ { "label_content": { "type": "string", "text": "string", "base64_image": "string", "location": [ 0, 0 // X and Y coordinates ], "width": 0, "height": 0 } } ] Multi Parcel Shipments Some carriers allow you to split a shipment into multiple parcels by passing several parcel objects within the parcels array. If supported, you will receive multiple labels with different tracking numbers. For any questions, contact support@ehub.com . Plain text "parcels":[ { "name": "string", "length": 0.0, "width": 0.0, "height": 0.0, "weight": 0.0, ... }, { "name": "string", "length": 0.0, "width": 0.0, "height": 0.0, "weight": 0.0, ... }, { "name": "string", "length": 0.0, "width": 0.0, "height": 0.0, "weight": 0.0, ... }, ] USPS Test Labels All USPS test labels will have "VOID" printed all across the barcode The top postage payment area will specify that it is a test label. Test labels are not associated with a real Mailer ID or payment account (EPS) and cannot be accepted by the post office. Attempting to cancel or void a test label typically results in an error due to USPS limitations. While it’s recommended to develop functionality using test labels, ensure you test the cancellation process with a production label before going live. How to Create FedEx OneRate Labels To create FedEx OneRate shipments, you must specify both the eligible package type and the service in the shipment request body, based on the applicable contract Specify the Package Type and Service Ensure the package_type corresponds to the FedEx OneRate contract, such as fedex_pak , and the service_id is based on the relevant service (usually fedex_2day ). 2. Create the Shipment Request Use both the corresponding FedEx OneRate package_type and service_id to create a valid shipment request for a FedEx OneRate shipment: Shipment Request Example: Plain text { "shipment": { "to_location": {...}, "return_location": {...}, "from_location": {...}, "parcels": [ { "length": 2.0, "width": 2.0, "height": 2.0, "weight": 3.0, "package_type": "fedex_pak", // "parcel_items": [...] } ], "service_id": 393 // } } • [Tracking](https://docs.ehub.com/shipments/guides-for-ehub-s-shipment-functionality/tracking.md): When a shipment is created, the API response will include a tracking number from the specified carrier. With eHub's API there are two different ways to receive tracking events. Manually Make a GET request to /shipments request to retrieve the shipment and all tracking events will be returned in the response. Webhook Subscribe to the shipment tracking webhook and receive tracking events as they are sent to eHub. Shipment Example tracking_info Array The tracking_info array provides detailed information about the shipment's tracking status. This includes the shipment's current status, any updates on the shipment's location, and a list of tracking events that document the progress of the parcel through the carrier's network. Plain text "tracking_info": { "status": "manifested", "updated_at": "2024-08-16T12:00:00.000Z", "estimated_delivery_date": null, "delivery_date": null, "tracking_events": [ { "event_date": "2024-08-16T12:00:00.000Z", "status": "manifested", "description": "Shipment information sent to FedEx (Processed by shipper and loaded in truck)", "city": "BUFFALO", "state": "NY", "postal_code": "14216", "country": "US" }, { "event_date": "2024-08-16T08:13:57.000Z", "status": "manifested", "description": "Shipment information sent to FedEx", "city": null, "state": null, "postal_code": null, "country": null } ] } Webhook Example tracking_events Array The tracking_events array in the webhook response provides a real-time record of all tracking updates related to a shipment. Each event includes details such as the date, status, description of the event (e.g., "Out for Delivery"), and location information like city, state, postal code, and country. This allows you to monitor a shipment's journey as updates are received directly from the carrier. Plain text { "tracking_events": [ { "event_date": "2021-08-06T10:06:00.000Z", "status": "available_for_pickup", "description": "Available for Pickup", "city": "MALTA", "state": "MT", "postal_code": "59538", "country": "US" }, { "event_date": "2021-08-06T08:41:00.000Z", "status": "out_for_delivery", "description": "Out for Delivery, Expected Delivery by 9:00pm", "city": "MALTA", "state": "MT", "postal_code": "59538", "country": "US" }, { "event_date": "2021-08-06T08:30:00.000Z", "status": "in_transit", "description": "Arrived at Post Office", "city": "MALTA", "state": "MT", "postal_code": "59538", "country": "US" } ] } • [Create and Ship a Shipment](https://docs.ehub.com/shipments/create-and-ship-a-shipment.md): To create and ship a shipment all at once, you will need to use the Shipment Creation endpoint to buy and generate a label. Here’s how to structure the request, including the headers, parameters, and body data: Key Elements shipment : The main object containing the shipment details. to_location and from_location : The addresses of the sender and recipient. parcels : The details of the parcel(s), including dimensions, weight, and type. service_id : The ID of the shipping service you wish to use (can be retrieved via a rates request). label_format : The format for the label (e.g., "png", "zpl"). label_size : The size of the shipping label (e.g., "4x6"). Once you send this request, the API will return a response with the tracking number and the label, which you can use to ship the package. • [Create and Ship Multiple Shipments](https://docs.ehub.com/shipments/create-and-ship-multiple-shipments.md): This endpoint allows you to create up to 10 shipments in a single request. It will buy and return labels for each shipment. The body of the request should be an array of shipment objects, formatted similarly to the shipments/ship endpoint. Key Elements shipments : An array containing up to 10 shipment objects. shipment : Each shipment object includes to_location , from_location , parcels , and shipping service details. to_location and from_location : Sender and recipient addresses for each shipment. parcels : Details of each package including dimensions, weight, and package type. service_id : Shipping service ID for the carrier. label_format : Specify the format for the label (e.g., "png", "zpl"). label_size : Size of the shipping label (e.g., "4x6"). Once the request is sent, the API will return the tracking numbers and labels for each shipment in the array. • [Retrieve a Shipment](https://docs.ehub.com/shipments/retrieve-a-shipment.md): This endpoint allows you to retrieve a specific shipment using its shipment.id . • [Cancel a Shipment](https://docs.ehub.com/shipments/cancel-a-shipment.md): This endpoint allows you to cancel a shipment and void the label in eHub’s system. Please note that if the label has been scanned by the carrier, you will still be charged. Additionally, USPS, which operates on a prepay basis, holds funds for 30 days before issuing a refund to verify that the label was not used. If the shipment has already been shipped, you must contact the carrier directly to cancel. Response If the shipment is successfully canceled, the response will have a status code of 200. The shipment resource will be returned with all original fields, but the status field will be updated to cancel_pending. These status updates are located in shipment.parcels[i].status and shipment.status. Canceling a Production USPS Label You can cancel a USPS label in production up until it has been manifested in the USPS system. USPS manifests new shipments around 2:00 AM Central Time daily. If you don’t cancel before this time, USPS will reject your cancellation request. Shipments with a ship_date set to the current day will be automatically manifested. You can specify a ship_date up to 14 days in the future to avoid immediate manifesting. Canceling a Test USPS Label You are not charged when a test USPS label is generated, so canceling a test label is not necessary. If you want to test your cancellation functionality, you can try canceling a test label. However, act quickly: USPS will reject cancel requests that aren't sent within a minute of label creation. Canceling Other Carrier Labels For UPS, FedEx, or other carriers, the shipment will be canceled immediately. If the carrier receives the shipment and can verify that the label was used, your account will still be charged. • [List Shipments](https://docs.ehub.com/shipments/list-shipments.md): This endpoint allows you to search for a list of shipments using various filters provided in the query parameters. • [Validate an address](https://docs.ehub.com/shipments/validate-an-address.md): The has_update parameter in the response is used to indicate whether the USPS database has additional information or changes to the address you submitted in your shipment request. This can include details such as: The last four digits of the postal code. An apartment or suite number that may have been missing. If has_update is true , it means that USPS has made an adjustment or provided additional information to the address. • [Create Tracking Events for a Shipment](https://docs.ehub.com/shipments/create-tracking-events-for-a-shipment.md): GDE (Global Direct Entry) shipments can often experience delays between the time a label is created and when the package is officially inducted into the USPS postal stream. This delay can occur due to various reasons such as processing times, transportation, or customs handling. During this period, there may be little to no tracking updates available, which can leave customers uncertain about the status of their shipment. To help keep your customers informed, this endpoint allows you to create custom tracking events for shipments that may experience long periods between label creation and being inducted into the USPS postal stream. These tracking events can simulate package movement to provide updates to your customers. Supported USPS Tracking Codes Only tracking events for the following USPS tracking codes are supported: 80 : Pre-shipment information sent to USPS 81 : Package arrived at USPS facility 82 : Package departed USPS facility Endpoint Overview This endpoint allows you to create tracking events for one shipment at a time . • [Create Tracking Events for Multiple Shipments](https://docs.ehub.com/shipments/create-tracking-events-for-multiple-shipments.md): This endpoint allows you to create tracking events for multiple GDE shipments in a single call, helping keep your customers informed when there are long periods between label creation and the shipment's induction into the USPS postal stream. Supported USPS Tracking Codes The following USPS tracking codes are supported for creating tracking events: 80 : Pre-shipment information sent to USPS. 81 : Package arrived at USPS facility. 82 : Package departed USPS facility. Endpoint Overview This endpoint can handle multiple shipments in a single call. • [Batches and Manifests](https://docs.ehub.com/batches-and-manifests.md): eHub's API offers powerful tools for managing and organizing shipment batches, allowing users to streamline end-of-day processes, manifest shipments, and ensure that all packages are ready for carrier pickup. Below is a high-level summary of the available features: 1. List Shipment Batches With this endpoint, users can access a comprehensive list of previously created batches . This feature enables tracking and reviewing past shipment batches, ensuring that records are easily accessible for auditing or management purposes. 2. Create a Shipments Batch To manifest shipments, this endpoint allows customers to create a new batch, grouping together all shipments they want processed. By generating a batch, all related shipments are documented and prepared for pickup by the designated carriers. 3. Create Batches for a Specific Date This endpoint lets users create batches specifically for shipments scheduled on a particular date. It automatically includes all unmanifested shipments connected to the eHub account for that date, simplifying the batch creation process for time-sensitive deliveries. 4. Retrieve a Batch If users need to view details of a previously created batch, this endpoint allows for easy retrieval of a batch's information. Whether for verification, troubleshooting, or record-keeping, retrieving a batch ensures transparency and accessibility of shipment data. • [List Shipment Batches](https://docs.ehub.com/batches-and-manifests/list-shipment-batches.md): When customers are ready to close out their day or generate a manifest for their shipments, they will need to create a batch that includes all the shipments they want manifested. This ensures that all shipments are correctly documented and ready for carrier pickup. This endpoint provides a list of the previously created batches , allowing customers to easily track and review past batch manifests. • [Create a Shipments Batch](https://docs.ehub.com/batches-and-manifests/create-a-shipments-batch.md): Use this endpoint to generate a daily manifest or scan form. Note that some carriers may have up to a 15-minute delay in generating the physical file. If a PDF isn’t returned in the response but the request was successful, wait a few minutes and try a GET request again. Ensure you only include shipment_ids for a single carrier at a time. Supported Carriers USPS DHL eCommerce Unsupported Carriers UPS UPS has a concept of manifesting that is mainly done through UPS World Ship. However, PC postage providers like EasyPost don't support it, and therefore neither do we. FedEx FedEx doesn't have a concept of manifesting. Carrier-Specific Notes DHL Most carriers will return the manifest instantly, however DHL has an expected manifest creation time of 2-15 minutes. Due to limitations imposed by DHL, clients needing to retrieve or handle the DHL manifest returned from a manifest creation request (batch) should wait at least 1-2 minutes before performing a GET /api/v2/shipments/batches/{shipments_batch_id} request. This will provide the AWS S3 URL located in the "bol_url" field. You can then make a subsequent HTTP GET request to the AWS S3 URL to retrieve the file. For domestic and international shipments: Manifests will be split into separate documents. Example: For 115 shipments, with 41 domestic and 74 international, you will receive two documents, one for the 41 domestic shipments and another for the 74 international shipments. USPS USPS will automatically manifest or close out all shipments for a customer at the end of the day, usually around 2:00 AM Central Time. Attempting to manifest a package that has been manifested by USPS from this automatic closeout process will result in an error. If you need to provide a manifest document to the driver at pick-up, you must create a same-day manifest before USPS automatically closes it out. This document is also known as a Scan Form. • [Create Batches for a Specific Date](https://docs.ehub.com/batches-and-manifests/create-batches-for-a-specific-date.md): This endpoint allows you to create a separate batch for each shipping service provider that supports daily batches. It automatically includes all shipments associated with your eHub account for the specified date that have not yet been manifested. Key Features: Automated Batching : All unmanifested shipments linked to your eHub account for the specified date are automatically included in the batch. Multi-Provider Support : Creates a batch for each shipping service provider that supports daily batching, optimizing shipment processing across different carriers. This endpoint streamlines shipment manifesting by ensuring that all eligible shipments are processed efficiently with their respective carriers. • [Retrieve a Batch](https://docs.ehub.com/batches-and-manifests/retrieve-a-batch.md): Manifest Image Retrieval Manifest images for your shipments are stored in a public AWS S3 bucket and can be accessed via a simple GET HTTP request using the bol_url parameter, which provides the full URL to the stored image. Key Points: Public Access : No authentication is required to retrieve the manifest image since it's stored in a public AWS S3 bucket. Delayed Availability : If you're retrieving a DHL Batch and the bol_url parameter isn't available, wait 2–15 minutes and try again. If it still doesn't appear, contact support at support@ehub.com . This process ensures easy and secure retrieval of your manifest images from the cloud. • [Pickups](https://docs.ehub.com/pickups.md): The Pickups API endpoints allow users to manage the scheduling, retrieval, and cancellation of USPS pickups within the eHub system. These endpoints provide a seamless way to request and manage pickups for shipments, ensuring timely and efficient delivery processes. Whether you're scheduling a USPS pickup or checking availability, these endpoints cover the entire lifecycle of a pickup request. Pickup Management Endpoints The following endpoints enable users to create, retrieve, and cancel pickups, providing control over the logistics of moving shipments: Retrieve a List of Pickups : Retrieve a list of all scheduled pickups, including details like location, shipment IDs, and pickup status. Check Pickup Availability for a Location : Check whether pickups are available at a specific location by providing address details. This ensures that a pickup can be scheduled at the desired location. Request a New Pickup: Schedule a new USPS pickup for your shipments. This endpoint allows you to provide the pickup location, requested time, and shipment details. Retrieve a Scheduled Pickup : Retrieve detailed information about a specific scheduled pickup, including location, requested time, shipment IDs, and instructions. Cancel a Pickup : Cancel a previously scheduled pickup by providing the pickup ID. This ensures that unnecessary or incorrect pickups are canceled promptly. • [List Pickups](https://docs.ehub.com/pickups/list-pickups.md): This API endpoint allows users to retrieve a list of all scheduled pickups. The data returned includes relevant details such as pickup locations, requested times, and associated shipment IDs. • [Check Pickup Availability for Location](https://docs.ehub.com/pickups/check-pickup-availability-for-location.md): This API endpoint allows users to check whether pickups are available at a specific location. The request requires the location details such as address, city, state, and postal code. This is useful for verifying whether a pickup can be scheduled at a given address. • [Request a New Pickup](https://docs.ehub.com/pickups/request-a-new-pickup.md): This API endpoint allows users to schedule a new USPS pickup. You can specify details such as the pickup location, shipment IDs, and the requested pickup time. This endpoint is specifically designed for USPS pickups only. • [Retrieve a Scheduled Pickup](https://docs.ehub.com/pickups/retrieve-a-scheduled-pickup.md): This API endpoint allows users to retrieve detailed information about a previously scheduled pickup. The information returned includes pickup location, shipment IDs, requested times, and any special instructions. • [Cancel a Pickup](https://docs.ehub.com/pickups/cancel-a-pickup.md): This API endpoint allows users to cancel a previously scheduled pickup. You must provide the pickup ID to identify the pickup to be canceled. • [Order Stores](https://docs.ehub.com/order-stores.md): eHub empowers users to connect a wide range of eCommerce services, which we refer to as Order Stores . These connections allow customers to seamlessly consolidate and manage orders through a Transportation Management System (TMS). Below is a summary of how Order Stores work and the endpoints available for managing orders within eHub's system. Order Store Integration eHub provides the functionality to pull orders and related information from connected eCommerce systems, as well as update shipment details back into those systems. This ensures a streamlined order management process from creation to shipping. To view existing Order Stores or to add a new one, users can follow these steps: Log into eHub → Select API on the far left menu → Click on Settings in the API submenu → Click on Stores Adding New Order Stores On the New Order Store page, users can select the type of store they want to connect. The page will guide them through the connection process, which varies by store type—some use OAuth 2.0, while others require keys, URLs, or tokens. The page also shows a table listing the available functionality for each store type, as not all stores support full eHub functionality. Clicking Save will save the store If OAuth 2.0 is required, users will need to Authorize the connection. After completing the connection, users can begin interacting with their order stores. It is not possible to successfully interact with the Order endpoints without first specifying the Order Store in the request URL. Therefore we have the List Order Stores endpoint to retrieve all the store connections you have created through your eHub account and their IDs. You will specify the store ID in your request URL. eHub Order Store Endpoints To interact with Order Stores, you need to retrieve their details using the List Order Stores endpoint, which shows all connected stores and their unique IDs. These IDs will be used in requests to perform actions on specific stores. Below are the key endpoints available: Title Description Endpoint Purpose List Order Stores Shows an array of order stores connected to your eHub account List Orders From an Order Store Shows an array of orders for a specific store Retrieve an Order From an Order Store Shows a single order for a specific store Ship an Order Add shipment information to an order in the order store's eCommerce system Cancel and Order's Shipment Override or delete shipment information on an order in the store's eCommerce system Create Custom Orders Associated with “Custom” order stores which are explained below Update a Custom Order Associated with “Custom” order stores which are explained below Custom Orders and Order Stores eHub supports Custom Order Stores , which are useful for integrating custom software platforms with eHub’s Order Store API. This allows for the storage and management of custom order data that can be accessed by partner software, such as eHub Ship. Custom Order Stores must be created in the eHub portal before using their associated endpoints. • [List Order Stores](https://docs.ehub.com/order-stores/list-order-stores.md): This endpoint will return a list of all the eCommerce stores connected to your eHub account, allowing you to manage and interact with them. • [List Orders From an Order Store](https://docs.ehub.com/order-stores/list-orders-from-an-order-store.md): To retrieve a list of orders for a specific Order Store , you can use the following endpoint. The status filter helps narrow down the results based on the order's shipment status. This endpoint will return a list of orders for a specific order store connected to your eHub account. You can filter the orders based on their shipment status. • [Retrieve an Order From an Order Store](https://docs.ehub.com/order-stores/retrieve-an-order-from-an-order-store.md): o retrieve a specific order from an Order Store , you can use the following endpoint by providing the order_number . This endpoint will return detailed information about a single order from a specific order store. • [Ship an Order](https://docs.ehub.com/order-stores/ship-an-order.md): This endpoint allows you to mark an order as shipped or fulfilled . In some cases, depending on the integration with the eCommerce system, eHub can also upload the shipment information back to the order store. Be sure to check the Order Store in the eHub portal to see if this functionality is supported for your specific integration. • [Cancel an Order's Shipment](https://docs.ehub.com/order-stores/cancel-an-order-s-shipment.md): This endpoint allows you to mark an order's shipment as not shipped or unfulfilled . For certain eCommerce integrations, eHub supports reversing the order's fulfillment status. Please check the Order Store in the eHub portal to confirm if this feature is available for your specific integration. • [Create Custom Orders](https://docs.ehub.com/order-stores/create-custom-orders.md): The endpoint allows you to create orders saved to eHub’s database. This functionality is exclusively available for "Custom" order stores, meaning it is for use in situations where custom software or systems are integrated with eHub’s API. Before attempting to use this endpoint please ensure that you have created an order store in the eHub portal with the type, “Custom”. Users can create custom orders, providing full order details, including billing, shipping, items, and shipment information, which will then be pushed to eHub's database for future use and reference. • [Update a Custom Order](https://docs.ehub.com/order-stores/update-a-custom-order.md): This endpoint allows you to update an order saved to eHub’s database, specifically for "Custom" order stores that were created using the POST endpoint. You must provide the order_number in your request URL to identify the order you wish to update. You don’t need to provide all the order information when updating; you can include only the fields that need to be modified (e.g., payment status, order status). Updating Only payment_status : Plain text { "order": { "payment_status": "paid" } } Shipping a Custom Order To mark an order as fulfilled or shipped in the system, use the Ship an Order endpoint. This allows for easy shipment processing and tracking integration. If you have any questions, feel free to reach out to support at support@ehub.com . • [Services](https://docs.ehub.com/services.md): 1. Provider/Service Information When interacting with eHub’s shipment services, two primary fields are essential: service_id : An integer that helps identify the service and is required when creating a shipment. package_type : An array that lists the supported package types for each service. Use the package_types[i].type value when submitting requests to ensure you're selecting the correct package type. Key Points: Some services include predefined package types (e.g., large envelope, parcel, letter, softpack). If no package types are listed for a service, it defaults to the "parcel" package type. This occurs for services like UPS Express and ExpressPlus. 2. USPS Zone Information: Find Zone Endpoint The Find Zone endpoint helps retrieve USPS zone information based on the provided "to" and "from" postal codes. This is essential for determining the shipping zone for a specific USPS service depending on the origin and destination locations. Key Points: You can retrieve zone information using postal codes. This helps optimize shipping decisions by determining the correct zone for your shipments. Example Parameters: from_zip : Origin postal code. to_zip : Destination postal code. • [Retrieve Services](https://docs.ehub.com/services/retrieve-services.md): Provider/Service Information When interacting with eHub’s shipment services, the service_id and package_type fields are critical. These values help you identify the service and the types of packages supported. Below are key details on how to handle these fields. Key Fields in Response service_id : An integer used when creating a shipment. package_type : An array that lists supported package types for each service. Use the package_types[i].type value when submitting requests to ensure you use the correct package type. JSON { "services": [ { "service_id": 683, "service": "First Class Mail", "service_code": "usps_first_class", "carrier_code": "usps", "category": "shipping", "package_types": [ { "type": "large_envelope", "name": "LargeEnvelope" }, { "type": "parcel", "name": "Parcel" }, { "type": "letter", "name": "Letter" }, { "type": "softpack", "name": "Softpack" } ], "sort_order": null } ] } Services With No Listed Package Types If you encounter services that don't have any package types listed, this means that the service defaults to the "parcel" package type. This is typically observed in some shipping options like UPS Express or ExpressPlus. JSON { "service_id": 669, "service": "Express", "service_code": "ups_express", "carrier_code": "ups", "category": "shipping", "package_types": [], "sort_order": null }, { "service_id": 670, "service": "ExpressPlus", "service_code": "ups_express_plus", "carrier_code": "ups", "category": "shipping", "package_types": [], "sort_order": null }, • [Find Zone](https://docs.ehub.com/services/find-zone.md): The Find Zone endpoint allows you to retrieve USPS zone information by providing the to and from postal codes. This helps in identifying the shipping zone for a specific USPS service based on the locations involved. • [Status](https://docs.ehub.com/status.md): This page provides information on how to retrieve the current status of USPS carrier services connected to your eHub account. By using the provided endpoint, you can monitor the real-time status of USPS services, ensuring that your shipping operations remain efficient and uninterrupted. This tool is essential for tracking USPS service availability, helping to address any potential issues promptly. • [Service Statuses](https://docs.ehub.com/status/service-statuses.md): To check the current status of USPS's connected carrier servic es , use this endpoint to retrieve real-time information about USPS services connected to your eHub account. This will allow you to monitor USPS service availability and ensure smooth shipping operations. • [Reports](https://docs.ehub.com/reports.md): eHub provides a suite of robust reporting tools designed to help you effectively monitor and manage your shipping activities. These reports offer insights into postage meter transactions, shipment adjustments, and potential discrepancies, providing the transparency needed for smooth and efficient shipping operations. Available Reports: Meter Transactions Retrieve detailed information about your postage meter transactions, including purchases, usage, refunds, and current balances. This report ensures you maintain a close watch on your postage usage and balance for optimal financial management. USPS Shipment Adjustments Track any discrepancies reported by USPS between the information provided during label creation and the physical package received. This report highlights adjustments made by USPS, whether they result in a refund or additional charge. These reports are essential for maintaining accurate records of your postage usage and adjustments, ensuring transparency and efficiency in your shipping operations. • [Shipment Adjustments](https://docs.ehub.com/reports/shipment-adjustments.md): When the Post Office finds discrepancies in the information reported to them when generating the label and the physical package they received, they will create adjustments to refund or charge your meter. This report will show you the adjustments the USPS has reported for your shipments. • [Meter Transactions](https://docs.ehub.com/reports/meter-transactions.md): This endpoint allows you to retrieve your postage meter activity for a specified period. You can use it to track postage purchases, usage, and refunds. • [Webhook Subscriptions](https://docs.ehub.com/webhook-subscriptions.md): eHub allows you to subscribe to webhooks to receive real-time notifications about shipment tracking events and payment statuses. These webhooks ensure that you stay informed and can automate workflows based on the latest updates from your shipments and payments. Subscription Types Shipment Tracking Subscribe to receive tracking events for all shipments created under a single eHub account. Each child account will need its own subscription for individual tracking updates. Use Case : Automate tracking updates, monitor shipment progress, and notify customers of delivery status in real time. Payment Status Subscribe to receive updates on payment status for shipment transactions made through eHub. The webhook will notify you of accepted, rejected, and returned payments. Use Case : Track payment statuses, handle discrepancies, and efficiently manage refunds or payment issues. Webhook Statuses Webhooks can return the following statuses: active : The webhook is functioning and sending notifications as expected. error_disabled : The webhook has been disabled due to multiple consecutive errors, such as timeouts or failed deliveries. Note: After 5 consecutive failed responses from the receiving system the webhook will automatically be updated to have a disabled status. Parameters in the Response error_count : Number of errors received from the upstream source. last_response_code : The most recent HTTP status code from the upstream source. last_response_message : The message corresponding to the last HTTP status code. Disabled Subscriptions If a webhook request times out (fails to receive a successful response within 30 seconds), it will be marked as disabled after consecutive failures. You can avoid this by saving the payload locally, responding with success, and then processing the payload asynchronously. Tracking Event payload example: JSON { "subscription_type": "shipment_tracking", "status": "active", "payload": [ { "shipment_id": 115, "tracking_number": "9400109205328003425036", "tracking_event_id": 539, "parcel_id": 115, "code": "01", "secondary_code": "01", "description": "Delivered, In/At Mailbox", "event_timestamp": "2018-11-13T00:00:00.000Z", "city": "New Oceane", "state": "CA", "postal_code": "34668-2801", "country": "US" }, { "shipment_id": 115, "tracking_number": "9400109205328003425036", "tracking_event_id": 540, "parcel_id": 115, "code": "OF", "secondary_code": null, "description": "Out for Delivery", "event_timestamp": "2018-11-12T19:00:24.000Z", "city": "Lake Jett", "state": "LA", "postal_code": "91251-7728", "country": "US" } ] } code and secondary_code vary by carrier. For USPS the codes are documented in Publication 199, Appendix G-4 ( https://postalpro.usps.com/impbimplementationguide ). Payment Status payload example: JSON { "subscription_type": "payment_status", "payload": [ { "payment_method_id": 0, "payment_transaction_id": 0, "gateway_txn_reference": "string", "transaction_time": "2020-05-14T15:56:58.550Z", "amount": 0, "type": "string", "status": "string" } ] } By subscribing to webhooks, you gain visibility into important shipment and payment activities, enabling you to take immediate action as needed. • [List Subscriptions](https://docs.ehub.com/webhook-subscriptions/list-subscriptions.md): The Retrieve All Subscriptions endpoint allows you to fetch a list of all webhook subscriptions associated with your eHub account. This includes any active or disabled subscriptions for tracking events and payment status notifications. • [Create a Subscription](https://docs.ehub.com/webhook-subscriptions/create-a-subscription.md): Create a webhook subscription. The Create a Subscription endpoint allows you to set up webhooks to receive notifications about shipment tracking events or payment status updates. This ensures real-time communication between your eHub account and your system, keeping you informed about key events in your logistics operations. • [Update a Subscription](https://docs.ehub.com/webhook-subscriptions/update-a-subscription.md): The Update a Subscription endpoint allows you to modify an existing webhook subscription. You can update details such as the callback URL, the types of events you're subscribed to, or the description of the subscription. This helps ensure your webhook remains aligned with your current operational needs. This endpoint gives you flexibility to keep your webhook subscriptions up-to-date with your current needs, ensuring that your system stays in sync with real-time shipment or payment status updates. • [Retrieve a Subscription](https://docs.ehub.com/webhook-subscriptions/retrieve-a-subscription.md): The Retrieve a Subscription endpoint allows you to get detailed information about a specific subscription linked to your account. By using the subscription ID, you can look up details such as the subscription type, the callback URL, the status, and the events that the subscription is tracking. • [Delete a Subscription](https://docs.ehub.com/webhook-subscriptions/delete-a-subscription.md): The Delete a Subscription endpoint allows you to remove an existing subscription associated with your account. This action stops any further webhook notifications from being sent to the specified callback URL for that subscription. • [Payment Methods](https://docs.ehub.com/payment-methods.md): The payment method endpoints allow you to create, update, and view the payment methods associated with your account. You'll be able to see if any are set to expire and identify which one is the default payment method on file. eHub provides a comprehensive set of endpoints to manage your payment methods efficiently. Whether you need to list all payment methods, create a new one, update existing details, retrieve specific information, or delete a payment method, these tools ensure smooth payment operations and financial management. Below are the key functionalities available for managing payment methods. Payment Methods Endpoints List All Payment Methods Use this endpoint to retrieve a list of all payment methods associated with your eHub account. It provides details such as account numbers, billing information, payment types, and default status. Method : GET /api/v2/payment_methods Use Case : Quickly view and manage all the payment methods available under your account for review or updates. Create a New Payment Method This endpoint allows you to add a new payment method to your eHub account. Specify billing location, account type, and other necessary details to integrate a new payment method. Method : POST /api/v2/payment_methods Use Case : Add a new credit card, ACH, or other payment method to your account to ensure uninterrupted payment processing. Update a Payment Method If you need to modify details of an existing payment method, such as updating billing information or changing the default status, this endpoint allows you to update the necessary fields without recreating the payment method. Method : PUT /api/v2/payment_methods/{id} Use Case : Keep your payment methods up-to-date, such as updating expiry dates or modifying billing addresses, without creating a new payment method. Retrieve a Payment Method This endpoint allows you to retrieve detailed information for a specific payment method using its unique ID. It is useful when you need to review a specific account's details, such as payment type, billing location, or account number. Method : GET /api/v2/payment_methods/{id} Use Case : Get detailed information about a single payment method, such as verifying the billing address or checking the account number on file. Summary The Payment Methods API gives you full control over managing the financial aspects of your eHub account, from adding new payment methods to updating or retrieving existing ones. By using these tools, you can ensure your payment processes are efficient, secure, and up-to-date. • [List Payment Methods](https://docs.ehub.com/payment-methods/list-payment-methods.md): This endpoint allows you to retrieve a list of all the payment methods associated with your eHub account. It provides a comprehensive view of each payment method's details, including account numbers, billing information, payment types, and default status. • [Create a New Payment Method](https://docs.ehub.com/payment-methods/create-a-new-payment-method.md): The Create a New Payment Method endpoint enables you to securely add a new payment method to your eHub account. This allows for flexibility in managing various payment methods such as ACH or credit cards, ensuring smooth transactions and payment processing for your shipments. • [Update a Payment Method](https://docs.ehub.com/payment-methods/update-a-payment-method.md): The t. With the Update a Payment Method endpoint, you have the flexibility to modify an existing payment method within your eHub account. Whether you're updating billing information, adjusting account details, or designating a new default payment method, this endpoint ensures smooth updates with minimal effort. • [Retrieve a Payment Method](https://docs.ehub.com/payment-methods/retrieve-a-payment-method.md): The Retrieve a Payment Method endpoint allows you to access detailed information about a specific payment method saved to your eHub account. This can be used to check the details of a payment method, such as account number, billing information, and whether it is the default payment method. • [Customers](https://docs.ehub.com/customers.md): eHub's customer management functionality provides robust tools for creating, updating, and managing customer accounts. This suite of features is essential for businesses that need to oversee multiple child accounts or customers within their eHub platform. Here’s an overview of what you can accomplish using the customer management endpoints: List Child Accounts Purpose : Retrieve a list of all child accounts associated with your eHub account. This is particularly useful for businesses that manage multiple sub-accounts or clients. Usage : Use this endpoint to get a comprehensive view of all your connected child accounts, including their account details and current status. Get a Single Child Account Purpose : Retrieve detailed information for a specific child account. This endpoint is essential for viewing individual customer account details, including payment and billing information. Usage : Use this endpoint to access all relevant information for a particular customer or sub-account when performing audits or account management. Key Features: User Management : Create and manage users associated with customer accounts, including roles and access levels. Payment and Billing : Manage payment methods, view outstanding balances, and update billing information directly within the platform. Flexible Updates : Update only the necessary fields when modifying customer information, allowing for efficient and flexible account management. This suite of endpoints is designed to streamline the process of managing customers and sub-accounts, ensuring that all aspects of customer management—from creation to ongoing updates—are handled seamlessly within the eHub platform. Whether you’re onboarding new clients or maintaining existing relationships, these tools provide the functionality you need to succeed. • [List Customers](https://docs.ehub.com/customers/list-customers.md): This endpoint allows you to retrieve a list of all child accounts associated with your eHub account. This is particularly useful for managing multiple sub-accounts under a parent account, enabling you to monitor and control shipping activities across different user groups. • [Retrieve a Customer](https://docs.ehub.com/customers/retrieve-a-customer.md): This endpoint allows you to retrieve detailed information for a specific child account connected to your parent eHub account. • [Orchestrate](https://docs.ehub.com/orchestrate.md): These API endpoints allows users to execute advanced workflows that combine multiple inventory operations in a single request for streamlined processing. • [Create Order, Rate Shop and Ship](https://docs.ehub.com/orchestrate/create-rate-and-ship.md): Given order details, this endpoint creates a custom order, applies automations, rate shops available carrier rates according to your configured criteria, buys and returns the cheapest label. • [Rate Shop and Ship an existing Order](https://docs.ehub.com/orchestrate/rate-and-ship.md): Rate shop an order and create a shipment label. This endpoint fetches available carrier rates according to your configured criteria, buys and returns the cheapest label. • [Void a Shipment](https://docs.ehub.com/orchestrate/void-a-shipment.md): Voids a shipment label. Optionally updates the order status and refunds fulfillment fees. • [Rate Shop and Ship a Shipment](https://docs.ehub.com/orchestrate/rate-shop-and-ship-a-shipment.md): Given shipment details, this endpoint rate shops available carrier rates according to your configured criteria, buys and returns the cheapest label.