Skip to main content

2025-04: Release notes

The 2025-04 release focuses on merchandising, returns, extension capabilities, GraphQL Admin API changes, and Customer Account API changes.

Several changes in this version require code updates, especially around draft order access, products and collections, and Customer Account API changes. Review and adjust affected integrations before adopting 2025-04.

2025-04 is no longer supported. Requests for this version fall forward to the oldest accessible stable version:


GraphQL Admin API updates include catalogs, customers, online store data, orders, payments, markets, fulfillment, and deprecation changes.

Apps updates add finance KYC access.

Shopify-approved finance apps can retrieve shop finance KYC details with FinanceKycInformation on behalf of an approved StaffMember, and subscribe to FINANCE_APP_STAFF_MEMBER_DELETE, FINANCE_APP_STAFF_MEMBER_GRANT, FINANCE_APP_STAFF_MEMBER_REVOKE, FINANCE_APP_STAFF_MEMBER_UPDATE, and FINANCE_KYC_INFORMATION_UPDATE webhooks.

Apr 1, 2025

Store property updates add privacy settings management.

The GraphQL Admin API now supports managing shop privacy settings with PrivacySettings, including status and enablement for cookie banners, data sale opt-out pages, and privacy policy automation, plus regional controls for cookie consent and data sale opt-outs.

Apr 1, 2025

Billing updates add app subscription plan handles and subscription contract sorting.

The subscriptionContracts query now supports sorting results by the created_at, updated_at, and status filters in the GraphQL Admin API and Customer Account API. Use these filters to organize contracts by creation time, update time, or current status.

Jan 25, 2025

Managed pricing app subscription plans now expose persistent handles for querying plan data consistently after plan IDs change. Use AppRecurringPricing.planHandle in the GraphQL Admin API and plan_handle in the app_subscriptions/update webhook payload.

Apr 1, 2025

Deprecated Checkout APIs shut down on April 1, 2025.

The deprecated Checkout APIs, including Storefront Checkout Mutations and REST Checkout Endpoints, shut down on April 1, 2025. Update impacted apps to the Storefront Cart API; mobile apps can also adopt Checkout Sheet Kit.

Mar 2, 2025

Customer updates add payment method revocation reasons, default email data, RFM groups, address mutations, and marketing consent source locations.

CustomerPaymentMethodRevocationReason includes new values for additional revocation cases: CUSTOMER_REDACTED, TOO_MANY_CONSECUTIVE_FAILURES, and CVV_ATTEMPTS_LIMIT_EXCEEDED.

Apr 1, 2025

The Customer object now includes defaultEmailAddress, which lets apps query a customer’s email address and marketing state.

Apr 1, 2025

The GraphQL Admin API now exposes a customer’s RFM (Recency, Frequency, Monetary) group through Customer.statistics.rfmGroup. Use rfmGroup to view customer engagement and purchasing patterns for segmentation and targeted marketing workflows.

Apr 1, 2025

The GraphQL Admin API adds customerAddressCreate, customerAddressUpdate, and customerAddressDelete mutations for managing customer addresses. Use the setAsDefault argument on create and update mutations to set an address as the customer’s default.

Feb 26, 2025

Now exposes the retail location where a customer’s marketing consent state was last updated, when applicable, through CustomerEmailMarketingConsentState.sourceLocation and CustomerSmsMarketingConsentState.sourceLocation.

Feb 5, 2025

Anchor to Discounts and marketingDiscounts and marketing

Discount search adds filters for end, creation, and update times.

discountNodes query now supports ends_at, created_at, and updated_at filters, so apps can find discounts by ending, creation, or last-updated time ranges.

Feb 17, 2025

GraphQL type updates add a subscription billing attempt error code and remove redundant RELEVANCE sort options.

The SubscriptionBillingAttemptErrorCode enum now includes NON_TEST_ORDER_LIMIT_REACHED, returned when a subscription billing attempt reaches the order limit for the payment processor. Use a test payment gateway to place another order.

Feb 15, 2025

RELEVANCE is no longer included by default in connection sort options where it only duplicated basic ID sorting; cases where RELEVANCE provides unique capabilities and handles regular traffic are unchanged.

Feb 1, 2025

Custom identifiers can now look up more resource types.

Use custom identifiers to look up additional resource types with collectionByIdentifier, locationByIdentifier, orderByIdentifier, and productVariantByIdentifier. Custom IDs are defined with the new id metafield type, where unique values are required and enabled by default.

Mar 22, 2025

Online store updates add content filters, theme file metadata, theme roles, and article author data.

articles, pages, and comments queries have full filter parity with the REST Admin API. Filter articles by blog_id, handle, and published_at; pages by published_status, published_at, and id; and comments by created_at, updated_at, and published_at.

Apr 1, 2025

themeFilesUpsert now returns theme file metadata in the GraphQL Admin API response body for successful mutations. Use OnlineStoreThemeFileOperationResult to verify file updates without making additional fetch requests.

Apr 1, 2025

The themeCreate mutation now accepts an optional role argument to set the role for a newly created theme. Only UNPUBLISHED and DEVELOPMENT are permitted for new themes.

Jan 23, 2025

The articleAuthors query lets apps fetch a store’s list of article authors through the GraphQL Admin API.

Apr 1, 2025

Order updates deprecate CalculatedOrder for committed edits and add partial payment recording.

Update apps that use CalculatedOrder for committed order edits: use Order to access the current state after edits are committed, and Order.agreements to query past changes. CalculatedOrder.committed is also deprecated; uncommitted order edits are unchanged.

Dec 12, 2024

Use the new orderCreateManualPayment mutation to record partial payments on orders. Multiple separate payments can be recorded, up to the total amount owing on the order.

Jan 31, 2025

Anchor to Products and collectionsProducts and collections

Products and collections updates add catalog changes, product and customer upserts, gift card limits, order line item weights, fulfillment rejection reasons, product sync IDs, harmonized system code validation, and clearer deprecation headers.

Markets integrations also need updates for backup regions, nullable currency settings, web presences, and contextual pricing.

Unused PriceListErrorCode values that are not returned by the API are hidden. Remove any references to CATALOG_ASSIGNMENT_NOT_ALLOWED, CATALOG_CANNOT_CHANGE_CONTEXT_TYPE, APP_CATALOG_PRICE_LIST_ASSIGNMENT, and CONTEXT_RULE_MARKET_LOCKED.

Mar 17, 2025

Catalog APIs now support multiple markets on one catalog, so MarketCatalog.markets no longer guarantees a single entry. To keep existing region-only behavior, update markets queries to pass type: REGION.

Jan 29, 2025

Update Markets integrations to use backupRegionUpdate with BackupRegionUpdateInput, handle nullable Market.currencySettings, and replace deprecated MarketWebPresence.market with MarketWebPresence.markets.

Jan 3, 2025

The combinedListingUpdate mutation returns the new option_name_contains_invalid_characters error when an option name includes invalid character sequences, such as /, providing clearer feedback for invalid input.

Apr 1, 2025

FulfillmentOrderRejectionReason includes new rejection reasons for international shipping setup, incorrect product info, invalid contact information or SKUs, merchant blocks, missing customs info, oversized orders, missing package preferences, and declined payments.

Apr 1, 2025

productSet and customerSet now support idempotent upserts by identifier, updating an existing record when matched or creating one otherwise. Supported identifiers are handle, id, and customId for productSet, and phone, email, and customId for customerSet.

Apr 1, 2025

Use the giftCardConfiguration query to retrieve maximum gift card values, with separate limits available for purchased gift cards and issued gift cards.

Apr 1, 2025

The X-Shopify-API-Deprecated-Reason HTTP header now returns the specific detected GraphQL deprecations, such as Shop.products or Shop.productVariants, instead of a generic deprecation practices URL.

Feb 24, 2025

Product Variant mutations now validate country-specific harmonized system codes against existing codes on the InventoryItem.

Feb 14, 2025

The GraphQL Admin API now includes the id return field in ProductFullSyncPayload, so apps can track product full sync payloads directly.

Jan 15, 2025

The orderCreate mutation now supports the optional OrderCreateLineItemInput.weight field using WeightInput to set line item weights. For variant-backed items, specified weights override variant defaults; custom items default to 0 when no weight is provided.

Jan 15, 2025

Exchange queries can now include mirrored exchanges.

The Retail ExchangeV2 query now supports the include_mirrored_exchanges filter to include or exclude exchanges mirrored from the Shopify admin.

Mar 17, 2025

Anchor to Shipping and fulfillmentShipping and fulfillment

Fulfillment service mutations add requiresShippingMethod.

Mutations fulfillmentServiceCreate and fulfillmentServiceUpdate now support the requiresShippingMethod field, aligning fulfillment service configuration with the REST Admin API equivalents.

Jan 1, 2025

Shopify Payments updates add card brand values, balance transaction amounts, and merged payout statuses.

OrderTransactions.paymentMethods includes two new enum values, CARTES_BANCAIRES and BANCONTACT. Order transactions paid with these methods return the corresponding values in GraphQL Admin API responses.

Jan 10, 2025

Shopify Payments payout statuses In Transit and Scheduled are now merged into Scheduled in dashboards and API responses. If your workflows or integrations use In Transit, update them to recognize Scheduled instead.

Jan 29, 2025

Balance transaction adjustment orders now expose fee and net amount data for reconciliation. Use fees and net under ShopifyPaymentsBalanceTransaction.adjustmentsOrders in the GraphQL Admin API, or fee and net under adjustment_order_transactions on the REST Admin API Transactions resource.

Apr 1, 2025

Anchor to Customer Account APICustomer Account API

Customer Account API updates include store credit metadata, reserved namespace protections, order fulfillment status, and contextual translations.

Store credit transactions add event and origin metadata.

Store credit transactions in the Customer Account API now include event and origin fields to identify what triggered a transaction and its source, including references to an originating OrderTransaction when applicable. OrderTransaction also now exposes order.

Feb 7, 2025

Metafield namespaces and metaobject types add reserved-prefix protections.

New metafield namespaces and metaobject types can’t include --, including values such as foo-- or foo--bar. Existing metafield and metaobject definitions continue to work, reserving the format for platform-defined identifiers like shopify--{standard} and app--{your-app-id}.

Feb 19, 2025

Customer Account API adds order fulfillment status.

Adds fulfillmentStatus to the Order object, representing the order’s aggregated fulfillment status for display purposes.

Apr 1, 2025

Customer Account API adds contextual translations.

Supports the @inContext directive with a language argument to return translated values when the requested language is active for the given country. Unsupported language or country requests using @inContext fall back to the default language.

Apr 1, 2025

Webhooks add checkout and accounts configuration tracking.

The checkout_and_accounts_configurations/update webhook fires when merchants update draft or published checkout and accounts configurations. Apps can monitor typ_osp_pages_enabled in the payload to detect Thank you and Order status page upgrades without polling APIs.

Apr 1, 2025

Payments Apps API adds card-not-present processing details.

Payments apps can now provide card-not-present processing details on PaymentSessionPaymentDetails using cardNotPresent, including avsResultCode for AVS responses and cvvResultCode for CVV verification results.

Mar 31, 2025

Polaris updates include app-owned metafields, checkout attribute removal, and POS target support.

Checkout and customer account UI extensions add app-owned metafield access.

Checkout and customer account UI extensions can now read app-owned metafields through the appMetafield API. Request these metafields in shopify.extension.toml using the $app namespace format; writing to them isn’t supported.

Mar 7, 2025

Checkout UI extensions add cart and checkout attribute removal.

Checkout UI extensions can now remove cart and checkout attributes by using AttributeRemoveChange. Pass the attribute key you want to remove when applying an attribute change during checkout.

Apr 1, 2025

POS UI extensions add developer-preview targets, receipt footer components, and QR codes.

POS UI extensions built on unsupported versions, or the April 2024 POS UI extension version stop functioning in POS 9.31. Update affected apps to the latest POS UI extension version.

Mar 7, 2025

POS UI extensions add developer-preview targets for transaction complete, cart updates, cash tracking session start and complete, and receipt footer rendering. Receipt footer extensions must use POSReceiptBlock as the parent component, and QRCode is now available.

Mar 28, 2025

Was this page helpful?