2021-01 release notes
We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our developer changelog. You can filter updates by area. For example, you can filter API updates by the API name and version, such as GraphQL Admin API changes in version 2025-04.
| Release date | Date version is no longer supported |
|---|---|
| January 1, 2021 | January 1, 2022 |
The 2021-01 release contains native support for subscriptions through our new Subscription APIs.
This release also includes support for scheduled fulfillments to facilitate prepaid subscriptions, automatic activation of app charges, and more granular financial information on orders and transactions, such as fees and tip totals.
What’s new in 2021-01
The following features were added in version 2021-01 of Shopify's APIs:
- We've included several new endpoints and resources to help you manage subscriptions on behalf of merchants. You can use selling plans to set delivery, billing, and pricing policies for groups of products. When a customer places an order that includes a product with a selling plan, you can manage subscription contracts to support recurring payments on the customer payment methods that are available.
- We've released a product subscription app extension that allows you to manage subscriptions directly inside the Shopify admin.
- Fulfillment orders now support the
SCHEDULEDstatus, which displays for any orders that include a prepaid subscription. To learn more about how fulfillments and subscriptions work together, refer to the Create and manage fulfillments for prepaid subscriptions. - Accepted application charges now automatically transition into an
activestate. To learn more about creating and issuing charges, refer to Charging for your app with the REST Admin API. - The new
TransactionFeeobject includes more detailed information about fees collected as a part of Shopify Payments payouts, including the flat rate charges, percentage charges, and a breakdown of the tax charged on these fees. - The GraphQL Admin API now includes tips received as a part of an order in both shop and presentment currencies using the
totalTipReceivedSetfield on theOrderobject. This increased granularity helps accounting apps report accurately on fees and tips for order transactions.
Anchor to Breaking changesBreaking changes
These changes require special attention. If your app uses these API resources, and you don’t adjust your usage of the resources according to the following instructions, then your app might break when you update to this API version.
Anchor to Status field in REST FulfillmentOrder resourceStatus field in REST Fulfillment Order resource
As of the 2021-01 API version, we've added a new scheduled value to the status field in the FulfillmentOrder resource.
For more information, refer to Managing prepaid subscription orders.
Anchor to Auto-activate billing charges using the REST Admin APIAuto-activate billing charges using the REST Admin API
We've removed the accepted value for the status field and the activate endpoint on the ApplicationCharge and RecurringApplicationCharge resources.
As of the 2021-01 API version, when a merchant accepts a charge, the charge immediately transitions from pending to active. This means that you no longer need to activate the charge to finalize it.
Anchor to Cursor-based paginationCursor-based pagination
The /admin/api/{version}/users.json endpoint now supports cursor-based pagination.
For operations that need to fetch large amounts of data, use the GraphQL Admin API to perform bulk operations rather than paginating through resources.
Anchor to GraphQL Admin API changesGraph QL Admin API changes
Below are all the changes currently introduced in the 2021-01 version of the GraphQL Admin API.
Anchor to Subscription APIs,[object Object]Subscription APIs
We've added the new subscription APIs to enable you to build support for subscriptions into the cart and product pages on the storefront.
You can use subscription APIs to sell goods and services in multiple ways. For example, you can sell a product as a one-time purchase or as a recurring subscription.
Subscription APIs
-
Selling plan APIs: An alternative way to sell a product or variant, other than "buy now".
-
Subscription contract APIs: The subscription agreements between a customer and merchant.
-
Customer payment method APIs: Stored payment methods that can be used to pay for future orders without requiring the customer to manually go through checkout.
For more information about subscription APIs, refer to Shopify subscriptions overview.
New mutations
-
CustomerPaymentMethodCreditCardCreatewas added -
CustomerPaymentMethodSendUpdateEmailwas added -
CustomerPaymentMethodCreditCardUpdatewas added -
CustomerPaymentMethodRemoteCreditCardCreatewas added -
CustomerPaymentMethodRevokewas added -
ProductJoinSellingPlanGroupswas added -
ProductLeaveSellingPlanGroupswas added -
ProductVariantJoinSellingPlanGroupswas added -
ProductVariantLeaveSellingPlanGroupswas added -
SellingPlanGroupAddProductVariantswas added -
SellingPlanGroupAddProductswas added -
SellingPlanGroupCreatewas added -
SellingPlanGroupDeletewas added -
SellingPlanGroupRemoveProductVariantswas added -
SellingPlanGroupRemoveProductswas added -
SellingPlanGroupUpdatewas added -
SubscriptionBillingAttemptCreatewas added -
SubscriptionContractCreatewas added -
SubscriptionContractSetNextBillingDatewas added -
SubscriptionContractUpdatewas added -
SubscriptionDraftCommitwas added -
SubscriptionDraftDiscountAddwas added -
SubscriptionDraftDiscountCodeApplywas added -
SubscriptionDraftDiscountRemovewas added -
SubscriptionDraftDiscountUpdatewas added -
SubscriptionDraftFreeShippingDiscountAddwas added -
SubscriptionDraftFreeShippingDiscountUpdatewas added -
SubscriptionDraftLineAddwas added -
SubscriptionDraftLineRemovewas added -
SubscriptionDraftLineUpdatewas added -
SubscriptionDraftUpdatewas addedNew types
-
CustomerCreditCardobject was added -
CustomerPaymentMethodobject was added -
CustomerPaymentInstrumentunion type was added -
DiscountTargetTypeenum was added -
DiscountTypeenum was added -
Failureobject was added -
LastPaymentStatusenum was added -
LineItemSellingPlanobject was added -
SellingPlanobject was added -
SellingPlanAnchorInputinput object was added -
SellingPlanAnchorobject was added -
SellingPlanBillingPolicyInputinput object was added -
SellingPlanBillingPolicyobject was added -
SellingPlanDeliveryPolicyInputinput object was added -
SellingPlanDeliveryPolicyobject was added -
SellingPlanFixedPricingPolicyInputinput object was added -
SellingPlanFixedPricingPolicyobject was added -
SellingPlanGroupInputinput object was added -
SellingPlanGroupResourceInputinput object was added -
SellingPlanGroupobject was added -
SellingPlanInputinput object was added -
SellingPlanOptionobject was added -
SellingPlanPricingPolicyAdjustmentTypeenum was added -
SellingPlanPricingPolicyAdjustmentValueunion type was added -
SellingPlanPricingPolicyBaseinterface type was added -
SellingPlanPricingPolicyInputinput object was added -
SellingPlanPricingPolicyPercentageValueobject was added -
SellingPlanPricingPolicyValueInputinput object was added -
SellingPlanPricingPolicyunion type was added -
SellingPlanRecurringBillingPolicyInputinput object was added -
SellingPlanRecurringBillingPolicyobject was added -
SellingPlanRecurringDeliveryPolicyInputinput object was added -
SellingPlanRecurringDeliveryPolicyobject was added -
SellingPlanRecurringPricingPolicyInputinput object was added -
SellingPlanRecurringPricingPolicyobject was added -
SubscriptionAppliedCodeDiscountobject was added -
SubscriptionBillingAttemptInputinput object was added -
SubscriptionBillingAttemptobject was added -
SubscriptionBillingPolicyInputinput object was added -
SubscriptionBillingPolicyobject was added -
SubscriptionContractCreateInputinput object was added -
SubscriptionContractobject was added -
SubscriptionStatusenum was added -
SubscriptionCyclePriceAdjustmentobject was added -
SubscriptionDeliveryMethodInputinput object was added -
SubscriptionDeliveryMethodShippingInputinput object was added -
SubscriptionDeliveryMethodShippingOptionInputinput object was added -
SubscriptionDeliveryMethodShippingOptionobject was added -
SubscriptionDeliveryMethodShippingobject was added -
SubscriptionDeliveryPolicyInputinput object was added -
SubscriptionDeliveryPolicyobject was added -
SubscriptionDiscountAllocationobject was added -
SubscriptionDiscountEntitledLinesobject was added -
SubscriptionDiscountFixedAmountValueobject was added -
SubscriptionDiscountPercentageValueobject was added -
SubscriptionDiscountRejectionReasonenum was added -
SubscriptionDiscountValueunion type was added -
SubscriptionDiscountunion type was added -
SubscriptionDraftInputinput object was added -
SubscriptionDraftobject was added -
SubscriptionFreeShippingDiscountInputinput object was added -
SubscriptionLineInputinput object was added -
SubscriptionLineUpdateInputinput object was added -
SubscriptionLineobject was added -
SubscriptionMailingAddressobject was added -
SubscriptionManualDiscountEntitledLinesInputinput object was added -
SubscriptionManualDiscountFixedAmountInputinput object was added -
SubscriptionManualDiscountInputinput object was added -
SubscriptionManualDiscountLinesInputinput object was added -
SubscriptionManualDiscountValueInputinput object was added -
SubscriptionManualDiscountobject was added -
SubscriptionPricingPolicyobject was added -
SubscriptionShippingOptionobject was added -
SubscriptionShippingOptionResultunion type was addedNew fields
-
appliesOnOneTimePurchasewas added to objectDiscountCodeFreeShipping -
appliesOnOneTimePurchasewas added to input objectDiscountCodeFreeShippingInput -
appliesOnOneTimePurchasewas added to input objectDiscountCustomerGetsInput -
appliesOnOneTimePurchasewas added to objectDiscountCustomerGets -
appliesOnSubscriptionwas added to input objectDiscountCodeFreeShippingInput -
appliesOnSubscriptionwas added to objectDiscountCodeFreeShipping -
appliesOnSubscriptionwas added to input objectDiscountCustomerGetsInput -
appliesOnSubscriptionwas added to objectDiscountCustomerGets -
contractwas added to objectLineItem -
customerPaymentMethodwas added to objectQueryRoot -
customerPaymentMethodwas added to objectOrderPaymentCollectionDetails -
eligibleForSubscriptionMigrationwas added to objectShopFeatures -
eligibleForSubscriptionswas added to objectShopFeatures -
legacySubscriptionGatewayEnabledwas added to objectShopFeatures -
messagewas added to union typeSubscriptionShippingOptionResult -
paymentMethodswas added to objectCustomer -
productSubscriberStatuswas added to objectCustomer -
recurringCycleLimitwas added to input objectDiscountCodeBasicInput -
recurringCycleLimitwas added to objectDiscountCodeBasic -
recurringCycleLimitwas added to input objectDiscountCodeFreeShippingInput -
recurringCycleLimitwas added to objectDiscountCodeFreeShipping -
requiresSellingPlanwas added to input objectProductInput -
requiresSellingPlanwas added to objectProduct -
sellingPlanwas added to objectLineItem -
sellingPlanGroupsToAssociatewas added to input objectProfileInput -
sellingPlanGroupsToDissociatewas added to input objectProfileInput -
sellingPlanGroupCountwas added to objectProductVariant -
sellingPlanGroupwas added to objectQueryRoot -
shippingOptionswas added to objectSubscriptionDraft -
subscriptionContractwas added to objectQueryRoot -
subscriptionDraftwas added to objectQueryRootNew connection
-
sellingPlanGroupswas added to objectProfile -
sellingPlanGroupswas added to objectQueryRoot -
subscriptionContractswas added to objectCustomerPaymentMethod -
subscriptionContractswas added to objectCustomer -
subscriptionContractswas added to objectQueryRootNew error codes
-
BillingAttemptUserErrorwas added -
CustomerPaymentMethodUserErrorwas added -
APPLIES_ON_NOTHINGwas added toPriceRuleErrorCode -
MULTIPLE_RECURRING_CYCLE_LIMIT_FOR_NON_SUBSCRIPTION_ITEMSwas added toPriceRuleErrorCode -
SellingPlanGroupUserErrorwas added -
SellingPlanUserErrorwas added -
SubscriptionContractUserErrorwas added -
SubscriptionDraftUserErrorwas added
Anchor to Managing prepaid subscription orders,[object Object]Managing prepaid subscription orders
As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.
-
To learn how to manage orders for prepaid subscriptions, refer to Manage orders for prepaid subscriptions.
-
For information on managing fulfillments for prepaid subscriptions, refer to Create and manage fulfillments for prepaid subscriptions.
-
If you need to manage advanced fulfillment scenarios for subscriptions, then refer to Handling advanced scenarios for subscription-based fulfillment orders.
New mutations
-
FulfillmentOrderOpenwas added -
FulfillmentOrderReschedulewas addedNew and updated types
-
mark_as_openvalue was added to enumFulfillmentOrderAction -
scheduledvalue was added to enumFulfillmentStatus -
scheduledvalue was added to enumFulfillmentOrderStatus -
scheduledvalue was added to enumOrderDisplayFulfillmentStatusNew field
-
fulfillAtwas added to objectFulfillmentOrder
You can now subscribe to subscription contracts, billing attempts, and customer payment methods event webhooks.
For detailed information about required scopes and payloads, refer to Subscription-related webhooks.
New topics
SUBSCRIPTION_CONTRACTS/CREATEvalue was added to enumWebhookSubscriptionTopicSUBSCRIPTION_CONTRACTS/UPDATEvalue was added to enumWebhookSubscriptionTopicSUBSCRIPTION_BILLING_ATTEMPTS/SUCCESSvalue was added to enumWebhookSubscriptionTopicSUBSCRIPTION_BILLING_ATTEMPTS/FAILUREvalue was added to enumWebhookSubscriptionTopicCUSTOMER_PAYMENT_METHODS/CREATEvalue was added to enumWebhookSubscriptionTopicCUSTOMER_PAYMENT_METHODS/UPDATEvalue was added to enumWebhookSubscriptionTopicCUSTOMER_PAYMENT_METHODS/REVOKEvalue was added to enumWebhookSubscriptionTopic
As of API version 2021-01, you can query the GraphQL Admin API to access information about extended authorization periods.
Extended authorization periods are available only to stores on the Shopify Plus plan that use Shopify Payments. To learn more about extended authorization periods, refer to Payment authorization.
New types
-
ShopifyPaymentsExtendedAuthorizationobject was added -
ShopifyPaymentsTransactionSetobject was addedNew fields
-
authorizationExpiresAtfield was added to objectOrderTransaction -
shopifyPaymentsSetfield was added to objectOrderTransaction -
standardAuthorizationExpiresAtfield was added to objectShopifyPaymentsExtendedAuthorization -
extendedAuthorizationExpiresAtfield was added to objectShopifyPaymentsExtendedAuthorization -
extendedAuthorizationSetfield was added to objectShopifyPaymentsTransactionSetNew value
-
EXPIREDvalue was added to enumOrderDisplayFinancialStatus
Anchor to Transaction fees,[object Object]Transaction fees
As of API version 2021-01, you can query the GraphQL Admin API to access the details of transaction fees charged on Shopify Payments transactions.
For example, you can now reconcile transaction fee amounts with external accounting systems. You can also better understand the following:
-
How fees are calculated and subtracted from payouts
-
How a particular transaction fee rate is used
-
How transaction fees were charged in a historical context
New type
-
TransactionFeeobject was addedNew fields
-
feesfield was added to objectOrderTransaction -
settlementCurrencyfield was added to objectOrderTransaction -
settlementCurrencyRatefield was added to objectOrderTransaction
Anchor to APIs for payments provider apps ,[object Object]APIs for payments provider apps
As of the 2021-01 API version, you can query the GraphQL Admin API for details about a payment processing session and the configuration of a payments provider app.
New types
-
PaymentSessionobject was added -
PaymentsAppConfigurationobject was addedNew mutations
-
paymentSessionRejectwas added -
paymentSessionResolvewas added -
paymentsAppConfigurewas added
Anchor to Fulfillments picked up by customers ,[object Object]Fulfillments picked up by customers
As of API version 2021-01, you can query the GraphQL Admin API to determine which fulfillments have been picked up by customers.
New types
PICKED_UPvalue was added to enumFulfillmentDisplayStatus
Anchor to Tips on orders ,[object Object]Tips on orders
As of API version 2021-01, you can query the GraphQL Admin API to determine the total tip received for an order in shop and presentment currencies.
New field
totalTipReceivedSetfield was added to objectOrder
Anchor to Image dimensions ,[object Object]Image dimensions
As of API version 2021-01, you can query the GraphQL Admin API to determine the width and height (in pixels) of images hosted by Shopify.
New fields
widthfield was added to objectImageheightfield was added to objectImage
Anchor to Localization extensions,[object Object]Localization extensions
As of API version 2021-01, you can add localization extensions when you create a new order.
New fields
-
localizationExtensionsfield was added to objectDraftOrderInput -
localizationExtensionsfield was added to objectOrderInput -
keyfield was added to objectLocalizationExtensionNew connection
-
localizationExtensionsconnection was added to objectDraftOrderNew types
-
HasLocalizationExtensionsForDraftOrderswas added -
LocalizationExtensionInputinput object was added -
LocalizationExtensionKeyenum was added
Anchor to Translated Country and Province names,[object Object]Translated Country and Province names
As of API version 2021-01, you can query the translated names of DeliveryCountry and DeliveryProvince. The translated name is based on the user locale.
New fields
translatedNamefield was added to objectDeliveryCountrytranslatedNamefield was added to objectDeliveryProvince
Anchor to GraphQL Storefront API changesGraph QL Storefront API changes
Below are all the changes currently introduced in the 2021-01 version of the GraphQL Storefront API.
Anchor to Managing prepaid subscription orders ,[object Object]Managing prepaid subscription orders
As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.
Updated type
scheduledvalue was added to enumOrderFulfillmentStatus
Anchor to Image dimensions ,[object Object]Image dimensions
As of API version 2021-01, you can query the Storefront API to determine the width and height (in pixels) of images hosted by Shopify.
New fields
widthfield was added to objectImageheightfield was added to objectImage
Anchor to Sort order for product media ,[object Object]Sort order for product media
As of API version 2021-01, you can sort product media by a given key. The default sort order is by POSITION. In previous API versions, product media was sorted by the CREATED_AT value by default.
New argument
sortKeywas added to connectionmediain objectProduct
Anchor to REST Admin API changesREST Admin API changes
Below are all the changes currently introduced in the 2021-01 version of the REST Admin API.
Anchor to Cursor-based paginationCursor-based pagination
Anchor to BreakingBreaking
As of API version 2021-01, the /admin/api/{version}/users.json endpoint supports cursor-based pagination.
Use the /admin/api/{version}/users.json endpoint to request paginated user data from the REST Admin API and access each page of results.
Updated endpoint
admin/api/{version}/users.jsonwas updated to support cursor-based pagination
Anchor to Managing prepaid subscription ordersManaging prepaid subscription orders
Anchor to BreakingBreaking
As of API version 2021-01, we've added support for managing prepaid subscription orders. You can now create an order with multiple billing or payment schedules along with multiple fulfillment orders.
New endpoints
-
/admin/api/2021-01/fulfillment_orders/{fulfillment_order_id}/open.json: Marks a fulfillment order as open. -
/admin/api/2021-01/fulfillment_orders/{fulfillment_order_id}/reschedule.json: Reschedules the fulfill_at time of a scheduled fulfillment order.New and updated fields
-
fulfill_atfield was added to resourceFulfillmentOrder -
scheduled value was added to
statusfield in resourceFulfillmentOrder- Valid values for
status: open, in_progress, scheduled, cancelled, incomplete, closed
- Valid values for
Anchor to Auto-activate billing chargesAuto-activate billing charges
Anchor to BreakingBreaking
To simplify and streamline billing for your apps, we've removed the accepted value for the status field and the activate endpoint on the ApplicationCharge and RecurringApplicationCharge resources.
As of API version 2021-01, when a merchant accepts a charge, the charge immediately transitions from pending to active. This means that you no longer need to activate the charge to finalize it.
To learn more about creating and issuing charges, refer to Charging for your app with the REST Admin API.
Removed values
-
acceptedvalue was removed fromstatusfield in resourceApplicationCharge -
acceptedvalue was removed fromstatusfield in resourceRecurringApplicationChargeRemoved endpoints
-
POST /admin/api/2021-01/application_charges/{application_charge_id}/activate.jsonendpoint was removed from resourceApplicationCharge -
POST /admin/api/2021-01/recurring_application_charges/{recurring_application_charge_id}/activate.jsonendpoint was removed from resourceRecurringApplicationCharge
As of API version 2021-01, you can query the Transaction resource to access information about extended authorization periods.
Extended authorization periods are available only to stores on the Shopify Plus plan that use Shopify Payments. To learn more about extended authorization periods, refer to Payment authorization.
New fields
authorization_expires_atfield was added to resourceTransactionextended_authorization_attributesfield was added to resourceTransaction
Anchor to Script tag caching ,[object Object]Script tag caching
As of API version 2021-01, you can query the ScriptTag resource to determine whether the Shopify CDN (content delivery network) can cache and serve a script tag.
New field
cachefield was added to resourceScriptTag
Anchor to New endpoint for tracking deprecated API calls ,[object Object]New endpoint for tracking deprecated API calls
As of API version 2021-01, you can use the Deprecated API calls endpoint to get a list of all the deprecated calls your private apps have made in the past 30 days, information on migration steps, and the deadline to update these calls in your apps.
New endpoint
/admin/api/2021-01/deprecated_api_calls.json: Retrieves a list of deprecated API calls.
You can now subscribe to subscription contracts, billing attempts, and customer payment methods event webhooks.
For detailed information about required scopes and payloads, refer to Subscription-related webhooks.
New topics
subscription_contracts/createtopic was added to webhook resourcesubscription_contracts/updatetopic was added to webhook resourcesubscription_billing_attempts/failuretopic was added to webhook resourcesubscription_billing_attempts/successtopic was added to webhook resourcecustomer_payment_methods/createtopic was added to webhook resourcecustomer_payment_methods/revoketopic was added to webhook resourcecustomer_payment_methods/updatetopic was added to webhook resource