Introduce Delivery Rate Groups, Conditions, Billing Attempt State Union

1/24/2026, 12:00:55 AM

Shopify’s GraphQL API now supports a comprehensive delivery method rate system, introducing DeliveryRateGroup and associated connection/edge types to represent grouped rates. DeliveryMethodDefinition now exposes currencyCode, freeConditions, and a rateGroups list, while DeliveryRateDefinition gains conditions, maxTransitTime, and minTransitTime fields. New enumerations and connection types enable paginated access to delivery rate range conditions and weight/value rules. Subscription billing attempts have been refactored: legacy fields errorCode, errorMessage, nextActionUrl, order, processingError, and ready are deprecated in favor of a new non‑nullable state union that aggregates ActionRequiredState, FailedState, PendingState, and SuccessState. Associated error code enums (General, Inventory, Payment) and the InventoryShipmentCreateInTransitUserErrorCode now include SHIPMENT_NOT_FOUND. The OrderTransaction receiptJson description emphasizes that it is gateway‑specific, discouraging apps from relying on it for business logic.

Type Changes

➕ Added Types (23)

🏗️DeliveryRateGroup➕ AddedOBJECT

A group of rates that make up a method definition.

Fields: id, rateProviders
🏗️DeliveryRateGroupConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple DeliveryRateGroups.

Fields: edges, nodes, pageInfo
🏗️DeliveryRateGroupEdge➕ AddedOBJECT

An auto-generated type which holds one DeliveryRateGroup and a cursor during pagination.

Fields: cursor, node
🏗️DeliveryRateProviderConnection➕ AddedOBJECT

An auto-generated type for paginating through multiple DeliveryRateProviders.

Fields: edges, nodes, pageInfo
🏗️DeliveryRateProviderEdge➕ AddedOBJECT

An auto-generated type which holds one DeliveryRateProvider and a cursor during pagination.

Fields: cursor, node
🏗️DeliveryRateRangeCondition➕ AddedOBJECT

The rate range condition for a conditionable object.

Fields: max, min, subject
🔀DeliveryRateRangeConditionCriteria➕ AddedUNION

The value (weight or price) that the condition field is compared to.

📋DeliveryRateRangeConditionSubject➕ AddedENUM

The subject of the rate range condition.

Values: TOTAL_CART_VALUE, PACKAGE_WEIGHT
🔀SubscriptionBillingAttemptAction➕ AddedUNION

The action required to continue processing the billing attempt.

🏗️SubscriptionBillingAttemptActionRequiredState➕ AddedOBJECT

The billing attempt state that requires an action to resolve.
Must complete the action required for the billing attempt to continue being processed.

Fields: action
🔀SubscriptionBillingAttemptError➕ AddedUNION

Possible error types for a subscription billing attempt.

🏗️SubscriptionBillingAttemptFailedState➕ AddedOBJECT

The billing attempt failed due to an error.

Fields: error
🏗️SubscriptionBillingAttemptGeneralError➕ AddedOBJECT

An error that occurred during a subscription billing attempt that doesn't fit other categories.

Fields: code
📋SubscriptionBillingAttemptGeneralErrorCode➕ AddedENUM

Error codes for other billing attempt failures.

Values: UNEXPECTED_ERROR, NON_TEST_ORDER_LIMIT_REACHED, FREE_GIFT_CARD_NOT_ALLOWED, CUSTOMER_NOT_FOUND, CUSTOMER_INVALID, INVALID_BILLING_ADDRESS, MERCHANT_ACCOUNT_ERROR, PAYMENT_METHOD_NOT_FOUND ... +3 more
🏗️SubscriptionBillingAttemptInventoryError➕ AddedOBJECT

An inventory-related error that occurred during a subscription billing attempt.

Fields: code, insufficientStockProductVariants
📋SubscriptionBillingAttemptInventoryErrorCode➕ AddedENUM

Error codes for inventory-related billing attempt failures.

Values: INSUFFICIENT_INVENTORY, INVENTORY_ALLOCATIONS_NOT_FOUND
🏗️SubscriptionBillingAttemptPaymentChallenge➕ AddedOBJECT

A payment challenge that the customer must complete.

Fields: nextActionUrl, status
📋SubscriptionBillingAttemptPaymentChallengeStatus➕ AddedENUM

The status of the billing attempt authentication process.

Values: OFF_SESSION_REJECTED, ON_SESSION_CHALLENGED
🏗️SubscriptionBillingAttemptPaymentError➕ AddedOBJECT

A payment-related error that occurred during a subscription billing attempt.

Fields: code
📋SubscriptionBillingAttemptPaymentErrorCode➕ AddedENUM

Error codes for payment-related billing attempt failures.

Values: PAYMENT_METHOD_DECLINED, EXPIRED_PAYMENT_METHOD, INSUFFICIENT_FUNDS, AUTHENTICATION_ERROR, INVALID_PAYMENT_METHOD, BUYER_CANCELED_PAYMENT_METHOD, INVALID_CUSTOMER_BILLING_AGREEMENT, AMOUNT_TOO_SMALL ... +9 more
🏗️SubscriptionBillingAttemptPendingState➕ AddedOBJECT

The billing attempt is currently being processed.

Fields: processing
🔀SubscriptionBillingAttemptState➕ AddedUNION

The state of a subscription billing attempt with state-specific data.

🏗️SubscriptionBillingAttemptSuccessState➕ AddedOBJECT

The billing attempt completed successfully and created an order.

Fields: order

🔄 Modified Types (6)

🏗️Customer🔄 Modified
🔄 Field modified: addresses
🏗️DeliveryMethodDefinition🔄 Modified
Field added: currencyCode

The currency used in this method definition.

Field added: freeConditions

The conditions that must pass for free delivery to be applied to an order.

Field added: rateGroups

The rate groups that make up this method definition.

🏗️DeliveryRateDefinition🔄 Modified
Field added: conditions

The conditions that must pass for this rate definition to be applied to an order.

Field added: maxTransitTime

The maximum transit time of the rate in seconds.

Field added: minTransitTime

The minimum transit time of the rate in seconds.

🏗️InventoryShipmentCreateInTransitUserErrorCode🔄 Modified
Enum value added: SHIPMENT_NOT_FOUND
🏗️OrderTransaction🔄 Modified
🔄 Field modified: receiptJson
🏗️SubscriptionBillingAttempt🔄 Modified
🔄 Field modified: errorCode
🔄 Field modified: errorMessage
🔄 Field modified: nextActionUrl
🔄 Field modified: order
🔄 Field modified: processingError
🔄 Field modified: ready
Field added: state

The state of the billing attempt with state-specific data.