aid: boxc name: Boxc description: >- BoxC (BoxC Logistics, Inc.) is an international e-commerce logistics management platform. Its single RESTful API drives cross-border ecommerce by integrating dozens of carriers, customs clearance, duties and taxes, warehousing and fulfillment, and returns through one integration. A routing engine can complete every leg of a shipment's journey or only selected steps on the merchant's behalf. The v1 API (currently 1.123) exposes 83 operations across 34 resources including Shipments, Labels, Orders, Products, Shops, Warehouses, Manifests, Overpacks, Inbound, Returns, Reshipments, Webhooks, Carrier Credentials, Customs Products, Entry Points, Tracking, Calculate Duty, Validate Address, and Classify. Authentication is OAuth 2.0 / OpenID Connect with RS256 JWT bearer tokens. accessModel: pricing: unknown onboarding: self-serve trial: false try_now: false public: false label: Self-serve signup confidence: medium source: - authentication generated: '2026-07-22' method: derived image: https://storage.googleapis.com/boxc_cdn/public/boxc-logo.png url: https://raw.githubusercontent.com/api-evangelist/boxc/refs/heads/main/apis.yml x-type: company x-source: vc-portfolio x-backed-by: - 500-global x-tier: profiled x-tier-reason: enriched-2026-07-18 specificationVersion: '0.20' created: '2026-07-17' modified: '2026-07-18' tags: - Company - Logistics - Shipping - Ecommerce - Cross-Border - Fulfillment - Customs - Tracking - Webhooks apis: - aid: boxc:boxc-calculateduty-api name: Boxc CalculateDuty API description: >- Calculate the landed cost of a shipment. This is a quick way to calculate the duties and taxes owed for a shipment without having to create one. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - CalculateDuty properties: - type: OpenAPI url: openapi/boxc-calculateduty-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-classify-api name: Boxc Classify API description: >- The Classify resource permits a user to retrieve the most likely HS code and description for one or more products. Each successful request costs $0.05 (USD) regardless of the number of products. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Classify properties: - type: OpenAPI url: openapi/boxc-classify-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-credentials-api name: Boxc Credentials API description: >- The Credentials resource allows users to store their own carrier account secrets securely. This gives users the ability to reuse their credentials without providing actual secret values in every single shipment request. There can be multiple secret values stored in a single credential resource. Supported carriers and parameters can be found in the [Carrier Credentials](/#tag/CarrierCredentials) section. **Note:** All secret params that are stored by BoxC are encrypted at the storage layer using the Advanced Encryption Standard (AES) algorithm — AES-256. **Important:** Once a credential resource is created, it is not possible to see the secret values for security reasons. **Important:** If the secret values have to be updated for any reason, we recommend updating your existing Credential resource instead of creating a new one. Doing so will ensure that secret values are always up to date for previously created labels with the same Credential resource and event tracking is not affected adversely. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Credentials properties: - type: OpenAPI url: openapi/boxc-credentials-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-customsproducts-api name: Boxc CustomsProducts API description: >- Not to be confused with Fulfillment [Products](/#tag/Products), Customs Products are for clearing shipments containing regulated items like Food and Cosmetics (PGA). Customs Products contain information about the item including the manufacturer, seller, importer, etc. Shipments that are determined to be PGA must provide the `product_id` in the line item. Manifesting PGA shipments will notify the relevant agencies. Several properties are conditional and offer different options based on the `coi` and `type` of product. **Important:** This resource and its operations are in Beta and subject to change without notice. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - CustomsProducts properties: - type: OpenAPI url: openapi/boxc-customsproducts-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-entrypoints-api name: Boxc EntryPoints API description: >- An entry point is the drop off location / origin for your shipments which affects your rates and the routes available. The `entry_point.id` is required when creating a shipment. You must query this endpoint to get an active list of entry points as some of added, changed, or removed. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - EntryPoints properties: - type: OpenAPI url: openapi/boxc-entrypoints-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-estimate-api name: Boxc Estimate API description: >- The Estimate resource allows a user to retrieve the estimated cost of shipping a package based on weight, dimensions, entry point, destination, and other parameters. No services will be returned if a route can't be matched against the provided parameters. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Estimate properties: - type: OpenAPI url: openapi/boxc-estimate-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-inbound-api name: Boxc Inbound API description: >- The Inbound resource is part of the fulfillment component and allows customers to restock their products at warehouses operated by BoxC. An inbound shipment's products can't be modified after creation, but the warehouse, carrier, tracking number, and notes can be modified. ### Inbound Status The following table lists all possible states of an inbound shipment indicated by its `status` property. Only the system or warehouse can modify a shipment's status. | Status | Description | |--------|-------------| | Pending | The inbound shipment was created and may be en route to the warehouse. Default state. | | Received | The inbound shipment arrived at the warehouse. It can no longer be updated or deleted. | | Processed | The inbound shipment was processed and inventoried by the warehouse. | humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Inbound properties: - type: OpenAPI url: openapi/boxc-inbound-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-invoices-api name: Boxc Invoices API description: >- Invoices and statements are generated weekly and include a summary of all transactions between the invoice's `start_date` and `end_date`. Users can export an itemized list of all transactions for a billing period in their account. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Invoices properties: - type: OpenAPI url: openapi/boxc-invoices-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-labels-api name: Boxc Labels API description: >- The Labels resource allows a user to create, cancel, retrieve, and track labels for shipments. A label can't be created if there is already an uncancelled or processed label for the shipment. Labels that have been processed can't be cancelled. The user is responsible for paying the shipping costs if a label is cancelled but still processed at a facility. Test labels are routinely purged from the system. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Labels properties: - type: OpenAPI url: openapi/boxc-labels-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-manifests-api name: Boxc Manifests API description: >- The Manifests resource is used for generating the paperwork required for dropping off Overpacks at a [collection center](/#tag/EntryPoints) or carrier facility at the end of the day. It also transmits the shipment data to the carrier(s) electronically. In order to create a manifest you must provide a list of the Overpacks that will be dropped off together. A manifest consists of all Shipments that are linked to each Overpack. **Note:** All overpacks in a manifest must have the same ```entry_point```, can't be empty, or missing weight and dimensions. Some manifests may have separate forms or no forms at all for the different carriers depending on the routes utilized by the affected shipments. Shipments should be sorted into Overpacks based on the carrier and other details prior to manifesting. Multiple copies of a form may exist for the driver and facility. **Note:** It can take up to several minutes before forms are available for download after manifesting because the required background tasks run asynchronously. **Important:** Once a manifest is created the associated overpacks and shipments can't be modified. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Manifests properties: - type: OpenAPI url: openapi/boxc-manifests-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-orders-api name: Boxc Orders API description: >- The Orders resource allows you to create, read, update, and delete orders that are meant to be fulfilled by BoxC. If you wish to manually create an order for a third party shop you must provide the `shop.id` and `shop.order_id`. Neither property can be updated. The system will push tracking information to the shop when the order is fulfilled if both properties are set. Clients can force which warehouse is used for order fulfillment by setting the `warehouse.id` property. ### Order Status The following table lists all possible states of an order indicated by its `status` property. Updating an order that is 'Ready' will reset its status to 'Processing' and restore product quantities until it's processed by the system again. | Status | Description | |--------|-------------| | Backordered | There is insufficient quantity for one or more line items. The system will change the status once more inventory is added. | | Exception | There is a problem with the order such as missing or invalid information. The user must correct the problem before the order can be processed by the system. | | Holding | The order is being delayed from processing by the user. | | Processing | The order is waiting for the system to process it. Default state. | | Ready | The order is assigned to a warehouse for packing and quantities were deducted. | | Packing | One or more line items are being packed. It can't be edited in this state. | | Partial | The order was partially fulfilled. The remaining line items will be fulfilled when more inventory arrives. | | Fulfilled | The order was completely fulfilled. | | Archived | The system archives orders that were fulfilled at least 90 days in the past. | ### Pruning Orders The system routinely prunes or closes out orders in the system more than **365 days** ago. The start time is based on the `placed_at` and not the `created` datetime. What happens to the order depends on its current state at the time of pruning. - Unfulfilled (not Packing, Partial, Fulfilled) orders are deleted. - Partially fulfilled orders (Holding, Packing, Partial) are bumped to Fulfilled. - Orders in Packing have their unfulfilled line items and fulfillment objects deleted, and are bumped to Fulfilled. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Orders properties: - type: OpenAPI url: openapi/boxc-orders-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-overpacks-api name: Boxc Overpacks API description: >- The Overpacks resource allows a user to combine many Shipments into one object for faster clearance with BoxC and Customs. An overpack can be a carton, container, pallet, or bag. Regardless, it must contain an overpack label on the outside. Empty overpacks are routinely purged from the system. When creating an overpack it's recommended to provide one or more shipment ID, label ID, or tracking numbers in the request. The overpack will inherit the first shipment's (`n`) attributes like the `entry_point`, `service`, `terms`, etc. All shipments require identical attributes to be a part of the same overpack. Errors will be returned if the `n + 1` shipments do not match the first one. An error message will be present in the `shipments` array for each shipment that fails while creating or updating overpacks. Shipments that pass validation will still be added in the same request. The system will calculate the routing and other applicable carrier logic to determine the physical appearance of the label. Some carriers require custom messaging on the labels while others require a completely different label altogether. The system handles this logic on your behalf. **Note:** Shipments without labels and cancelled shipments can't be added to overpacks. The overpack(s) must be dropped off at the BoxC collection center indicated by the `entry_point`. Some entry points do not require overpacking and the system will prevent you from creating one. Deleting an overpack unassigns all shipments from it. **Note:** A client won't be able to print an overpack label until at least one shipment is assigned to it. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Overpacks properties: - type: OpenAPI url: openapi/boxc-overpacks-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-products-api name: Boxc Products API description: >- The Products resource allows users to add their products to the BoxC system. A product can have one or more Stock Keeping Units (SKUs). This gives users the ability to link their different shops' SKUs to the same product. There can only be one active SKU per shop per product. Orders won't be fulfilled until the warehouse accepts and processes your products. This includes measuring the weight and dimensions, and updating the quantity. **Note:** Products and SKUs linked to orders can't be deleted. Existing SKUs can't be assigned to a different shop. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Products properties: - type: OpenAPI url: openapi/boxc-products-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-reshipments-api name: Boxc Reshipments API description: >- The Reshipments resource allows you to reship one or more returned packages at a time from a BoxC warehouse. When a reshipment is created the `status` of all included returns will change to "Reshipping". Only returns with the following status can be reshipped: Processed, Verifying, and Verified. If reshipping more than one return at a time then you must wait for a facility operator to provide an `estimated_reship_fee`. If reshipping one return then the estimate will be instantaneous. In both cases you must approve the estimate before the reshipment is sent and your account is charged. **Note:** All returns in a bulk reshipment (> 1 return) must reside in the same warehouse. ### Status When a reshipment is created its status is set to "Pending" by default. It will remain that way until the `estimated_reship_fee` is populated by the system or facility operator. Afterwards, you have the option to approve or decline the amount by [updating](/#tag/Reshipments/operation/updateReshipment) the status accordingly. If "Declined", it will not be reshipped. If "Approved" it will be reshipped, tracking information will be made available, and a final reship_fee will be provided. Reshipments with the status "Approved" cannot be deleted. **Important:** Reshipments that are "Pending" or "Declined" longer than 15 days will be deleted by the system. **Note:** The final reshipping fee may differ from the estimated reshipping fee. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Reshipments properties: - type: OpenAPI url: openapi/boxc-reshipments-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-returns-api name: Boxc Returns API description: >- The Returns resource allows a user to retrieve a list of returned shipments processed at a BoxC warehouse. Users may verify, [reship](/#tag/Reshipments), or discard their returns. Discarding a return is irreversible. ### Verify Users have the option to verify a return before reshipping it. The facility operator will take additional pictures of the contents inside the return and add messages if necessary. To verify a return the user should PUT a `status` of "Verify". This will change the status of the return to "Verifying" which cannot be reversed. Only returns in the "Processed" state can be verified. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Returns properties: - type: OpenAPI url: openapi/boxc-returns-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-shipments-api name: Boxc Shipments API description: >- The Shipments resource allows a user to create, update, retrieve, and delete shipments. Only test shipments and shipments without labels can be deleted. Shipments with uncancelled or processed labels cannot be updated. All shipments require address verification on the shipping address. Cancelling a label will refund the cost. Test shipments and shipments without labels are routinely purged from the system. There are some weight and volumetric constraints for shipments that is dependant on the route. For example, if a Shipment's length + girth is greater than a certain size then the user is charged an additional fee per KG. The length is the measurement of the longest dimension, and girth is the distance around the thickest part (perpendicular to the length). If the Shipment's weight or volume exceeds the limit for a route an error will be returned. **Note:** Set the `overpack_id` to null when unassigning it from an overpack. You won't be allowed to update a labelled shipment beyond that. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Shipments properties: - type: OpenAPI url: openapi/boxc-shipments-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-shops-api name: Boxc Shops API description: >- The Shops resource allows a user to manage their fulfillment shop. A shop with orders or SKUs cannot be deleted. Clients should use a third party platform for integrating their ecommerce marketplaces with the BoxC API. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Shops properties: - type: OpenAPI url: openapi/boxc-shops-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-track-api name: Boxc Track API description: >- The Track resource allows clients to retrieve tracking events for shipments by their tracking number. You may only track one shipment per request. This endpoint is rate limited. Some shipments may have images attached to them during transit such as processing scans and proof of delivery. To reveal these images in the response the client must either: A. Be the owner of the shipment;
B. Provide the shipping email address in the query;
C. Provide the postal code in the query if it's not revealed in the event history. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Track properties: - type: OpenAPI url: openapi/boxc-track-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-users-api name: Boxc Users API description: >- The Users resources allows an application to retrieve information about the tokenized user such as balances, personal/company address, and subscriptions. Only the addresses can be updated by applications ### Subscriptions A subscription is a recurring payment for a provided service. The specified `amount` is deducted from the user's BoxC balance at the start of each `interval` - also known as `current_period_start`. - Applications can only view subscriptions that belong to them. - Subscriptions automatically renew each interval until cancelled. - Cancelling a subscription will flag it to be deleted after `current_period_end`. To save a subscription it must be renewed before `current_period_end`. - Subscriptions are automatically removed from the list if their `current_period_end` is less than the current time. - A subscription cannot be modified after creation - only renewed. - A subscription will not be renewed if the user has insufficient funds. - A subscription can only be cancelled by the user from their account's dashboard. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Users properties: - type: OpenAPI url: openapi/boxc-users-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-validateaddress-api name: Boxc ValidateAddress API description: >- The Validate Address resource permits a user to validate and retrieve the most likely matches of provided postal addresses. Each successful validation costs $0.03 (USD). humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - ValidateAddress properties: - type: OpenAPI url: openapi/boxc-validateaddress-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-warehouses-api name: Boxc Warehouses API description: >- The Warehouses resource allows you to retrieve location and identity information for a single warehouse or all warehouses. You should query this endpoint to retrieve an active list of fulfillment warehouses that customers can send their products to restock their inventory. The ```warehouse.id``` is used for selecting the warehouse while creating an inbound shipment or an order. humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Warehouses properties: - type: OpenAPI url: openapi/boxc-warehouses-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - aid: boxc:boxc-webhooks-api name: Boxc Webhooks API description: >- The Webhooks resource allows applications to subscribe to topics and receive events for users. Events are pushed to the webhook's `address` with a payload by issuing an HTTP POST request each time. **Note:** Webhook subscriptions are scoped only to the application that they're registered to which means other applications can't read, modify, or delete them. ### Address Rules To create a webhook you register a valid HTTP address for consuming the events. It can be updated at any time. An address is considered valid if it meets the following conditions: - Must be RFC compliant (include HTTP/S). - Must include a valid hostname (example: www.boxc.com). - Must include a path and can't be just a domain or IP address (example: http://boxc.com/path/to/script). - Can't include localhost in the hostname. - Must be less than or equal to 128 characters in length. ### HTTP Headers There are four additional HTTP headers added to the webhook event to aid applications in processing them. - **User-Agent** - Always "BoxC/1.0 Webhook" for filtering webhook requests. - **X-BoxC-Hmac-SHA256** - Base64 encoded HMAC digest. Useful for verifying the event is authentic (example: Ikaxp9lMrkNXb6kxVhYxxiYDZplIN1kQcHV6gK3duFk=). - **X-BoxC-Topic** - The subject of the event (example: shipments_status). - **X-BoxC-Account** - The user ID affected by the event (example: 9512). ### Verifying Events A `key` is required when creating a webhook. Every webhook has a `key` that is used to calculate the **X-BoxC-Hmac-SHA256** HTTP header by using the payload sent in the request. To verify the request came from BoxC, compute the HMAC digest using the SHA-256 hash function, encode it to [Base64](https://en.wikipedia.org/wiki/Base64), and compare it to the X-BoxC-Hmac-SHA256 header. Keys are provided by the application and must be between 16 and 32 characters long. They're not unique or immutable. ### Payloads The payload contains a JSON object with the data for the webhook event. The contents and structure of each payload varies depending on the topic. ### Responding to Webhooks The configured webhook `address` must respond with an HTTP Status between 200 and 299 (inclusive) to be considered successful. Any response outside the 200 range will result in a failed attempt and will be queued for three additional attempts within an hour before it's evicted. Requests made to the webhook address will not follow any redirects. The `address` must connect within 2 seconds and respond within 4 seconds overall or it will be considered a failed attempt. If you believe it will take longer than 4 seconds to respond then you should process the request asynchronously after responding with 200 OK. BoxC uses an exponential backoff timer for calculating the next attempt and will continue to retry three more times. Webhook addresses that don't respond with a successful status 1000 consecutive times are deactivated until the client updates the malfunctioning webhook. An email is sent to the OAuth client when a webhook is deactivated. ### Testing Webhooks Applications can test their integration by POSTing an event to a webhook they manage. The same event will be injected into the queue and subsequently POSTed to the webhook's configured address without any alterations. A fake payload from one of the topics below can be used as a template and modified to test the different stages of an object's lifecycle. The event's payload must match the topic's schema the webhook is subscribed to. ### Topics Listed below are the current topics and their respective event structures that users may subscribe to. #### fulfillments_complete This event is triggered when a fulfillment is fulfilled and finalized at a warehouse. Tracking numbers will be provided in most cases, but sometimes there's a delay from the carrier - users should subscribe to `fulfillments_update` to handle this scenario. ```json { "fulfillment": { "id": 619231, "line_items": [ { "product_id": 121000, "quantity": 2, "sku": "MYSKU123" } ], "order_id": 600001, "service": "BoxC Parcel", "shipment_id": 1521231, "shop": { "id": "my-test-shop", "order_id": "#1002" }, "tracking_number": null, "tracking_url": null, "warehouse_id": "WH0HKG01" } } ``` #### fulfillments_update This event is triggered when a fulfillment's tracking information is updated by the carrier after it was already completed. Some carriers don't provide a tracking number immediately. ```json { "fulfillment": { "id": 619231, "order_id": 600001, "service": "BoxC Parcel", "shipment_id": 1521231, "shop": { "id": "my-test-shop", "order_id": "#1002" }, "tracking_number": "9261290185965500000103", "tracking_url": "https:\/\/track.boxc.com\/?id=9261290185965500000103", "warehouse_id": "WH0HKG01" } } ``` #### manifests_complete This event is triggered when a manifest finished processing and any related PDF documents are available for download. ```json { "manifest": { "created": "2022-08-02 12:12:12", "entry_point": "LAXI01", "exit_point": "SYD", "id": 909447, "forms": [ "Toll_IPEC.pdf" ], "mawb_id": null, "overpacks": [ { "carrier": "Toll", "created": "2021-08-01 00:26:05", "height": 10, "id": 1002730, "length": 10, "service": "BoxC Parcel", "terms": "DDU", "type86": false, "weight": 5, "width": 10 } ], "total_shipments": 4, "warehouse_no": "02599225803" } } ``` #### orders_status This event is triggered when an order's status changes. Only orders updated to "Exception" will trigger this event. ```json { "order": { "created": "2020-02-27 12:12:12", "id": 1831488, "line_items": [ { "product_id": 123456, "sku": "sku123", "quantity": 1 } ], "placed_at": "2020-02-27 15:15:15", "service": "BoxC Priority", "status": "Exception", "shipping_address": { "company_name": null, "phone": null, "email": null, "name": "John Smith", "street1": "555 5TH AVE", "street2": null, "city": "NEW YORK", "province": "NY", "postal_code": "10001", "country": "US" }, "shop": { "id": "my-test-shop", "order_id": "123456" } } } ``` #### shipments_label This event is triggered when a label is generated in the BoxC system. In most cases this webhook will immediately fire off during shipment creation. However, some carriers provide shipping labels asynchronously so they won't be available after creating a shipment. They make take anywhere from a few seconds to a few minutes to be ingested into our system. The `shipment.data` is a base 64 encoded string that must be decoded before saving as the indicated `content_type`. All label data will be sent as "application/pdf". ```json { "shipment": { "carrier": "Janio", "content_type": "application\/pdf", "data": "aHR0cHM6Ly93d3cueW91dHViZS5jb20vd2F0Y2g\/dj1kUXc0dzlXZ1hjUQ==", "id": 1521231, "tracking_number": "9261290185965500000103" } } ``` #### shipments_status This event is triggered when a new tracking event is injected. The tracking event along with some shipment details is sent to the subscribed webhooks. ```json { "shipment": { "chargeable_weight": 0.4, "comments": [ "Order123456" ], "entry_point": "TEST01", "event": { "carrier": "USPS", "code": 200, "city": "AUSTIN", "province": "TX", "postal_code": "78701", "country": "US", "time": "2019-10-10 12:12:12", "longitude": null, "latitude": null }, "exit_point": "DFW", "gross_weight": 0.235, "id": 1521231, "images": { "pod": [], "scans": [] }, "order_number": null, "service": "BoxC Parcel", "status": "Delivered", "tracking_number": "9261290185965500000103", "volumetric_weight": 0.4 } } ``` humanURL: https://docs.boxc.com/ baseURL: https://api.boxc.com/v1 tags: - Webhooks properties: - type: OpenAPI url: openapi/boxc-webhooks-api-openapi.yml - type: Swagger url: openapi/boxc-openapi-original.yml - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ maintainers: - FN: Kin Lane email: kin@apievangelist.com - FN: APIs.json email: info@apis.io common: - type: Website url: https://boxc.com - type: DeveloperPortal url: https://docs.boxc.com/ - type: Documentation url: https://docs.boxc.com/ - type: APIReference url: https://docs.boxc.com/ - type: GettingStarted url: https://docs.boxc.com/#tag/Introduction - type: Support url: https://support.boxc.com/support/solutions - type: GitHubOrganization url: https://github.com/boxc - type: TermsOfService url: https://boxc.com/terms-and-conditions - type: Login url: https://accounts.boxc.com - type: OpenAPI url: openapi/boxc-openapi-original.yml - type: Authentication url: authentication/boxc-authentication.yml - type: OAuthScopes url: scopes/boxc-scopes.yml - type: Conventions url: conventions/boxc-conventions.yml - type: RateLimits url: conventions/boxc-conventions.yml - type: ErrorCatalog url: errors/boxc-error-codes.yml - type: Lifecycle url: lifecycle/boxc-lifecycle.yml - type: ChangeLog url: changelog/boxc-changelog.yml - type: Webhooks url: asyncapi/boxc-webhooks.yml - type: MCPServer url: mcp/boxc-mcp.yml - type: WellKnown url: well-known/boxc-well-known.yml - type: Packages url: packages/boxc-packages.yml - type: Conformance url: conformance/boxc-conformance.yml - type: DataModel url: data-model/boxc-data-model.yml - type: Sandbox url: sandbox/boxc-sandbox.yml - type: LLMsTxt url: llms/boxc-llms.txt - type: Overlay url: overlays/boxc-openapi-overlay.yaml - type: AgentSkill url: skills/_index.yml - type: DomainSecurity url: security/boxc-domain-security.yml - type: AgenticAccess url: agentic-access/boxc-agentic-access.yml x-enrichment: date: '2026-07-19' status: backfilled pass: local-v1 note: backfilled from .gitignore signal + verified work evidence