---
title: Shippo API Integration on Truto
slug: shippo
category: Logistics
canonical: "https://truto.one/integrations/detail/shippo/"
---

# Shippo API Integration on Truto



**Category:** Logistics  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 71 tools for Shippo that AI agents can call directly.

- **list_all_shippo_addresses** — List all address objects created in your Shippo account. Returns: object_id, is_complete, object_created, object_updated, object_owner, validation_results, name, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test.
- **create_a_shippo_address** — Create a new address in Shippo for use with shipments, rates, and orders. Returns: object_id, is_complete, object_created, object_updated, object_owner, validation_results, name, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test. Requires: name, street1, city, state, zip, and country. Required: country.
- **get_single_shippo_address_by_id** — Retrieve a single Shippo address by its object ID. Returns: object_id, is_complete, object_created, object_updated, object_owner, validation_results, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test, name. Required: id.
- **shippo_addresses_validate** — Validate an existing Shippo address by its object ID. Returns: object_id, is_complete, object_created, object_updated, object_owner, validation_results, name, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test. Required: address_id.
- **create_a_shippo_batch** — Create a Shippo batch for purchasing shipping labels for many shipments at once. Batches are created asynchronously, so the response won't include the batch shipments yet — retrieve the batch later to verify its shipments are valid. Returns: object_id, object_created, object_updated, object_owner. Required: default_carrier_account, default_servicelevel_token, batch_shipments.
- **get_single_shippo_batch_by_id** — Retrieve a Shippo batch by id. Returns: object_id, object_created, object_updated, object_owner. Batch shipments are displayed 100 at a time, paginated with page and filterable with object_results. Required: id.
- **shippo_batches_add_shipments** — Add shipments to an existing Shippo batch. Returns the updated batch object including object_id, object_created, status, and batch_shipments. Required: batch_id.
- **shippo_batches_purchase** — Purchase a Shippo batch that has a status of VALID. The batch status moves to PURCHASING, then to PURCHASED once all shipments are bought and a batch_purchased webhook is sent. Returns the batch object including object_id, object_created, object_updated, status, and batch_shipments. Required: batch_id.
- **shippo_batches_remove_shipments** — Remove shipments from an existing Shippo batch. Returns the updated batch object including object_id, object_created, status, and batch_shipments. Required: batch_id.
- **list_all_shippo_carrier_accounts** — List all carrier accounts connected to your Shippo account, including both Shippo carrier accounts and your own connected carrier accounts. Returns: object_id, carrier, object_owner, account_id, test, active, is_shippo_account, metadata, service_levels. Pass service_levels=true to append service levels to each account.
- **create_a_shippo_carrier_account** — Create a new carrier account in Shippo or connect an existing carrier account to your Shippo account. Returns the created account object with object_id, carrier, account_id, parameters, active, test, and metadata. Required: account_id, carrier, parameters.
- **get_single_shippo_carrier_account_by_id** — Get a single Shippo carrier account by its object id. Returns: object_id, carrier, object_owner, account_id, test, active, is_shippo_account, metadata, service_levels. Required: id.
- **update_a_shippo_carrier_account_by_id** — Update an existing Shippo carrier account by id. The account_id and carrier cannot be changed because together they form the unique identifier. Returns the updated account object with carrier, object_id, account_id, parameters, active, test, and metadata. Required: id, account_id, carrier.
- **shippo_carrier_accounts_initiate_signin** — Initiate OAuth 2.0 sign-in to set up or reconnect a carrier account with carriers that support OAuth 2.0. Redirects the user to the carrier's login page to approve the authorization. Required: carrier_account_id, redirect_uri.
- **shippo_carrier_accounts_register** — Register a new Shippo carrier account by submitting the carrier token (e.g. usps, ups, fedex, canada_post) and its carrier-specific credentials in parameters. Returns the created carrier account: carrier, object_id, account_id, active, is_shippo_account, test, parameters, metadata, and object_owner.
- **shippo_carrier_accounts_registration_status** — Get the registration status of your Shippo account for a given carrier (ups, usps, or canada_post). Returns the carrier account details: carrier, object_id, account_id, active, is_shippo_account, test, parameters, metadata, and object_owner. Required: carrier.
- **list_all_shippo_customs_declarations** — List all Shippo customs declarations for your account. Returns each declaration with object_id, object_created, object_updated, contents_type, certify, certify_signer, incoterm, and items. Supports page and results query parameters (results defaults to 5 per page).
- **create_a_shippo_customs_declaration** — Create a new Shippo customs declaration for international shipments. Returns: object_id, object_created, object_updated, object_owner, is_complete, validation_results, metadata. Required: certify, certify_signer, contents_type, items, non_delivery_option.
- **get_single_shippo_customs_declaration_by_id** — Get an existing Shippo customs declaration by its object ID. Returns the declaration object with object_id, object_created, object_updated, contents_type, certify, certify_signer, incoterm, and items. Required: id.
- **list_all_shippo_customs_items** — List all customs items.
- **create_a_shippo_customs_item** — Create a new customs item. Required: description, mass_unit, net_weight, origin_country, quantity, value_amount, value_currency.
- **get_single_shippo_customs_item_by_id** — Retrieve a customs item. Required: id.
- **create_a_shippo_embedded_authze** — Create a short-lived Shippo JWT that client-side applications can use to authenticate without exposing a long-lived API token. Returns: token, expiresIn. The returned token is valid for 12 hours. Required: scope.
- **create_a_shippo_live_rate** — Create a live rates request in Shippo to fetch carrier rates at checkout. Returns: object_id. Required: address_to, line_items.
- **list_all_shippo_settings_parcel_templates** — Get the currently configured default parcel template for live rates in Shippo. Returns the default parcel template setting including its object_id, object_created, object_updated, and name.
- **shippo_settings_parcel_templates_bulk_update** — Update the default parcel template for live rates in Shippo. Pass the object_id of the user parcel template to set as the new default in the request body. Returns the updated setting including its object_id, object_created, object_updated, and name.
- **shippo_settings_parcel_templates_bulk_delete** — Clear the currently configured default parcel template for live rates in Shippo. Returns an empty 204 response on success.
- **list_all_shippo_manifests** — List all manifests.
- **create_a_shippo_manifest** — Create a new manifest. Required: carrier_account, shipment_date, address_from.
- **get_single_shippo_manifest_by_id** — Retrieve a manifest. Required: id.
- **list_all_shippo_orders** — List all Shippo orders, filterable by status, shop app, and placed-date range. Returns each order's object_id, order_status, placed_at, order_number, to_address, line_items, and total_price. Optional filters: order_status[], shop_app, start_date, end_date.
- **create_a_shippo_order** — Create a new Shippo order with the recipient address and line items. Returns the created order object including object_id, order_status, placed_at, to_address, line_items, and total_price. Required: placed_at, to_address.
- **get_single_shippo_order_by_id** — Retrieve an existing Shippo order by its object ID. Returns the order object including object_id, order_status, placed_at, to_address, line_items, and total_price. Required: id.
- **list_all_shippo_parcel_templates** — List all Shippo carrier parcel template objects, optionally filtered by carrier (e.g. fedex, usps) and by whether templates come from user-added or enabled carriers. Returns: name, token, carrier, is_variable_dimensions, length, width, height, distance_unit.
- **get_single_shippo_parcel_template_by_id** — Get a single Shippo carrier parcel template by its token. Returns: name, token, carrier, is_variable_dimensions, length, width, height, distance_unit.g. FedEx_Box_Small_1). Required: id.
- **list_all_shippo_parcels** — List all Shippo parcels. Returns parcel objects with fields like object_id, object_created, length, width, height, distance_unit, weight, mass_unit, template, and metadata. Pagination is handled automatically.
- **create_a_shippo_parcel** — Create a new Shippo parcel, either from package dimensions or from a carrier parcel template. Returns the created parcel object including object_id, object_created, length, width, height, distance_unit, weight, mass_unit, and metadata. Requires either the package dimensions (length, width, height, distance_unit, weight, mass_unit) or a template token.
- **get_single_shippo_parcel_by_id** — Get an existing Shippo parcel by id. Returns parcel details including object_id, object_created, length, width, height, distance_unit, weight, mass_unit, and template. Note: parcel details are not returned for un-purchased shipment or rate parcel object IDs. Required: id.
- **create_a_shippo_pickup** — Create a Shippo pickup so a carrier comes to a specified location to collect packages for shipping. Only USPS and DHL Express pickups are supported, for eligible shipments you have already created. Returns the pickup object including object_id, location, requested_start_time, and requested_end_time. Required: carrier_account, location, requested_end_time, requested_start_time, transactions.
- **get_single_shippo_rate_by_id** — Get a single Shippo rate by id. Returns the rate object including its object_id, amount and amount_local pricing with currency and currency_local, provider, carrier_account, servicelevel_name, servicelevel_token, and object_created/object_updated timestamps. Rates older than 390 days are not returned. Required: id.
- **create_a_shippo_refund** — Create a refund. Required: transaction.
- **list_all_shippo_refunds** — List all refunds.
- **get_single_shippo_refund_by_id** — Retrieve a refund. Required: id.
- **list_all_shippo_service_groups** — List all service groups.
- **create_a_shippo_service_group** — Create a new service group. Required: description, name, type, service_levels.
- **delete_a_shippo_service_group_by_id** — Delete a service group. Required: id.
- **shippo_service_groups_bulk_update** — Update an existing service group. Required: description, name, type, object_id, is_active, service_levels.
- **list_all_shippo_shipments** — List all Shippo shipments. Returns shipment objects with object_id, address_to/address_from, parcels, rates, status, object_created, and test. Filter by creation date with object_created_gt/gte/lt/lte (ISO 8601 UTC, max 90-day range); shipments older than 390 days are not returned.
- **create_a_shippo_shipment** — Create a new Shippo shipment. Returns the created shipment object including object_id, address_to, address_from, parcels, rates, status, object_created, and test. Requires address_to, address_from, and parcels; pass async=false to calculate rates synchronously. Required: address_from, address_to, parcels.
- **get_single_shippo_shipment_by_id** — Get a single Shippo shipment by id (the shipment object_id). Returns the shipment object including object_id, address_to, address_from, parcels, rates, status, object_created, and test; shipments older than 390 days are not returned. Required: id.
- **list_all_shippo_shipment_rates** — List Shippo rates calculated for a shipment. Returns a paginated list of rate objects including object_id, amount, amount_local, currency, provider, and servicelevel details. Rates for shipments older than 390 days are not returned. Required: shipment_id.
- **shippo_shipment_rates_list_in_currency** — List Shippo rates for a shipment converted to a specific currency. Returns a paginated list of rate objects including object_id, amount, amount_local, currency, provider, and servicelevel details. Requesting rates in a new currency re-queues the shipment until status is SUCCESS; rates for shipments older than 390 days are not returned. Required: shipment_id, currency_code.
- **create_a_shippo_track** — Register a tracking webhook in Shippo for a package to receive HTTP notifications when its status changes. Returns the tracking object including carrier, tracking_number, eta, tracking_status, and tracking_history. Required: carrier, tracking_number.
- **list_all_shippo_tracks** — Get the current tracking status of a shipment in Shippo using a carrier name and tracking number. Returns the tracking object including carrier, tracking_number, eta, tracking_status, and tracking_history. Required: tracking_number, carrier.
- **list_all_shippo_transactions** — List all Shippo shipping label (transaction) objects. Returns each transaction's object_id, status, object_state, tracking_number, tracking_status, rate, label_url, tracking_url_provider, and eta. Filter by rate, object_status, tracking_status, and creation date ranges (ISO 8601 UTC dates; at most one lower and one upper bound per request).
- **create_a_shippo_transaction** — Create a shipping label (transaction) in Shippo by purchasing a previously-created rate object, or instantly by passing shipment details with an existing carrier_account and servicelevel_token. Returns the created transaction object including object_id, status, tracking_number, tracking_url_provider, label_url, and eta. The two body shapes (rate-based and instant) are mutually exclusive.
- **get_single_shippo_transaction_by_id** — Get an existing Shippo shipping label (transaction) by id. Returns: object_id, object_created, object_updated, object_owner, test, metadata. Required: id.
- **list_all_shippo_user_parcel_templates** — List all user parcel templates saved on the Shippo account. Returns: object_id, object_owner, object_created, object_updated, name, is_complete, validation_results, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test.
- **create_a_shippo_user_parcel_template** — Create a Shippo user parcel template — either from a preset carrier template token plus the weight fields, or fully custom with dimensions. Returns: object_id, object_owner, object_created, object_updated, name.
- **get_single_shippo_user_parcel_template_by_id** — Get a Shippo user parcel template by its object id. Returns: object_id, object_owner, object_created, object_updated, test, name. Required: id.
- **update_a_shippo_user_parcel_template_by_id** — Update an existing Shippo user parcel template by its id — change its name, dimensions, or weight. Returns: object_id, object_owner, object_created, object_updated, name, is_complete, validation_results, company, street_no, street1, street2, street3, city, state, zip, country, longitude, latitude, phone, email, is_residential, metadata, test. Required: id, distance_unit, height, length, name, width.
- **delete_a_shippo_user_parcel_template_by_id** — Delete a Shippo user parcel template by its object id. Returns an empty 204 response on success. Required: id.
- **list_all_shippo_shippo_accounts** — List all Shippo managed accounts. Returns account objects including object_id, email, first_name, last_name, company_name, object_created, and object_updated.
- **create_a_shippo_shippo_account** — Create a new Shippo managed account. Returns the created account object including object_id, object_owner, email, name, object_created, and object_updated. Takes email, first_name, last_name, and company_name in the request body.
- **get_single_shippo_shippo_account_by_id** — Get a single Shippo managed account by id. Returns the account object including object_id, object_owner, email, name, object_created, and object_updated. Required: id.
- **update_a_shippo_shippo_account_by_id** — Update a Shippo managed account by id. Returns the updated account object including object_id, object_owner, email, name, object_created, and object_updated. Takes email, first_name, last_name, and company_name in the request body. Required: id.
- **list_all_shippo_webhooks** — List all Shippo webhooks you have created. Returns each webhook record with object_id, event, url, active, is_test, object_created, object_updated, and object_owner.
- **create_a_shippo_webhook** — Create a Shippo webhook that sends notifications to a URL when a specific event occurs. Returns: object_id, event, url, active, is_test, object_created, object_updated, object_owner. Requires url and event.
- **get_single_shippo_webhook_by_id** — Get a single Shippo webhook by id. Returns the webhook details: object_id, event, url, active, is_test, object_created, object_updated, and object_owner. Required: id.
- **update_a_shippo_webhook_by_id** — Update an existing Shippo webhook by id. Returns: event, url. Requires id, url, and event. Required: id.
- **delete_a_shippo_webhook_by_id** — Delete a Shippo webhook by id. Returns an empty 204 response on success. Required: id.

## How it works

1. **Link your customer's Shippo 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 Shippo.** The Proxy API is a 1-to-1 mapping of the Shippo 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

- **Embed native shipping label generation in your platform** — E-commerce platforms, OMS, and marketplaces can let merchants rate-shop carriers and purchase labels without leaving the product. Truto handles Shippo auth and request handling so you ship this in days, not quarters.
- **Power high-volume fulfillment for WMS and 3PL software** — Warehouse management platforms can batch-generate hundreds of labels, support bring-your-own-carrier credentials, and produce end-of-day manifests. Truto lets you focus on the warehouse UX instead of maintaining Shippo API wrappers.
- **Automate return label workflows for returns SaaS** — Returns platforms can issue return labels on demand, refund unused labels, and monitor return tracking events. Truto's connection management means each merchant's Shippo account stays isolated and auditable.
- **Offer white-labeled shipping to marketplace sellers** — Marketplaces can provision managed Shippo sub-accounts for each seller at onboarding, then purchase discounted labels on their behalf. Truto routes requests per-connection so each seller's shipments stay cleanly separated.
- **Enable cross-border selling with automated customs** — B2B commerce platforms can collect HS codes, item values, and country of origin, then push customs declarations to Shippo for paperless international shipments. Truto normalizes the request flow so you can expose a single customs UX across merchants.

## What you can build

- **Multi-carrier rate shopping at checkout** — Use live rates and shipment rate endpoints to display real-time carrier pricing and transit times inside your cart or order screen.
- **One-click label purchase with PDF/ZPL output** — Create a shipment, select a rate, and purchase a transaction to return a printable label URL and tracking number to your UI.
- **Batch label generation for warehouse operations** — Build bulk fulfillment workflows that create batches, add shipments, and purchase hundreds of labels asynchronously for pick-pack-ship teams.
- **End-of-day manifests and pickups** — Generate SCAN forms via manifests and schedule carrier pickups so drivers can collect all packages with a single barcode scan.
- **Real-time tracking with webhook-driven notifications** — Subscribe to Shippo webhooks and track resources to push delivery status updates into your app for SMS, email, or in-product alerts.
- **Bring-your-own-carrier settings page** — Let enterprise merchants register and connect their own UPS, FedEx, or DHL accounts via carrier account endpoints so they ship on negotiated rates.

## FAQs

### How do end users authenticate their Shippo account?

Shippo uses API token authentication. Through Truto, your users supply their Shippo API key during the connect flow, and Truto securely stores and injects credentials on every request so you never handle secrets directly.

### Can we provision Shippo accounts for our users automatically?

Yes. Truto exposes the Shippo accounts endpoints (create, list, get, update), which lets platform partners programmatically create managed sub-accounts for merchants during onboarding without manual signup.

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

Use the webhook endpoints (create, list, get, update, delete) to subscribe to Shippo tracking events. Truto can relay these webhook payloads to your application so you can react to status changes like 'Out for Delivery' or 'Delivered' in real time.

### Does the integration support international shipping and customs?

Yes. The customs items and customs declarations endpoints let you submit item-level values, weights, HS codes, and country of origin, which Shippo forwards to carriers electronically for paperless trade.

### Can merchants connect their own negotiated carrier accounts?

Yes. The carrier account endpoints support creating, updating, registering, and checking registration status for carrier accounts, so merchants can bring their own UPS, FedEx, DHL, or other carrier credentials.

### How do we void or refund an unused label?

Use the refund endpoints to create a refund against a transaction, list refunds, or check refund status. This is how returns platforms and OMS products reclaim funds on labels that were generated but never shipped.
