> Note: > We're no longer publishing API release notes. Instead, you can find the latest updates on Shopify APIs in our [developer changelog](https://shopify.dev/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. <table> <tr> <th>Release date</th> <th>Date version is no longer supported</th> </tr> <tr> <td>July 1, 2021</td> <td>July 1, 2022</td> </tr> </table> The 2021-07 release includes the Bulk Mutations API, a new API that provides improvements to pushing large amounts of data into Shopify. Also released as a part of 2021-07: Product Variant Bulk APIs, the Files API, expanded support for metafields on the Storefront API, and improvements to international pricing. The 2021-07 release includes many of the features announced at Shopify Unite this year. For more information, refer to the [All of the Announcements From Shopify Unite 2021](https://www.shopify.com/partners/blog/shopify-unite-announcements-2021?itcat=partner_blog&itterm=shopify_api_release_july_2021) blog post. **What’s new in 2021-07** The following features were added in version 2021-07 of Shopify's APIs: - We've made updates to [metafields](/docs/storefronts/headless/building-with-the-storefront-api/products-collections/metafields) that improve their utility for apps and merchants. Metafield storefront visibility is now supported on articles, blogs, collections, customers, orders, pages, and the shop resource. - The [Bulk Mutation APIs](/docs/api/usage/bulk-operations/imports) remove the need to manage your client-side throttle, and allow apps to asynchronously run mutations to import large amounts of data into Shopify stores. - The [Product Variant Bulk APIs](/docs/api/admin-graphql/latest/objects/productvariant) include four new mutations that allow clients to explicitly specify variant behavior when they push data into Shopify, rather than the error-prone implicit model. - The Files APIs [`stagedUploadCreate`](/docs/api/admin-graphql/latest/mutations/stageduploadscreate) mutation, which previously only supported staging product media, now allows you to stage other types of files for upload. These staged files can now also be included as a part of a [fileCreate](/docs/api/admin-graphql/latest/mutations/FileCreate) mutation, which uploads the files to Shopify and adds them to the Files page in the Shopify admin. - You can now use the Storefront API to query international prices for products and orders, and explicitly set the checkout context. This feature works in conjunction with `priceLists`, and allows you to surface international pricing in a contextually relevant way to buyers. ## Breaking 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. ### Deprecated connection on Shop object As of API version 2021-07, the `uploadedImages` connection on the [GraphQL Admin Shop object type](/docs/api/admin-graphql/latest/objects/shop) has been deprecated. The connection previously represented all images that were uploaded to a shop. You can use the `uploadedImagesbyIds` field instead to retrieve a list of images by ID that have been uploaded to the shop. ### Deprecated field on Shop resource As of API version 2021-07, the `force_ssl` field on the [REST Shop resource](/docs/api/admin-rest/latest/resources/shop) has been removed. Previously, this field had indicated whether requests made to the REST Shop resource connected over SSL using HTTPS. All requests now use HTTPS, so `force_ssl` is always `true`. ### Deprecated field on Metafield object As of API version 2021-07, the `value_type` field on the [Metafield](/docs/api/admin-graphql/latest/objects/metafield) object was deprecated. You should use the `type` field instead of the `value_type` field to access or set the type of a `Metafield` object. For more information about this transition, refer to [this changelog entry](https://shopify.dev/changelog/online-store-2-0-new-metafields-type-system-and-dynamic-sources). ### Deprecated property on Metafield resource As of API version 2021-07, the `value_type` property on the [Metafield](/docs/api/admin-rest/latest/resources/metafield) resource was deprecated. You should use the `type` property instead of the `value_type` property to access or set the type of a `Metafield` resource. For more information about this transition, refer to [this changelog entry](https://shopify.dev/changelog/online-store-2-0-new-metafields-type-system-and-dynamic-sources). ### Explicit user permissions In previous API versions, the `permissions` property in the [REST User resource](/docs/api/admin-rest/latest/resources/user) returned either `full` or a specific list of permissions. The `full` permission represents that the user has the same permissions as the [store owner](https://help.shopify.com/en/manual/your-account/staff-accounts/staff-permissions#store-owner-permissions), with some exceptions, such as modifying the account billing or deleting staff accounts. As of API version 2021-07, the complete list of explicit permissions that a user with the `full` permission has access to is returned in the `permissions` property. ### Empty selling plan groups Prior to API version 2021-07, a selling plan group could exist without any selling plans. Apps could create a selling plan group with selling plans, and subsequently delete all selling plans in the group. This was problematic because empty selling plan groups could result in undesirable behavior on the product page and a broken cart experience. As of API version 2021-07, we've added a validation to the [`sellingPlanGroupUpdate`](/docs/api/admin-graphql/latest/mutations/sellingplangroupupdate) mutation that prevents the presence of empty selling plan groups. ### Pricing policies for selling plans Apps update the pricing policies associated with a selling plan using the [`sellingPlanGroupUpdate`](/docs/api/admin-graphql/latest/mutations/sellingplangroupupdate) mutation. Prior to API version 2021-07, two key behaviors existed: - Apps could apply partial updates to a pricing policy by supplying only the updated pricing policy in the mutation's input. For example, if you had a selling plan with an existing fixed pricing policy, and you wanted to add a recurring pricing policy, then you could supply only the recurring pricing policy as the input to the `sellingPlanGroupUpdate` mutation. - There wasn't a clear way to delete a pricing policy associated with a selling plan. As of API version 2021-07, apps must explicitly provide the end state of all pricing policies in the `sellingPlanGroupUpdate` mutation's input. For example, if you have a selling plan with an existing fixed pricing policy, and you want to add a recurring pricing policy, then you need to supply both the existing and new pricing policy in the mutation's input. To delete all pricing policies from a selling plan, you need to supply an empty array of pricing policies (`pricingPolicies: []`) in the `sellingPlanGroupUpdate` mutation's input. ## GraphQL Admin API changes Below are all the changes currently introduced in the 2021-07 version of the GraphQL Admin API. <div class="accordion-container"> <div class="accordion-controls"> <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button> </div> <div class="accordion-content-container"> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Deprecated connection on Shop object type <span id="deprecated-connection" class="heading-flag breaking"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the <code class="text-highlight text-highlight--grey">uploadedImages</code> connection on the <a href="/docs/api/admin-graphql/latest/objects/shop">GraphQL Admin Shop object type</a> has been deprecated. The connection previously represented all images that were uploaded to a shop.</p> <p>You can use the <code class="text-highlight text-highlight--grey">uploadedImagesbyIds</code> field instead to retrieve a list of images by ID that have been uploaded to the shop.</p> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Empty selling plan groups <span id="selling-plans" class="heading-flag breaking"></span></h3> </div> <div class="accordion-content"> <p>Prior to API version 2021-07, a selling plan group could exist without any selling plans. Apps could create a selling plan group with selling plans, and subsequently delete all selling plans in the group. This was problematic because empty selling plan groups could result in undesirable behavior on the product page and a broken cart experience.</p> <p>As of API version 2021-07, we've added a validation to the <a href="/docs/api/admin-graphql/latest/mutations/sellingplangroupupdate"><code class="text-highlight text-highlight--grey">sellingPlanGroupUpdate</code></a> mutation that prevents the presence of empty selling plan groups.</p> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Pricing policies for selling plans <span id="pricing-policies" class="heading-flag breaking"></span></h3> </div> <div class="accordion-content"> <p>Apps update the pricing policies associated with a selling plan using the <a href="/docs/api/admin-graphql/latest/mutations/sellingplangroupupdate"><code class="text-highlight text-highlight--grey">sellingPlanGroupUpdate</code></a> mutation. Prior to API version 2021-07, two key behaviors existed:</p> <ul> <li>Apps could apply partial updates to a pricing policy by supplying only the updated pricing policy in the mutation's input. For example, if you had a selling plan with an existing fixed pricing policy, and you wanted to add a recurring pricing policy, then you could supply only the recurring pricing policy as the input to the <code class="text-highlight text-highlight--grey">sellingPlanGroupUpdate</code> mutation.</li> <li>There wasn't a clear way to delete a pricing policy associated with a selling plan.</li> </ul> <p>As of API version 2021-07, apps must explicitly provide the end state of all pricing policies in the <code class="text-highlight text-highlight--grey">sellingPlanGroupUpdate</code> mutation's input. For example, if you have a selling plan with an existing fixed pricing policy, and you want to add a recurring pricing policy, then you need to supply both the existing and new pricing policy in the mutation's input.</p> <p>To delete all pricing policies from a selling plan, you need to supply an empty array of pricing policies (<code class="text-highlight text-highlight--grey">pricingPolicies: []</code>) in the <code class="text-highlight text-highlight--grey">sellingPlanGroupUpdate</code> mutation's input.</p> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Deprecated field on Metafield object <span id="deprecated-field-on-metafield-object"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the <code class="text-highlight text-highlight--grey">value_type</code> field on the <a href="/docs/api/admin-graphql/latest/objects/metafield">Metafield</a> object has been deprecated.</p> <p>You should use the <code class="text-highlight text-highlight--grey">type</code> field instead of the <code class="text-highlight text-highlight--grey">value_type</code> field to access or set the type of a <a href="/docs/apps/build/custom-data/metafields/list-of-data-types">Metafield</a> object. For more information about this transition, refer to <a href="https://shopify.dev/changelog/online-store-2-0-new-metafields-type-system-and-dynamic-sources">this changelog entry</a>.</p> <p>You can set the <code class="text-highlight text-highlight--grey">type</code> field of the <code class="text-highlight text-highlight--grey">Metafield</code> object using any of the new values introduced below.</p> <p><strong>New fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">type</code> field was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> </ul> <p><strong>New values</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">single_line_text_field</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">multi_line_text_field</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">page_reference</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">product_reference</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">variant_reference</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">file_reference</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">number_integer</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">number_decimal</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">date</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">date_time</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">url</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">json</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">boolean</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">color</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">weight</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">volume</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">dimension</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">url</code> value was added to object <code class="text-highlight text-highlight--grey">Metafield</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Duties and international taxes <span id="international-duties-and-taxes"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-graphql">GraphQL Admin API</a> to query whether the duties and international taxes associated with an order were charged at checkout.</p> <p><strong>New fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">international_duties</code> field was added to object <code class="text-highlight text-highlight--grey">FulfillmentOrder</code></li> </ul> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FulfillmentOrderInternationalDuties</code> object was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Estimated taxes on orders <span id="estimated-taxes-on-orders"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <code class="text-highlight text-highlight--grey">estimatedTaxes</code> field on the <a href="/docs/api/admin-graphql/latest/objects/order">Order object</a> to determine whether taxes on an order are estimated.</p> <p>The field returns <code class="text-highlight text-highlight--grey">false</code> when taxes on an order are finalized and aren't subject to any changes.</p> <p><strong>New field</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">estimatedTaxes</code> field was added to <code class="text-highlight text-highlight--grey">Order</code> object</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Configure payment gateways to work with subscriptions <span id="configure-payment-gateways"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-graphql/latest/mutations/customerpaymentmethodremotecreditcardcreate">customerPaymentMethodRemoteCreate</a> mutation to associate a Shopify customer ID with an Authorize.net customer profile ID and payment method ID.</p> <p>For more information on configuring payment gateways to work with subscriptions, refer to <a href="/docs/apps/build/purchase-options/subscriptions/migrate-to-subscriptions-api/migrate-subscription-contracts">Migrating existing subscription contracts to Shopify</a>.</p> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">customerPaymentMethodRemoteCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">CustomerPaymentMethodRemoteUserError</code> was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Manage images and generic files <span id="manage-images-and-generic-files"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-graphql/latest/interfaces/file">GraphQL Admin API</a> to create, update, and delete generic files and images using the Files API. This functionality allows merchants to reuse files for different apps.</p> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FileCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">FileDelete</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">FileUpdate</code> mutation was added</li> </ul> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FileError</code> object was added</li> <li><code class="text-highlight text-highlight--grey">GenericFile</code> object was added</li> <li><code class="text-highlight text-highlight--grey">FileCreateInput</code> input object was added</li> <li><code class="text-highlight text-highlight--grey">FileUpdateInput</code> input object was added</li> <li><code class="text-highlight text-highlight--grey">File</code> interface was added</li> <li><code class="text-highlight text-highlight--grey">FileContentType</code> enum was added</li> <li><code class="text-highlight text-highlight--grey">FileErrorCode</code> enum was added</li> <li><code class="text-highlight text-highlight--grey">file_storage_limit_exceeded</code> error code was added to enum <code class="text-highlight text-highlight--grey">MediaErrorCode</code></li> <li><code class="text-highlight text-highlight--grey">generic_file_download_failure</code> error code was added to enum <code class="text-highlight text-highlight--grey">MediaErrorCode</code></li> <li><code class="text-highlight text-highlight--grey">generic_file_invalid_size</code> error code was added to enum <code class="text-highlight text-highlight--grey">MediaErrorCode</code></li> <li><code class="text-highlight text-highlight--grey">invalid_image_aspect_ratio</code> error code was added to enum <code class="text-highlight text-highlight--grey">MediaErrorCode</code></li> <li><code class="text-highlight text-highlight--grey">invalid_image_resolution</code> error code was added to enum <code class="text-highlight text-highlight--grey">MediaErrorCode</code></li> </ul> <p><strong>New errors</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FilesUserError</code> error was added</li> </ul> <p><strong>New fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FileStatus</code> field was added to <code class="text-highlight text-highlight--grey">Media</code> interface</li> </ul> <p><strong>New connections</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">file_saved_searches</code> connection added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> <li><code class="text-highlight text-highlight--grey">files</code> connection added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> </ul> <p><strong>New values</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">FILE</code> value was added to enum <code class="text-highlight text-highlight--grey">UploadResource</code></li> <li><code class="text-highlight text-highlight--grey">File</code> value was added to enum <code class="text-highlight text-highlight--grey">SearchResultType</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Bulk import data asynchronously <span id="bulk-import-data-asychronously"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-graphql/latest/mutations/bulkoperationrunmutation">GraphQL Admin API</a> to bulk import large volumes of data asychronously. By running a bulk mutation operation, you can avoid manually running a GraphQL mutation multiple times and managing a client-side throttle.</p> <p>To learn more about bulk importing data asynchronously, refer to <a href="/docs/api/usage/bulk-operations/imports">Bulk import data with the GraphQL Admin API</a>.</p> <p><strong>New mutation</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">bulkOperationRunMutation</code> mutation was added</li> </ul> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">BulkOperationType</code> enum was added</li> <li><code class="text-highlight text-highlight--grey">BulkMutationUserError</code> type was added</li> <li><code class="text-highlight text-highlight--grey">currentBulkOperation</code> connection was added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> <li><code class="text-highlight text-highlight--grey">BULK_MUTATION_VARIABLES</code> value was added to enum <code class="text-highlight text-highlight--grey">StagedUploadTargetGenerateUploadResource</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Product variants <span id="product-variants"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can create, update, and delete multiple product variants at once using 3 new product variant mutations.</p> <p>Previously, multiple product variants could be managed at once only through the <code class="text-highlight text-highlight--grey">productCreate</code> and <code class="text-highlight text-highlight--grey">productUpdate</code> mutations, which required additional input to avoid overwriting existing variants.</p> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">productVariantsBulkCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">productVariantsBulkUpdate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">productVariantsBulkDelete</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">productVariantsBulkReorder</code> mutation was added</li> </ul> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">ProductVariantsBulkInput</code> input object was added</li> <li><code class="text-highlight text-highlight--grey">ProductVariantsBulkCreateUserError</code> was added</li> <li><code class="text-highlight text-highlight--grey">ProductVariantsBulkUpdateUserError</code> was added</li> <li><code class="text-highlight text-highlight--grey">ProductVariantsBulkDeleteUserError</code> was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Manage webhooks with Google Cloud Pub/Sub <span id="managing-webhooks-with-google-cloud-pubsub"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the GraphQL Admin API and Google Cloud Pub/Sub to manage webhook subscriptions.</p> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">pubSubWebhookSubscriptionCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">pubSubWebhookSubscriptionUpdate</code> mutation was added</li> </ul> <p><strong>New input</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">pubSubWebhookSubscriptionInput</code> was added</li> </ul> <p><strong>New type</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">WebhookPubSubEndpoint</code> object was added</li> <li><code class="text-highlight text-highlight--grey">PubSubWebhookSubscriptionInput</code> was added</li> <li><code class="text-highlight text-highlight--grey">PubSubWebhookSubscriptionCreatePayload</code> was added</li> <li><code class="text-highlight text-highlight--grey">PubSubWebhookSubscriptionUpdatePayload</code> was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Manage URL redirects on an online store <span id="manage-redirects"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-graphql/latest/objects/urlredirect">GraphQL Admin API</a> to manage redirects on an online store.</p> <p>URL redirects can be used to redirect traffic from one web page to another. For example, if you delete a product, then you can set up a URL redirect so that when customers enter the URL for that product, they are redirected to a similar product on an online store.</p> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">UrlRedirectBulkDeleteAll</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectBulkDeleteByIds</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectBulkDeleteBySavedSearch</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectBulkDeleteBySearch</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectDelete</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectImportCreate</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectImportSubmit</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectUpdate</code> mutation was added</li> </ul> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">UrlRedirect</code> object was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectImport</code> object was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectImportPreview</code> object was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectInput</code> input object was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectImportUserError</code> type was added</li> <li><code class="text-highlight text-highlight--grey">UrlRedirectUserError</code> type was added</li> </ul> <p><strong>New fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">urlRedirect</code> field was added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> <li><code class="text-highlight text-highlight--grey">urlRedirectSavedSearches</code> field was added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> <li><code class="text-highlight text-highlight--grey">urlRedirectImport</code> field was added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> </ul> <p><strong>New connections</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">urlRedirects</code> connection was added to object <code class="text-highlight text-highlight--grey">QueryRoot</code></li> </ul> <p><strong>New values</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">urlRedirects</code> value was added to enum <code class="text-highlight text-highlight--grey">ResourceType</code></li> <li><code class="text-highlight text-highlight--grey">urlRedirects</code> value was added to enum <code class="text-highlight text-highlight--grey">ResourceExportableType</code></li> <li><code class="text-highlight text-highlight--grey">urlRedirect</code> value was added to enum <code class="text-highlight text-highlight--grey">SearchResultType</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>New code for unrecognized currencies <span id="new-unrecognized-currency-code-admin"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the GraphQL Admin API returns <code class="text-highlight text-highlight--grey">XXX</code> in response to an unrecognized currency code. <code class="text-highlight text-highlight--grey">XXX</code> is the ISO code used to denote transactions that involve no currency.</p> <p>In mutations, a <code class="text-highlight text-highlight--grey">CurrencyCode</code> input value of <code class="text-highlight text-highlight--grey">XXX</code> is invalid. <code class="text-highlight text-highlight--grey">XXX</code> can only be returned as a result and not as an input value.</p> <p>This change prevents order pages from breaking if payments include a currency code that's not in the list of <a href="/docs/api/admin-graphql/latest/enums/currencycode">valid values for the <code class="text-highlight text-highlight--grey">CurrencyCode</code> object</a>.</p> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Expose writable tax line attributes <span id="writable-tax-line-attributes"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <code class="text-highlight text-highlight--grey">channelLiable</code> field on the <a href="/docs/api/admin-graphql/latest/objects/taxline">TaxLine</a> object to determine whether the channel that submitted the tax line is liable for remitting.</p> <p>A value of <code class="text-highlight text-highlight--grey">null</code> indicates unknown liability for the tax line.</p> <p><strong>New field</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">channelLiable</code> field was added to the <code class="text-highlight text-highlight--grey">TaxLine</code> object</li> </ul> </div> </div> </div> </div> ## GraphQL Storefront API changes Below are all the changes currently introduced in the 2021-07 version of the GraphQL Storefront API. <div class="accordion-container"> <div class="accordion-controls"> <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button> </div> <div class="accordion-content-container"> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Local pickup <span id="local-pickup"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can display whether a product is in stock and available for local pickup using the <a href="/docs/api/storefront">Storefront API</a>. Customers can then pick up their online orders at a retail store, curbside, or any location that a merchant chooses.</p> <p>For more information, refer to <a href="/docs/storefronts/headless/building-with-the-storefront-api/products-collections/local-pickup">Support local pickup on storefronts</a>.</p> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">Location</code> object was added</li> <li><code class="text-highlight text-highlight--grey">StoreAvailability</code> object was added</li> <li><code class="text-highlight text-highlight--grey">locations</code> connection was added to <code class="text-highlight text-highlight--grey">QueryRoot</code></li> <li><code class="text-highlight text-highlight--grey">preferredLocationId</code> argument was added to <code class="text-highlight text-highlight--grey">InContext</code> directive</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Subscription products <span id="subscription-products"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/storefront">Storefront API</a> to retrieve subscription products on a storefront. Subscription products can be accessed from the <code class="text-highlight text-highlight--grey">sellingPlans</code> object.</p> <p>To learn how to retrieve information about selling plans, including price adjustments and selling plan allocations, and creating a cart with a subscription line item, refer to <a href="/docs/storefronts/headless/building-with-the-storefront-api/products-collections/subscriptions">Manage subscription products on storefronts</a>.</p> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">SellingPlanAllocation</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanPriceAdjustment</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanAllocationPriceAdjustment</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanFixedAmountPriceAdjustment</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanPercentagePriceAdjustment</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanGroupOption</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlanGroup</code> object was added</li> <li><code class="text-highlight text-highlight--grey">SellingPlan</code> object was added</li> <li><code class="text-highlight text-highlight--grey">sellingPlanAllocations</code> connection was added to <code class="text-highlight text-highlight--grey">ProductVariant</code> object</li> <li><code class="text-highlight text-highlight--grey">requiresSellingPlan</code> field was added to <code class="text-highlight text-highlight--grey">Product</code> object</li> <li><code class="text-highlight text-highlight--grey">SellingPlanPriceAdjustmentValue</code> union was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Checkout queue tokens <span id="checkout-queue-tokens"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the Storefront API can be used for checkouts during a flash sale.</p> <p>The <a href="/docs/api/storefront/reference/checkouts/checkoutcreate">checkoutCreate</a> mutation now accepts an optional <code class="text-highlight text-highlight--grey">queueToken</code> argument, which allows apps to bypass the checkout throttle after they have completed polling.</p> <p>Previously, when a checkout queue was in use, apps calling the <code class="text-highlight text-highlight--grey">checkoutCreate</code> mutation received a <code class="text-highlight text-highlight--grey">Throttled</code> response. There was no way for apps to bypass the queue, and the only option was to wait for the queue to disengage before retrying the request again.</p> <p>The queue now engages as soon as the rate per second threshold is crossed.</p> <aside class="note"> <h4>Note</h4> <p> The <code class="text-highlight text-highlight--grey">queueToken</code> argument is available only to selected stores.</p> </aside> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">queueToken</code> argument was added to <code class="text-highlight text-highlight--grey">CheckoutCreate</code> mutation</li> <li><code class="text-highlight text-highlight--grey">queueToken</code> return field was added to <code class="text-highlight text-highlight--grey">CheckoutCreate</code> mutation</li> <li><code class="text-highlight text-highlight--grey">THROTTLED_DURING_CHECKOUT</code> error was added to <code class="text-highlight text-highlight--grey">CheckoutUserError</code></li> <li><code class="text-highlight text-highlight--grey">EXPIRED_QUEUE_TOKEN</code> error was added to <code class="text-highlight text-highlight--grey">CheckoutUserError</code></li> <li><code class="text-highlight text-highlight--grey">INVALID_QUEUE_TOKEN</code> error was added to <code class="text-highlight text-highlight--grey">CheckoutUserError</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Query available countries and currencies <span id="available-countries-currencies"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the Storefront API to retrieve a list of <a href="/docs/api/storefront/reference/common-objects/localization">available countries and corresponding currencies</a> for a store.</p> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">Localization</code> object was added</li> <li><code class="text-highlight text-highlight--grey">Country</code> object was added</li> <li><code class="text-highlight text-highlight--grey">Currency</code> object was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Support international pricing on storefronts <span id="support-international-pricing-on-storefronts"></span></h3> </div> <div class="accordion-content"> <p>The prices that display in a storefront can vary based on the customer's location. As of API version 2021-07, you can use the Storefront API to <a href="/docs/storefronts/headless/building-with-the-storefront-api/markets/international-pricing">query international prices</a> for products and orders, and explicitly set the context of a checkout.</p> <p>International pricing is determined based on the customer's shipping address and is enforced at checkout.</p> <aside class="note"> <h4>Note</h4> <p> International pricing replaces the deprecated presentment currencies functionality.</p> </aside> <p><strong>New types</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">inContext</code> directive was added</li> <li><code class="text-highlight text-highlight--grey">CheckoutBuyerIdentity</code> object was added</li> <li><code class="text-highlight text-highlight--grey">CheckoutBuyerIdentityInput</code> input object was added</li> <li><code class="text-highlight text-highlight--grey">INVALID_COUNTRY_AND_CURRENCY</code> error code was added to <code class="text-highlight text-highlight--grey">CheckoutUserError</code></li> </ul> <p><strong>New fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">buyerIdentity</code> field was added to <code class="text-highlight text-highlight--grey">Checkout</code> object</li> <li><code class="text-highlight text-highlight--grey">buyerIdentity</code> input argument was added to <code class="text-highlight text-highlight--grey">checkoutCreate</code> mutation</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Support for metafields on more resources <span id="metafields-more-resources"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the GraphQL Storefront API <a href="/docs/storefronts/headless/building-with-the-storefront-api/products-collections/metafields#step-2-retrieve-metafields">supports metafields on additional resources</a>. You can retrieve metafields with the Storefront API to access additional information from different types of resources.</p> <p>Previously, metafields were only supported on the <code class="text-highlight text-highlight--grey">Product</code> and <code class="text-highlight text-highlight--grey">ProductVariant</code> resources.</p> <p><strong>New types</strong></p> <p>The following types now also support metafields:</p> <ul> <li><code class="text-highlight text-highlight--grey">Article</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Blog</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Collection</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Customer</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Order</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Page</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> <li><code class="text-highlight text-highlight--grey">Shop</code> object was added to <code class="text-highlight text-highlight--grey">MetafieldParentResource</code> union</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>New code for unrecognized currencies <span id="new-unrecognized-currency-code-storefront"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the Storefront API returns <code class="text-highlight text-highlight--grey">XXX</code> in response to an unrecognized currency code. <code class="text-highlight text-highlight--grey">XXX</code> is the ISO code used to denote transactions that involve no currency.</p> <p>In mutations, a <code class="text-highlight text-highlight--grey">CurrencyCode</code> input value of <code class="text-highlight text-highlight--grey">XXX</code> is invalid. <code class="text-highlight text-highlight--grey">XXX</code> can only be returned as a result and not as an input value.</p> <p>This change prevents order pages from breaking if payments include a currency code that's not in the list of <a href="/docs/api/storefront/reference/common-objects/currencycode">valid values for the <code class="text-highlight text-highlight--grey">CurrencyCode</code> object</a>.</p> </div> </div> </div> </div> ## GraphQL Payments Apps API changes The [Payments Apps API](/docs/api/payments-apps/) is a new API that is available as of the 2021-07 release. The Payments Apps API lets you programmatically access data related to your payments app configuration. <div class="accordion-container"> <div class="accordion-controls"> <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button> </div> <div class="accordion-content-container"> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Capture session <span id="capture-session"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use new mutations to reject or resolve an open capture session.</p> <p><strong>New type</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">CaptureSession</code> object was added</li> </ul> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">captureSessionReject</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">captureSessionResolve</code> mutation was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Void session <span id="void-session"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use new mutations to reject or resolve a void session.</p> <p><strong>New type</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">VoidSession</code> object was added</li> </ul> <p><strong>New mutations</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">voidSessionReject</code> mutation was added</li> <li><code class="text-highlight text-highlight--grey">voidSessionResolve</code> mutation was added</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Authorized payment session expiry <span id="payment-expires"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, a new argument <code class="text-highlight text-highlight--grey">authorizationExpiresAt</code> can be included with the <code class="text-highlight text-highlight--grey">paymentSessionResolve</code> mutation.</p> <p><strong>New field</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">authorizationExpiresAt</code> field was added to <code class="text-highlight text-highlight--grey">PaymentSession</code> object</li> </ul> <p><strong>New argument</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">authorizationExpiresAt</code> argument was added to <code class="text-highlight text-highlight--grey">paymentSessionResolve</code> mutation</li> </ul> </div> </div> </div> </div> ## REST Admin API changes Below are all the changes currently introduced in the 2021-07 version of the REST Admin API. <div class="accordion-container"> <div class="accordion-controls"> <button class="accordion-control" data-accordion-control-type="expand-all" type="button">Expand all</button> </div> <div class="accordion-content-container"> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Deprecated field on Shop resource <span id="deprecated-force-ssl-field" class="heading-flag breaking"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the <code class="text-highlight text-highlight--grey">force_ssl</code> field on the <a href="/docs/api/admin-rest/latest/resources/shop">REST Shop resource</a> has been removed. Previously, this field had indicated whether requests made to the REST Shop resource connected over SSL using HTTPS. All requests now use HTTPS, so <code class="text-highlight text-highlight--grey">force_ssl</code> is always <code class="text-highlight text-highlight--grey">true</code>.</p> <p><strong>Removed fields</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">force_ssl</code> field was removed from <code class="text-highlight text-highlight--grey">Shop</code> resource</li> <li><code class="text-highlight text-highlight--grey">force_ssl</code> field was removed from <code class="text-highlight text-highlight--grey">shop/update</code> webhook topic</li> <li><code class="text-highlight text-highlight--grey">force_ssl</code> field was removed from <code class="text-highlight text-highlight--grey">app/uninstalled</code> webhook topic</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Explicit user permissions <span id="explicit-user-permissions" class="heading-flag breaking"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the complete list of explicit permissions that a user with the <code class="text-highlight text-highlight--grey">full</code> permission has access to is returned in the <code class="text-highlight text-highlight--grey">permissions</code> property of the <a href="/docs/api/admin-rest/latest/resources/user">REST User resource</a>.</p> <p><strong>New values</strong></p> <p>The following new values have also been added to the <code class="text-highlight text-highlight--grey">permissions</code> property:</p> <ul> <li><code class="text-highlight text-highlight--grey">billing_charges</code>: The user can view and export billing charges.</li> <li><code class="text-highlight text-highlight--grey">billing_invoices_view</code>: The user can view billing invoices.</li> <li><code class="text-highlight text-highlight--grey">billing_payment_methods_view</code>: The user can view billing payment methods.</li> <li><code class="text-highlight text-highlight--grey">staff_management_activation</code>: The user can activate or deactivate staff in the store.</li> <li><code class="text-highlight text-highlight--grey">staff_management_create</code>: The user can add staff to the store.</li> <li><code class="text-highlight text-highlight--grey">staff_management_delete</code>: The user can delete staff from the store.</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Deprecated property on Metafield resource <span id="deprecated-field-on-metafield-resource" ></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, the <code class="text-highlight text-highlight--grey">value_type</code> property on the <a href="/docs/api/admin-rest/latest/resources/metafield">Metafield</a> resource has been deprecated.</p> <p>You should use the <code class="text-highlight text-highlight--grey">type</code> property instead of the <code class="text-highlight text-highlight--grey">value_type</code> property to access or set the type of a <a href="/docs/apps/build/custom-data/metafields/list-of-data-types">Metafield</a> resource. For more information about this transition, refer to <a href="https://shopify.dev/changelog/online-store-2-0-new-metafields-type-system-and-dynamic-sources">this changelog entry</a>.</p> <p>You can set the <code class="text-highlight text-highlight--grey">type</code> property of the <code class="text-highlight text-highlight--grey">Metafield</code> resource using any of the new values introduced below.</p> <p><strong>New properties</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">type</code> property was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> </ul> <p><strong>New values</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">single_line_text_field</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">multi_line_text_field</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">page_reference</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">product_reference</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">variant_reference</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">file_reference</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">number_integer</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">number_decimal</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">date</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">date_time</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">url</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">json</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">boolean</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">color</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">weight</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">volume</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">dimension</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> <li><code class="text-highlight text-highlight--grey">url</code> value was added to resource <code class="text-highlight text-highlight--grey">Metafield</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Duties and international taxes <span id="international-duties-and-taxes"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <a href="/docs/api/admin-rest/latest/resources/fulfillmentorder"><code class="text-highlight text-highlight--grey">FulfillmentOrder</code></a> resource to retrieve information about whether the duties and international taxes associated with an order were charged at checkout.</p> <p><strong>New properties</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">international_duties</code> property was added to resource <code class="text-highlight text-highlight--grey">FulfillmentOrder</code></li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Estimated taxes on orders <span id="estimated-taxes-on-orders"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <code class="text-highlight text-highlight--grey">estimated_taxes</code> property on the <a href="/docs/api/admin-rest/latest/resources/order">REST Order resource</a> to determine whether taxes on an order are estimated.</p> <p>The property returns <code class="text-highlight text-highlight--grey">false</code> when taxes on an order are finalized and aren't subject to any changes.</p> <p><strong>New property</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">estimated_taxes</code> property was added to <code class="text-highlight text-highlight--grey">Order</code> resource</li> </ul> </div> </div> <div class="accordion-item"> <div class="accordion-link"> <div class="chevron-up"></div> <div class="chevron-down"></div> <h3>Expose writable tax line attributes <span id="writable-tax-line-attributes"></span></h3> </div> <div class="accordion-content"> <p>As of API version 2021-07, you can use the <code class="text-highlight text-highlight--grey">channel_liable</code> property on the <a href="/docs/api/admin-rest/latest/resources/order">Order</a> and <a href="/docs/api/admin-rest/latest/resources/abandoned-checkouts">Abandoned checkouts</a> resources to determine whether the channel that submitted the tax line is liable for remitting.</p> <p>A value of <code class="text-highlight text-highlight--grey">null</code> indicates unknown liability for the tax line.</p> <p><strong>New properties</strong></p> <ul> <li><code class="text-highlight text-highlight--grey">channel_liable</code> property was added to Order resource</li> <li><code class="text-highlight text-highlight--grey">channel_liable</code> property was added to Abandoned checkouts resource</li> </ul> </div> </div> </div> </div>