Feature Request: Expose shipping label purchase cost per order in Admin GraphQL API

Hi. We’re new to Shopify coming from BigCommerce. We run a small ecommerce store. We have a partner that also sells our products and we drop ship for them. We will be manually entering those orders into Shopify and then purchasing shipping labels for the orders. In our previous store, we were able to use an API and Google Sheets to pull the actual shipping costs we paid into a spreadsheet we use to reconcile what our seller owes us each month for the product we drop shipped including shipping charges. I’m trying to adjust our Google Sheets automations to point to Shopify now, but I’m finding that the Admin GraphQL API on Shopify does not expose the cost that we pay for a shipping label.

I would very much like to have per-order shipping label purchase costs exposed via the Admin GraphQL API (on the ShippingLabel or Fulfillment object). That would allow us to pull that data automatically into our spreadsheet as we have been with our old store. I’m not positive that this is the correct place to post this, but the AI agent on Shopify said I should post this here.

The label purchase cost is one of the known gaps in the Admin API. What Shopify Shipping charges you lands on your store’s Shopify bill as a shipping charge line, not on the order, so no orders query will return it. The workable reconciliation path today is pulling those bill line items and matching them back to orders by date and label amount. Not per-order in GraphQL, but it does get you the actual numbers you paid.

Thanks! We’d certainly prefer an automated option similar to what we’ve been using with BigCommerce, but this is definitely a workable manual option for now.

Method 1: Buy the labels through a shipping shopify- app that has its own API .

  • Apps like Shippo, EasyPost or ShipStation - you buy the label there, and their API returns the actual amount you paid per shipment, tied to the Shopify order number.
  • Point your Google Sheet at that app’s API instead of Shopify. Fully automated, real per-order cost, no matching.

Method 2: Stay on native Shopify Shipping and capture the cost into an order metafield.

  • Add an order metafield (Settings > Custom data > Orders), e.g. custom.shipping_label_cost.

  • Write the label amount into it once when you buy the label.

  • Then your Sheet pulls it per order via GraphQL:
query OrderLabelCost($id: ID!) {
  order(id: $id) {
    name
    labelCost: metafield(namespace: "custom", key: "shipping_label_cost") {
      value
    }
  }
}

HI @palenight

Exposing the actual shipping label cost through the Admin GraphQL API would make it much easier to automate reconciliation, reporting, and partner billing without relying on manual exports.

For businesses that dropship on behalf of partners, the label cost is a key part of the order’s financial data. Making it available on the ShippingLabel or Fulfillment object would allow merchants to integrate it into their existing workflwos with tools like Google Sheets or ERPs, reducing manual work and the risk of reconciliation errors. I could see this being useful for many merchants beyond this specific use case.

@palenight
I think this is a reasonable request. Shipping label cost is an important part of order profitability especially for merchants who fulfill orders on behalf of partners or need to reconcile shipping expenses.

At the moment while Shopify exposes a lot of fulfillment and shipping information through the Admin API the actual label purchase cost isn’t available, which means merchants have to export reports or manually reconcile data. Exposing this field through the GraphQL Admin API would make it much easier to automate accounting, invoicing, and partner billing.

Until then the only workarounds are exporting shipping reports or using third-party shipping platforms that expose label costs via their own APIs neither of which is as seamless as having the data available directly from Shopify.

Hello @palenight
It would be a great enhancement to the Admin GraphQl. For the time being, one workaround is to store the shipping cost separate from the label object, for example the amount in an order metafield or order note when you buy the label. With that number in hand, your Google Sheets automation can fetch it via the API and your reconciliation process can stay mostly automated until we have native shipping label cost data.