Item shows in returnable fulfillments despite final sale

We want to know through the Admin GraphQL API whether or not an item was final sale once an order has been created. I tested this flow by adding a new Return Rule and adding some items to the final sale section:

I was then able to see via the customer self-service returns UI that the item on the order was indeed final sale:

My expectation was that if I queried returnableFulfillments that I would only get one item - the one that wasn’t final sale. I ran the following query:

curl -i -X POST \
  https://joshua-draft-fixed.myshopify.com/admin/api/2025-07/graphql.json \
  -H "Content-Type: application/json" \
  -H "X-Shopify-Access-Token: removed_token" \
  -d '{
    "query": "query($orderId: ID!) { returnableFulfillments(orderId: $orderId, first: 100) { pageInfo { endCursor hasNextPage hasPreviousPage startCursor } edges { cursor node { id returnableFulfillmentLineItems(first: 100) { pageInfo { endCursor hasNextPage hasPreviousPage startCursor } edges { cursor node { fulfillmentLineItem { id lineItem { id name quantity refundableQuantity } } quantity } } } } } } }",
    "variables": {
      "orderId": "gid://shopify/Order/5553817288837"
    }
  }'

here is an example response, in which you can see both products:

HTTP/2 200 
date: Tue, 29 Jul 2025 15:35:57 GMT
content-type: application/json; charset=utf-8
x-sorting-hat-podid: 132
x-sorting-hat-shopid: 56313086085
vary: Accept-Encoding
referrer-policy: origin-when-cross-origin
x-frame-options: DENY
x-shopid: 56313086085
x-shardid: 132
x-stats-userid: 
x-stats-apiclientid: 267195023361
x-stats-apipermissionid: 414998823045
x-shopify-api-version: 2025-07
content-language: en
strict-transport-security: max-age=7889238
x-request-id: 3aa142a3-a911-4501-9207-5da97476d6aa-1753803357
server-timing: processing;dur=211, graphql;desc="admin/query/other"
content-security-policy: default-src 'self' data: blob: 'unsafe-inline' 'unsafe-eval' https://* shopify-pos://*; block-all-mixed-content; child-src 'self' https://* shopify-pos://*; connect-src 'self' wss://* https://*; frame-ancestors 'none'; img-src 'self' data: blob: https:; script-src https://cdn.shopify.com https://cdn.shopifycdn.net https://checkout.pci.shopifyinc.com https://checkout.pci.shopifyinc.com/build/75a428d/card_fields.js https://api.stripe.com https://mpsnare.iesnare.com https://appcenter.intuit.com https://www.paypal.com https://js.braintreegateway.com https://c.paypal.com https://maps.googleapis.com https://www.google-analytics.com https://v.shopify.com 'self' 'unsafe-inline' 'unsafe-eval'; upgrade-insecure-requests; report-uri /csp-report?source%5Baction%5D=query&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fgraphql&source%5Bsection%5D=admin_api&source%5Buuid%5D=3aa142a3-a911-4501-9207-5da97476d6aa-1753803357; report-to shopify-csp
x-content-type-options: nosniff
x-download-options: noopen
x-permitted-cross-domain-policies: none
x-xss-protection: 1; mode=block
reporting-endpoints: shopify-csp="/csp-report?source%5Baction%5D=query&source%5Bapp%5D=Shopify&source%5Bcontroller%5D=admin%2Fgraphql&source%5Bsection%5D=admin_api&source%5Buuid%5D=3aa142a3-a911-4501-9207-5da97476d6aa-1753803357"
x-dc: gcp-us-central1,gcp-us-central1,gcp-us-central1
alt-svc: h3=":443"; ma=86400
cf-cache-status: DYNAMIC
report-to: {"endpoints":[{"url":"https:\/\/a.nel.cloudflare.com\/report\/v4?s=TIKRO22jaYpTafrF6F0mtq5w3hcHmU%2FE7YYMBUiX0DhVmN4N83qZ1ysJRHRrlGnvgZLoGQrSFy98P9ABdNdPkaui9Vb8x53O8%2FebL2P1Ivxd3RYYmGcop1An2OKzFIjSl0ZwvEDGof%2FXxWv7GM9G%2BjSukrA6gyJQUfO5bD7y"}],"group":"cf-nel","max_age":604800}
nel: {"success_fraction":0.01,"report_to":"cf-nel","max_age":604800}
shopify-edge-ip: 2620:127:f00f:e::
server-timing: cfRequestDuration;dur=310.999870
server-timing: ipv6
server: cloudflare
cf-ray: 966db0669ba7bd4b-ATL

{"data":{"returnableFulfillments":{"pageInfo":{"endCursor":"eyJsYXN0X2lkIjo1MTA4OTUzNTQ2ODg1LCJsYXN0X3ZhbHVlIjo1MTA4OTUzNTQ2ODg1fQ==","hasNextPage":false,"hasPreviousPage":false,"startCursor":"eyJsYXN0X2lkIjo1MTA4OTUzNTQ2ODg1LCJsYXN0X3ZhbHVlIjo1MTA4OTUzNTQ2ODg1fQ=="},"edges":[{"cursor":"eyJsYXN0X2lkIjo1MTA4OTUzNTQ2ODg1LCJsYXN0X3ZhbHVlIjo1MTA4OTUzNTQ2ODg1fQ==","node":{"id":"gid://shopify/ReturnableFulfillment/5108953546885","returnableFulfillmentLineItems":{"pageInfo":{"endCursor":"eyJsYXN0X2lkIjoxMTU2MzE0MTgyNDY0NSwibGFzdF92YWx1ZSI6MTE1NjMxNDE4MjQ2NDV9","hasNextPage":false,"hasPreviousPage":false,"startCursor":"eyJsYXN0X2lkIjoxMTU2MzE0MTc5MTg3NywibGFzdF92YWx1ZSI6MTE1NjMxNDE3OTE4Nzd9"},"edges":[{"cursor":"eyJsYXN0X2lkIjoxMTU2MzE0MTc5MTg3NywibGFzdF92YWx1ZSI6MTE1NjMxNDE3OTE4Nzd9","node":{"fulfillmentLineItem":{"id":"gid://shopify/FulfillmentLineItem/11563141791877","lineItem":{"id":"gid://shopify/LineItem/13432780324997","name":"The Multi-location Snowboard","quantity":1,"refundableQuantity":1}},"quantity":1}},{"cursor":"eyJsYXN0X2lkIjoxMTU2MzE0MTgyNDY0NSwibGFzdF92YWx1ZSI6MTE1NjMxNDE4MjQ2NDV9","node":{"fulfillmentLineItem":{"id":"gid://shopify/FulfillmentLineItem/11563141824645","lineItem":{"id":"gid://shopify/LineItem/13432780357765","name":"The Multi-managed Snowboard","quantity":1,"refundableQuantity":1}},"quantity":1}}]}}}]}},"extensions":{"cost":{"requestedQueryCost":272,"actualQueryCost":8,"throttleStatus":{"maximumAvailable":2000.0,"currentlyAvailable":1992,"restoreRate":100.0}}}}

Why do I get the final sale product back in returnableFulfillments? I was hoping that I could use the delta between the fulfillments and returnablefulfillments to determine what was returnable. Is there any way from the admin API to be able to tell what products are not returnable from a customer POV?

Adding the Shopify documentation that states this should be showing up on the order.returnableFulfillments object:

Looks like we have duplicate threads. I’ll solve this one and we can continue in the other one