ShipGenius White Logo

Copyright ShipGenius® 2025

🧮 Rating a Package

Compare real-time shipping rates across multiple carriers

📘 Overview

Use the rate query to get shipping costs for a package.
You can submit multiple rate requests in a single call and receive detailed pricing, estimated delivery, carrier-specific fees, and any errors that occurred during the request.

This is ideal for:

  • Showing customers multiple shipping options at checkout
  • Pre-calculating shipping costs before label generation
  • Testing carrier pricing across accounts and services

🛰️ Query Format

query getRate($request: [RateInput!]!, $services: [CarrierServiceRateInput!]!) {
  rate(request: $request, services: $services) {
    request_id
    rates {
      __typename
      account_number
      carrier
      requested_rate_class
      service_code

      ... on Rate {
        actual_rate_class
        base_price
        total_price
        labelgenius_charge
        estimated_delivery
        guaranteed_delivery
        billing_weight
        disclaimers
        rate_id
        itemized_charges {
          code
          charge_amount
        }
        warnings {
          code
          message
        }
        carrier_specific
      }

      ... on RateError {
        code
        message
      }
    }
  }
}

✅ Successful Rate Response

When the request is valid, the API returns a list of one or more rate objects under data.rate.rates.

BulkRateResponse

{
    "data": {
        "rate": [
            {
                "request_id": "abc123",
                "rates": [
                    {
                        "__typename": "Rate",
                        "carrier": "UPS",
                        "service_code": "GND",
                        "requested_rate_class": "NEGOTIATED",
                        "actual_rate_class": "NEGOTIATED",
                        "total_price": 8.73,
                        "base_price": 7.91,
                        "labelgenius_charge": 0.10,
                        "estimated_delivery": "2025-06-26",
                        "guaranteed_delivery": null,
                        "account_number": "123456",
                        "rate_id": "rate_abc123",
                        "billing_weight": 1.5,
                        "disclaimers": [
                            "Delivery dates are estimates only."
                        ],
                        "carrier_specific": {},
                        "itemized_charges": [
                            {
                                "code": "BASE_CHARGE",
                                "charge_amount": 7.91
                            },
                            {
                                "code": "FUEL_SURCHARGE",
                                "charge_amount": 0.82
                            }
                        ],
                        "warnings": [
                            {
                                "code": "RESIDENTIAL_SURCHARGE",
                                "message": "Delivery address is residential."
                            }
                        ]
                    }
                ]
            }
        ]
    }
}

📦 Required Input

A rate request must contain:

services CarrierServiceRateInput

Use this to specify which carrier and service(s) you'd like to receive rates for.

Fields:

  • carrier: Required – one of the supported carrier codes (e.g. UPS, USPS, FedEx, DHL)

  • service_code: Required – the specific service you'd like to rate
    Examples include:

    • GND (UPS Ground)
    • USPS_PRIORITY_MAIL (USPS Priority Mail)
  • account_number: Optional – your shipper account to use for rating.
    If omitted, the default platform account will be used (if allowed).

  • rate_class: Required – defines which type of rate to return (e.g. RETAIL, COMMERCIAL, NEGOTIATED)

🧾 Supported service_code Values

TIP

use EntitySearches to help find a list of up to date available carrier service codes.

request RateInput

  • request_id: String Echoed ID in response to help match client-side requests.

  • override_services: CarrierServiceRateInput

NOTE

This list overrides the services provided to Query.rate Use it to narrow or customize the rating request for this specific shipment.

  • carrier_specific: ShipmentCarrierInput Carrier specific config

  • additional: AdditionalInfoInput Additional shipment metadata

  • package: PackageRateInput

    • ship_from: AddressInput Origin address

    • ship_to: AddressInput Destination address

    • packaging: Packaging One of:

      • custom_box (requires length, width, height)
      • custom_bag (requires girth, length, width, height)
      • carrier_specific (e.g. USPS Flat Rate or UPS Pak)
    • weight: WeightInput The total shipment weight in imperial or metric

    Optional fields:

    • return_address: AddressInput If different from ship_from
    • extra_services: ExtraService Insurance, signature, Saturday delivery, etc.
    • hazmat: HazmatInfo Lithium batteries, dry ice, etc.
    • customs: CustomsInput Required for international shipments