---
title: ShipBob API Integration on Truto
slug: shipbob
category: E-Commerce
canonical: "https://truto.one/integrations/detail/shipbob/"
---

# ShipBob API Integration on Truto



**Category:** E-Commerce  
**Status:** Beta

## MCP-ready AI tools

Truto exposes 93 tools for ShipBob that AI agents can call directly.

- **list_all_ship_bob_channels** — List the ShipBob channels the authenticated user has access to. Returns channel objects with id, name, application_name, and scopes. Cursor pagination handled automatically.
- **list_all_ship_bob_orders** — List ShipBob orders as a paginated result with optional filters that combine with AND logic. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type.
- **create_a_ship_bob_order** — Create a ShipBob order that is queued for fulfillment, specifying products by product reference ID (SKU — the recommended approach) or ShipBob product ID. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type. The JSON body takes…. Required: products, recipient, reference_id, shipping_method, type.
- **get_single_ship_bob_order_by_id** — Get a single ShipBob order by id, including order status, shipments, products, and recipient details. Returns: channel, created_date, financials, gift_message, id, order_number, products, purchase_date, recipient, reference_id, retailer_program_data, shipments, shipping_method, shipping_terms, status, tags, type. Required: id.
- **ship_bob_orders_estimate** — Estimate fulfillment cost and fulfillment center assignment for a potential standard (direct-to-consumer) ShipBob order. Returns an estimate where possible; no estimate is produced for items that are unknown, out of stock, or too large for standard box sizes, and add-on services such as insurance and signature are excluded. Required: address, products.
- **ship_bob_orders_cancel** — Cancel an order in ShipBob, including all of its associated shipments; the order must be in a cancellable state to proceed. Returns an opaque cancellation result object whose fields the API reference does not document.
- **ship_bob_orders_estimate_delivery** — Estimate a ShipBob delivery date for a destination and set of line items; the destination address must always include zip_code and country, and the Product Details Page vs Checkout flow is auto-detected from the request shape. Returns: destination_time_zone, errors, estimates, reference_id. Required: destination_address, line_items.
- **get_single_ship_bob_shipment_by_id** — Get a single ShipBob shipment by id. Returns: actual_fulfillment_date, created_date, delivery_date, estimated_fulfillment_date, estimated_fulfillment_date_status, gift_message, id, insurance_value, invoice_amount, invoice_currency_code, is_tracking_uploaded, last_tracking_update_at, last_update_at, location, measurements, order_id, package_material_type, parent_cartons, products, recipient,…. Required: id.
- **ship_bob_shipments_bulk_update_shipping_service** — Update the shipping service for multiple ShipBob shipments in one request; requested_shipping_service_id must be a service_level.id from the Get Shipping Methods endpoint. Returns: results, summary. Required: reason, requested_shipping_service_id, shipment_ids.
- **ship_bob_shipments_bulk_place_on_hold** — Place a Manual hold on multiple ShipBob shipments in one request; committed inventory stays reserved by default unless reserve_inventory is false. Returns per-shipment outcomes in results (each shipment's own success or failure, so one failure never fails the request). Empty shipment_ids or a batch over the cap returns 400. Required: shipment_ids.
- **ship_bob_shipments_bulk_release_hold** — Release merchant-initiated holds (Manual and Auto Processing Pause) from multiple ShipBob shipments in one request; operational holds such as invalid address are never removed. Returns per-shipment outcomes in results, flagging is_still_on_hold_due_to_other_reasons when operational holds remain. Empty shipment_ids or a batch over the cap returns 400. Required: shipment_ids.
- **ship_bob_shipments_bulk_update_instructions** — Set packing and special SKU instructions on multiple ShipBob shipments in one request; omit or send null to leave an instruction unchanged, or send an empty string to clear it. Returns per-shipment outcomes in results, one per unique id in request order. Required: shipment_ids.
- **ship_bob_shipments_assign_fulfillment_center** — Assign a specific ShipBob fulfillment center to a shipment, overriding the automatically selected one. Returns is_success and, when the assignment fails, an error object with the code and message. Inventory re-evaluates asynchronously and the endpoint returns HTTP 200 for both successful and failed operations. Required: fulfillment_center_id.
- **ship_bob_shipments_cancel** — Cancel a ShipBob shipment by id. Returns the shipment view model including id, status, tracking details, fulfillment center location, and products. The shipment must not yet be picked, packed, or shipped.
- **ship_bob_shipments_bulk_update** — Update the shipping address of a ShipBob shipment. Returns: error, id, is_success. Required: city, street_address1.
- **ship_bob_shipments_bulk_cancel** — Cancel multiple ShipBob shipments in a single request. Returns the affected shipments with id and tracking details (carrier, tracking_number, carrier_service, tracking_url). Only shipments not yet picked, packed, or shipped can be cancelled.
- **ship_bob_shipments_bulk_update_tracking** — Mark tracking information as synced to your external system for multiple ShipBob shipments so they stop appearing in order queries filtered by IsTrackingUploaded=false. Returns: results, summary.
- **get_single_ship_bob_shipment_timeline_by_id** — Get the status timeline for a ShipBob shipment by id. Returns a chronological array of shipment log entries showing when each shipment status change occurred, for visibility into fulfillment progress. Required: id.
- **ship_bob_shipment_timelines_get_by_order** — Get the status timeline for a shipment within a ShipBob order. Returns a chronological array of shipment log entries showing when each status change occurred, for visibility into fulfillment progress. Required: order_id, shipment_id.
- **list_all_ship_bob_shipping_methods** — List all shipping methods configured for your ShipBob merchant account. Returns: active, id, name, service_level.
- **get_single_ship_bob_order_store_json_by_id** — Get the original store order data stored for a ShipBob order, preserving custom fields and metadata from the order source. Returns the stored data as a JSON string with order-source-specific fields. Required: id.
- **list_all_ship_bob_cancelled_orders** — List ShipBob orders that have been completely cancelled, meaning all shipments within each order are in a cancelled state. Returns each cancelled order's id, reference_id, and shipments with their ids.
- **list_all_ship_bob_products** — List ShipBob products with optional filters for search term, barcode, SKU, name, category, channel, variant status, and more. Returns a paginated items array of product records with id, name, type_id, and variants. Max 250 per page (PageSize accepts 1-250).
- **create_a_ship_bob_product** — Create a ShipBob product with one or more variants. Returns the created product record including id, name, type_id, and variants. Requires name and at least one variant with a unique sku.
- **get_single_ship_bob_product_by_id** — Get a single ShipBob product by id, including all its variants and details. Returns: created_on, id, name, taxonomy, type, updated_on, user_id, variants, type_id. Required: id.
- **update_a_ship_bob_product_by_id** — Update a ShipBob product by id. Supports partial updates - only the fields provided will be updated; when updating variants, each must include its variant id. Returns: created_on, id, name, taxonomy, type, updated_on, user_id, variants, type_id. Required: id.
- **delete_a_ship_bob_product_by_id** — Delete a bundle product by id in ShipBob. Returns an opaque success payload (the upstream response body is not field-enumerated in the available source). Only bundle products can be deleted - the operation is not allowed for non-bundles. Required: id.
- **ship_bob_products_move_variants** — Move existing variants into a new ShipBob product — creates the product and reassigns the supplied variants to it. Returns the created product record: id, name, type_id, and variants.
- **ship_bob_products_move_variants_to_product** — Move variants from their current products into an existing ShipBob product. Returns the updated product record: id, name, type_id, and variants.
- **list_all_ship_bob_product_variants** — List all variants of a ShipBob product. Returns an array of variant objects including id, name, sku, packaging_requirement_id, and packaging_material_type_id. Required: product_id.
- **create_a_ship_bob_product_variant** — Add new variants to an existing ShipBob product. Returns the created product including id, name, type_id, and its variants (each with name, sku, packaging_requirement_id, and packaging_material_type_id). Required: product_id.
- **ship_bob_product_variants_bulk_update** — Update one or more variants of a ShipBob product. Returns an array of updated variant objects including id, name, sku, packaging_requirement_id, and packaging_material_type_id. Required: product_id.
- **ship_bob_variants_convert_to_bundle** — Convert an existing product variant into a bundle product in ShipBob, specifying which variants and quantities make up the bundle. Returns the converted product with its id, name, type_id, and variants.
- **ship_bob_variants_merge** — Merge multiple product variants into a target variant in ShipBob, consolidating the merged variants' inventory into the target. Returns the updated product with its id, name, type_id, and variants.
- **list_all_ship_bob_packaging_requirements** — List all packaging requirements available in ShipBob that can be assigned to a product. Returns packaging requirement records identified by id; pass an id as packaging_requirement_id when creating or updating a product variant.
- **list_all_ship_bob_taxonomies** — List all ShipBob product taxonomies available for categorizing products. Returns taxonomy nodes with their id and name.
- **get_single_ship_bob_taxonomy_by_id** — Get a single ShipBob product taxonomy node and its details by taxonomy ID. Returns: id, name, path, children, parent. Required: id.
- **get_single_ship_bob_taxonomy_parent_by_id** — Get the parent taxonomy node for a product taxonomy in ShipBob by id. Returns the parent taxonomy record including its id and taxonomy-specific attributes. Required: id.
- **list_all_ship_bob_allergens** — List the allergens ShipBob supports for product variants. Returns: id, key, name.
- **list_all_ship_bob_inventory_levels** — List current inventory levels across all ShipBob locations, filterable by inventory IDs and product attributes. Returns: first, items, last, next, prev.
- **get_single_ship_bob_inventory_level_by_id** — Get an inventory item's current stock levels aggregated across all ShipBob fulfillment centers. Returns: inventory_id, name, sku, total_awaiting_quantity, total_backordered_quantity, total_committed_quantity, total_damaged_quantity, total_exception_quantity, total_fulfillable_quantity, total_in_fulfillment_quantity, total_internal_transfer_quantity, total_on_hand_quantity,…. Required: id.
- **get_single_ship_bob_inventory_by_id** — Get a single ShipBob inventory item by id. Returns the item record's id and attributes — product details, variant information, and configuration from the item catalog, not stock quantities; for on-hand, committed, and fulfillable counts use the inventory levels endpoint. Required: id.
- **list_all_ship_bob_inventory** — List all inventory items in ShipBob's paginated item catalog. Returns: first, items, last, next, prev. All filters are optional: SearchBy, FilterOperations, InventoryIds, IsActive, IsDigital, SortBy.
- **ship_bob_inventory_history_search** — Query ShipBob inventory history events — the inventory movements that change on-hand quantities (receiving/stow, order picks, adjustments, restocks, attribute updates) — filterable by inventory IDs, event category, date range, and facility. Returns each event with its id and content-type-specific attributes; pagination is cursor-based.
- **list_all_ship_bob_inventory_level_locations** — List all inventory levels grouped by fulfillment center in shipbob, with inventory quantities broken down per location for every inventory item. Returns: first, items, last, next, prev. Does not return the list of fulfillment centers — use the Locations API for that. All filters are optional.
- **list_all_ship_bob_inventory_level_lots** — List inventory levels for all ShipBob inventory items grouped by lot number. Returns per-lot records including lot_number, lot_date, and inventory quantity breakdowns. All query filters are optional.
- **list_all_ship_bob_lot_exclusions** — List lot exclusions for a ShipBob inventory item to see which lot numbers are excluded from fulfillment, filtered by sku or inventory_id. Returns: inventory_name, inventory_sku, lot_exclusions. Requires at least one of sku or inventory_id.
- **create_a_ship_bob_lot_exclusion** — Create a lot exclusion in ShipBob that prevents a lot number from being fulfilled for an inventory item. Returns: created_timestamp, deleted_timestamp, id, inventory_id, is_deleted, lot_date, lot_number, attributes. Also supply sku or inventory_id to identify the item; requests with neither are rejected, as are duplicates for the same item and lot number. Required: lot_number.
- **delete_a_ship_bob_lot_exclusion_by_id** — Soft-delete a lot exclusion in ShipBob for an inventory item; the exclusion can be restored later via the restore endpoint. Returns: deleted_timestamp, inventory_id, is_deleted, lot_date, lot_number. Also supply sku or inventory_id to identify the item; requests with neither are rejected. Required: lot_number.
- **create_a_ship_bob_lot_exclusion_restore** — Restore a previously deleted lot exclusion for a specific inventory item in ShipBob, reversing a soft-delete. Returns the restored exclusion record (id, attributes). Required: lot_number.
- **list_all_ship_bob_receiving_orders** — List warehouse receiving orders in ShipBob with optional filtering by status, fulfillment center, purchase order number, external sync flag, and created/completed date range. Returns WROs with id, status, and attributes (remaining WRO fields).
- **create_a_ship_bob_receiving_order** — Create a warehouse receiving order in ShipBob with a destination fulfillment center, boxed contents, expected arrival date, and purchase order number. Returns the created order: id, status, and attributes (remaining WRO fields). Requires fulfillment_center, package_type, box_packaging_type, boxes, expected_arrival_date. Orders over 10,000 unique SKUs are rejected (WRO_UNIQUE_SKU_LIMIT_EXCEEDED). Required: box_packaging_type, boxes, expected_arrival_date, fulfillment_center, package_type.
- **get_single_ship_bob_receiving_order_by_id** — Get a warehouse receiving order in ShipBob by id, including its status and the expected, received, and stowed quantities of each SKU in the order. Returns: box_labels_uri, box_packaging_type, expected_arrival_date, external_sync_timestamp, fulfillment_center, id, insert_date, inventory_quantities, last_updated_date, package_type, purchase_order_number, status, status_history, attributes.…. Required: id.
- **update_a_ship_bob_receiving_order_by_id** — Update a warehouse receiving order in ShipBob by id; only included fields change. Returns the updated order: id, status, and attributes (remaining WRO fields). fulfillment_center, expected_arrival_date, and boxes change only while the order is awaiting arrival with no box processing; purchase_order_number changes in any status except complete. Required: id.
- **ship_bob_receiving_orders_set_external_sync** — Set or clear the external sync flag on one or more ShipBob warehouse receiving orders (WROs). Returns the updated WRO including its id, status, and external_sync_timestamp. Requires a request body with the WRO ids and a flag enabling or disabling external sync.
- **ship_bob_receiving_orders_cancel** — Cancel a ShipBob warehouse receiving order by id. Returns the updated WRO including its id, status, and external_sync_timestamp. Only orders in certain statuses can be cancelled. Required: id.
- **list_all_ship_bob_fulfillment_centers** — List ShipBob fulfillment centers that are enabled for receiving inventory, to pick the destination fulfillment center when creating a warehouse receiving order (WRO). Returns each fulfillment center record with its id plus additional attributes from ShipBob's FulfillmentCenterViewModel schema. For the full network of physical locations regardless of receiving eligibility, use the Locations API.
- **list_all_ship_bob_receiving_boxes** — List the boxes in a ShipBob warehouse receiving order with the line items packed in each box. Returns each box with its tracking_number and box_items including quantity and inventory_id; per-SKU totals are returned by the receiving order details endpoint. Required: receiving_id.
- **list_all_ship_bob_receiving_distributions** — Get the inventory distribution details for a warehouse receiving order (WRO) in ShipBob's Inventory Placement Program (IPP). Returns the distribution details record with its id and IPP-specific distribution attributes (response fields are not enumerated in ShipBob's docs). Available only to IPP-enrolled accounts. Required: receiving_id.
- **list_all_ship_bob_unidentified_receiving_orders** — List unidentified receiving orders (UROs) in ShipBob, filterable by whether they are already linked to a warehouse receiving order. Returns: attachments, barcode, comment, created_date, id, linked_wro_date, linked_wro_id, reason, tracking_barcode, attributes. Up to 50 records per page.
- **get_single_ship_bob_unidentified_receiving_order_by_id** — Get a single unidentified receiving order (URO) in ShipBob by id. Returns: attachments, barcode, comment, created_date, id, linked_wro_date, linked_wro_id, reason, tracking_barcode, attributes. Responds 404 if the URO does not exist or belongs to another merchant. Required: id.
- **ship_bob_unidentified_receiving_orders_associate_receiving_order** — Associate an unidentified receiving order (URO) with a warehouse receiving order (WRO) in ShipBob by linking the URO to a WRO owned by the merchant. Returns an empty 204 response on success. Required: wro_id.
- **ship_bob_receiving_tracking_bulk_update** — Update box tracking for a ShipBob Warehouse Receiving Order: sets the carrier and tracking numbers on the listed boxes, leaving unlisted boxes unchanged. Returns: boxes, id, reference_id, shipments. Tracking numbers must be unique across all boxes; unavailable when ShipBob shipping labels were purchased for the order. Required: id, boxes, vendor_carrier_name.
- **list_all_ship_bob_returns** — List ShipBob return orders across your account with optional filters for ids, reference ids (RMA numbers), status, created/completed date ranges, fulfillment centers, tracking numbers, and return actions. Returns: first, items, last, next, prev. Sort results with Sortby and SortOrder (Desc is default).
- **create_a_ship_bob_return** — Create a ShipBob return order for a previously shipped order, specifying the original shipment, inventory items to return, and requested return actions in the JSON request body. Returns: channel, completed_date, customer_name, fulfillment_center, id, insert_date, inventory, invoice_amount, original_shipment_id, reference_id, return_type, status, store_order_id, tracking_number, transactions.…. Required: fulfillment_center, inventory, reference_id.
- **get_single_ship_bob_return_by_id** — Get a single ShipBob return order by id to view its status, inventory items, transactions, and processing history. Returns: arrived_date, awaiting_arrival_date, cancelled_date, channel, completed_date, customer_name, fulfillment_center, id, insert_date, inventory, invoice, original_shipment_id, processing_date, reference_id, return_type, shipment_tracking_number, status, status_history,…. Required: id.
- **update_a_ship_bob_return_by_id** — Edit an existing ShipBob return order by sending the updated return details in the JSON request body. Returns: channel, completed_date, customer_name, fulfillment_center, id, insert_date, inventory, invoice_amount, original_shipment_id, reference_id, return_type, status, store_order_id, tracking_number, transactions. Required: id, fulfillment_center, inventory, reference_id.
- **ship_bob_returns_cancel** — Cancel a ShipBob return order by id. Returns the cancelled return order including its id and status. Required: id.
- **list_all_ship_bob_webhooks** — List ShipBob webhook subscriptions. Returns each subscription's id, url, and topics. Optional RecordsPerPage and Cursor control pagination through the paginated response.
- **create_a_ship_bob_webhook** — Create a ShipBob webhook subscription that delivers notifications for the chosen topics to a subscription URL. Returns: created_at, description, id, secret, topics, url. Required: topics, url.
- **delete_a_ship_bob_webhook_by_id** — Delete a ShipBob webhook subscription by id. Returns an empty 204 response on success. Required: id.
- **list_all_ship_bob_locations** — List physical locations across ShipBob's fulfillment network. Returns the location record including id and is_active; a location with is_active=true is operational for fulfillment processes such as receiving inventory and processing returns.
- **ship_bob_transactions_search** — Search ShipBob billing transactions with filters such as date, invoice, and fee type. Returns a paginated transactions response (Billing.TransactionDtoCursorPagedResponseV3). Required if cursor is not provided: a filter body. When the optional cursor query parameter is supplied it overrides all other filter parameters and the body is ignored.
- **list_all_ship_bob_invoices** — List ShipBob invoices, optionally filtered by invoice types and a date range. Returns a cursor-paged collection of invoice records (the response envelope is documented as InvoiceDtoCursorPagedResponseV3; individual invoice fields are content-type-specific) — each record carries an integer id that can be used as invoice_id to list that invoice's transactions. Defaults to the last month of invoice…
- **list_all_ship_bob_invoice_transactions** — List the transactions for a ShipBob invoice. Returns transaction records including id and attributes (upstream-defined transaction fields). Page size 1-1000 (default 100). Required: invoice_id.
- **list_all_ship_bob_transaction_fees** — List transaction fees charged on ShipBob billing records. Returns: fee_list.TransactionFeeModelV3 schema; consult the upstream API reference for the field-level breakdown). Takes no parameters.
- **list_all_ship_bob_shipments_tracking** — Get carrier tracking for one or more ShipBob shipments by their shipment IDs. Returns per-shipment tracking details including carrier, tracking_number, carrier_service, and tracking_url. Accepts between 1 and 25 shipment IDs per request.
- **list_all_ship_bob_tracking** — Get ShipBob shipment tracking details for one or more shipments by carrier tracking ID. Returns tracking records with carrier, tracking_number, carrier_service, and tracking_url.
- **ship_bob_logistics_labels_bulk_cancel** — Refund or cancel shipping labels for one or more ShipBob orders, and cancel the orders for later resubmission under the same reference_id. Requires reference_ids. Canceled orders are no longer accessible in the ShipBob UI or API.
- **ship_bob_logistics_labels_create_with_order** — Create a packed ShipBob order and purchase its final-mile carrier label in one synchronous call. Returns: interim_order_id, reference_id, shipment_id, final_mile_label. Requires order (reference_id, recipient, location_id, shipping_method, measurements, products) and meta (order_number, order_id, customer_name). Returns 409 if a final-mile label already exists.
- **create_a_ship_bob_logistics_label** — Create a ShipBob order and generate its shipping label (ZPL by default; request PDF via the Label-Type header), with measurements and products optional. Returns: interim_order_id, reference_id, shipment_id, label, final_mile_label. Requires order (reference_id, recipient, location_id, shipping_method) and meta (order_number, order_id, customer_name).
- **ship_bob_logistics_rates_search** — Rate-shop a ShipBob shipment. Returns: data, isSuccess, errorMessage. All fields required: actualWeight, packageDimensions (LengthInches, WidthInches, HeightInches), destinationAddress (address1, address2, city, state, zipCode, countryISO), fulfillmentCenterId, serviceName, hasSignature, insuranceAmount; serviceName must match a dashboard ship option.
- **ship_bob_order_shipments_cancel** — Cancel a shipment on a ShipBob order by order id and shipment id. Returns the shipment record including id, reference_id, and tracking details (carrier, tracking_number, carrier_service, tracking_url). The shipment must not be picked, packed, or shipped to be cancelled. Required: order_id.
- **get_single_ship_bob_order_shipment_by_id** — Get a single shipment of a ShipBob order by shipment id. Returns: actual_fulfillment_date, created_date, delivery_date, estimated_fulfillment_date, estimated_fulfillment_date_status, gift_message, id, insurance_value, invoice_amount, invoice_currency_code, is_tracking_uploaded, last_tracking_update_at, last_update_at, location, measurements, order_id, package_material_type, parent_cartons,…. Required: id, order_id.
- **list_all_ship_bob_order_shipments** — List all shipments for a ShipBob order. Returns each shipment with id, reference_id, tracking details (carrier, tracking_number, carrier_service, tracking_url), and nested shipments. Required: order_id.
- **list_all_ship_bob_inventory_item_locations** — Get inventory levels for a specific ShipBob inventory item grouped by fulfillment center. Returns the inventory-quantity record including its id and attributes with the per-location quantity breakdown (on-hand, fulfillable, committed). Required: inventory_id.
- **list_all_ship_bob_inventory_item_lots** — Get ShipBob inventory levels for a specific inventory item broken down by lot number, for tracking by manufacturing lot, expiration date, or batch information. Returns: inventory_id, lots, name, sku. Required: inventory_id.
- **list_all_ship_bob_shipment_logs** — List ShipBob shipment logs for a specific shipment, showing a detailed record of its events and status changes. Returns: log_type_id, log_type_name, log_type_text, metadata, timestamp. Required: shipment_id.
- **list_all_ship_bob_order_shipment_logs** — Get the operational logs for a specific ShipBob shipment by order and shipment id. Returns an array of shipment log entries providing a detailed record of all events and status changes on the shipment; the entry fields are not enumerated in the docs. Required: order_id, shipment_id.
- **list_all_ship_bob_receiving_labels** — Get the box labels for a warehouse receiving order (WRO) in ShipBob. Returns the label PDF (opaque binary content, no structured fields). Required: receiving_id.
- **list_all_ship_bob_shipment_line_items** — Get the current line items for a ShipBob shipment. Returns the line items, each including its product_variant (sku). Fetch the full list here before calling updateLineItems, which requires the complete item list.
- **ship_bob_shipment_line_items_bulk_update** — Update all line items for a ShipBob shipment by inventory id. Returns the update outcome with is_success and, on failure, an error object with the error code and message. Partial updates are not supported, and HTTP 200 is returned even when the update fails — check is_success. Required: items.
- **ship_bob_shipment_line_items_bulk_update_by_sku** — Update all line items for a ShipBob shipment, identifying each item by SKU. Returns the update outcome with is_success and, on failure, an error object with the error code and message. SKU resolution is all-or-nothing, is_manually_assigned_lot must be the same for all items, and HTTP 200 is returned even when…. Required: items.

## How it works

1. **Link your customer's ShipBob account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach ShipBob.** The Proxy API is a 1-to-1 mapping of the ShipBob API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Power CX Platforms with Order Intercepts** — Helpdesk and support SaaS can let agents place shipments on hold, update addresses or shipping methods, and release holds directly from a ticket — resolving 'wrong address' or 'cancel my order' requests before the warehouse picks the item.
- **Automate Returns and Reverse Logistics** — Returns platforms can programmatically create RMAs in ShipBob, monitor return status, and trigger refunds the moment items are scanned back into inventory — without merchants juggling separate WMS logins.
- **Sync Multi-Location Inventory into OMS/IMS** — Inventory and order management tools can pull real-time stock levels per fulfillment center, track lot/batch data for expiration management, and surface stockout risk inside their own planning UI.
- **Push Purchase Orders as Warehouse Receiving Orders** — ERP, PO, and inventory forecasting tools can convert supplier POs into ShipBob WROs with expected arrival dates, box contents, and tracking — then watch inventory move from in-transit to stowed.
- **Reconcile Fulfillment Costs in Finance Tools** — Accounting and analytics SaaS can pull granular ShipBob invoices, transaction fees, and per-shipment costs to map picking, packing, storage, and shipping charges into GL codes or margin reports.

## What you can build

- **Agent-Triggered Shipment Holds & Address Edits** — Let support agents place shipments on hold, bulk-update shipping addresses or instructions, and release holds — all from your app using ShipBob's shipment control endpoints.
- **Real-Time Fulfillment Timeline Widget** — Embed a step-by-step shipment timeline (received, picked, packed, labeled, shipped) inside your product using ShipBob's shipment timeline and log endpoints.
- **Multi-Location Inventory Dashboard** — Display live inventory levels, lot/batch data, and per-fulfillment-center stock so merchants can allocate and forecast without leaving your app.
- **Automated RMA Creation & Refund Triggers** — Create ShipBob returns from your returns portal, subscribe to webhooks for status changes, and trigger downstream refunds when items are received back.
- **Warehouse Receiving Order Sync from POs** — Convert purchase orders into ShipBob WROs with expected boxes, SKUs, and tracking numbers — and reflect stowed inventory back in your ERP.
- **Fulfillment Cost Analytics** — Ingest ShipBob invoices, invoice transactions, and transaction fees to build per-order profitability, storage cost, and shipping spend reports.

## FAQs

### How does end-user authentication to ShipBob work through Truto?

Truto handles the OAuth flow with ShipBob on behalf of your end users. You embed Truto's connect flow in your app; the merchant authorizes their ShipBob account once, and Truto manages token storage and refresh so you never handle credentials directly.

### Which ShipBob resources are available through this integration?

The integration covers orders, shipments, shipment timelines and logs, products and variants, inventory (levels, lots, locations, history), receiving orders (WROs), returns, fulfillment centers, shipping methods, webhooks, invoices, transactions, and logistics labels and rates.

### Can we intercept shipments before they ship?

Yes. You can bulk place shipments on hold, update shipping service or instructions, update the shipment (including address fields), release holds, and cancel shipments — enabling full order-intercept workflows for CX teams.

### How do we get real-time updates instead of polling?

ShipBob supports webhooks, which you can register, list, and delete via Truto. Subscribe to shipment, order, and return events so your app reacts to warehouse activity as it happens rather than polling on an interval.

### Does the integration support lot and batch tracking for regulated products?

Yes. You can list inventory-level lots, list inventory item lots, and manage lot exclusions (create, delete, restore) — useful for expiration management, recalls, or freezing defective batches in health, CPG, and cosmetics use cases.

### Can we build billing and cost-reconciliation features on top of ShipBob?

Yes. The integration exposes invoices, invoice transactions, transaction fees, and a transaction search endpoint, so you can pull granular picking, packing, storage, and shipping charges for reconciliation or margin analysis.

## Related reading

- [Connect ShipBob to Claude: Manage Shipping Logistics & Returns](https://truto.one/blog/connect-shipbob-to-claude-manage-shipping-logistics-returns/) — A complete engineering guide to connecting ShipBob to Claude using Truto's managed MCP server. Automate shipping, returns, and inventory workflows securely.
- [Connect ShipBob to ChatGPT: Automate Fulfillment & Inventory](https://truto.one/blog/connect-shipbob-to-chatgpt-automate-fulfillment-inventory/) — Learn how to connect ShipBob to ChatGPT using a managed MCP server. Automate fulfillment, track inventory, and orchestrate orders with natural language.
- [Connect ShipBob to AI Agents: Orchestrate Supply Chain Operations](https://truto.one/blog/connect-shipbob-to-ai-agents-orchestrate-supply-chain-operations/) — Learn how to connect ShipBob to AI agents using Truto's /tools endpoint to automate supply chain ops, inventory, and reverse logistics.
