--- title: 2020-04 release notes description: Update your app from API version 2020-01 to 2020-04. api_name: release-notes source_url: html: https://shopify.dev/docs/api/release-notes/previous-versions/2020-04?itcat=partner_blog&itterm=api_deprecation_update_2021_01 md: https://shopify.dev/docs/api/release-notes/previous-versions/2020-04.md?itcat=partner_blog&itterm=api_deprecation_update_2021_01 --- ExpandOn this page * [Breaking changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#breaking-changes) * [REST Admin API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#rest-admin-api-changes) * [Graph​QL Admin API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#graphql-admin-api-changes) * [Storefront API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#storefront-api-changes) # 2020-04 release notes 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. | Release date | Date version is no longer supported | | - | - | | April 1, 2020 | July 1, 2021 | Note Due to the late notice given for a breaking change in 2020-07, the availability of the 2020-04 API version has been extended until July 1, 2021 for existing apps. The 2020-04 release contains changes to support order editing on the Storefront API, viewing and refunding duties on orders on the Admin API, and offers more information about media that has been embedded on product pages through [product media](https://help.shopify.com/en/manual/products/product-media). **What's new in 2020-04** The following features were added in version 2020-04 of Shopify’s APIs: * Duties and Taxes are now available for testing through the "Duties and taxes" developer preview. Duties are calculated per line item on international orders, and can be viewed as a part of the [LineItem](https://shopify.dev/docs/api/admin-graphql/latest/objects/lineitem) in GraphQL. Visit our doc on [testing with developer preview](https://shopify.dev/docs/api/developer-previews) to get started. * Additional fields were added to the [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) and [OrderLineItem](https://shopify.dev/docs/api/storefront/reference/orders/orderlineitem) objects in the Storefront API to better support order editing and provide better visibility into an order's state. * 3D models and videos embedded on product pages using [Media](https://shopify.dev/docs/apps/build/online-store/product-media) will now expose the filename, which allows for easier identification of relevant resources. *** ## 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. ### Price reductions removed The `productBulkAddPriceReductions` and `productBulkRemovePriceReductions` GraphQL mutations have been removed as of 2020-04. ### New error codes for media objects New values have been added to the [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) type to better represent the different types of errors that can occur when creating media objects. ### New error codes for customers on Storefront API More specific error codes have been added to the [CustomerErrorCode](https://shopify.dev/docs/api/storefront/reference/customers/customererrorcode) when a customer provides an invalid email domain during checkout. These errors were previously returned as generic invalid customer or token errors. *** ## REST Admin API changes ### Get localized country and province names with the Location resource The Location resource now returns the localized names for the location's country and province. **New properties** * `localized_country_name` property was added to [Location](https://shopify.dev/docs/api/admin-rest/latest/resources/location) resource * `localized_province_name` property was added to [Location](https://shopify.dev/docs/api/admin-rest/latest/resources/location) resource ### Manage duties and taxes on orders The Order, Refund, and AbandonedCheckout resources have been updated to help manage duties and taxes. ### Order updates **New properties** * Added `current_total_duties_set` property to [Order](https://shopify.dev/docs/api/admin-rest/latest/resources/order) resource. * Added `original_total_duties_set` property to [Order](https://shopify.dev/docs/api/admin-rest/latest/resources/order) resource. * Added list of `duties` to `line_items` object in [Order](https://shopify.dev/docs/api/admin-rest/latest/resources/order) resource. **Updated properties** * Updated `total_price_set` property to include any duties that have been charged during checkout on an international order. ### Refund updates **New properties** * Added list of `duties` to [Refund](https://shopify.dev/docs/api/admin-rest/latest/resources/refund) resource. ### Abandoned checkout updates **New properties** * Added `total_duties` property to [Abandoned checkout](https://shopify.dev/docs/api/admin-rest/latest/resources/abandoned-checkouts) resource. ### Fulfillment updates **New properties** * Added list of `duties` to `line_items` object in [Fulfillment](https://shopify.dev/docs/api/admin-rest/latest/resources/fulfillment) resource. ### Update a fulfillment service's inventory management field **Updated properties** * `inventory_management` property on [FulfillmentService](https://shopify.dev/docs/api/admin-rest/latest/resources/fulfillmentservice) resource can now be edited. *** ## Graph​QL Admin API changes Below are all the changes introduced in the 2020-04 version of the GraphQL Admin API. ### Remove bulk price reductions #### Breaking Bulk price reduction mutations and associated fields have been removed. **Removed fields** * `productBulkRemovePriceReductions` was removed from object type `Mutation` * `productBulkAddPriceReductions` was removed from object type `Mutation` **Removed types** * `ProductBulkRemovePriceReductionsPayload` was removed * `PriceReductionInput` was removed * `ProductBulkAddPriceReductionsPayload` was removed ### New error codes for media objects #### Breaking New values have been added to the [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) type to better represent the different types of errors that can occur when creating media objects. **Updated types** * `EXTERNAL_VIDEO_INVALID_ASPECT_RATIO` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `MODEL3D_VALIDATION_ERROR` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `MEDIA_TIMEOUT_ERROR` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `IMAGE_PROCESSING_FAILURE` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `IMAGE_DOWNLOAD_FAILURE` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `EXTERNAL_VIDEO_UNLISTED` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `EXTERNAL_VIDEO_NOT_FOUND` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) * `VIDEO_VALIDATION_ERROR` value was added to enum [MediaErrorCode](https://shopify.dev/docs/api/admin-graphql/latest/enums/mediaerrorcode) ### Updates to metafields You can now return the `updatedAt` and `createdAt` dates for metafields and private metafields. **New fields** * `updatedAt` field was added to object type [PrivateMetafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/privatemetafield) * `createdAt` field was added to object type [PrivateMetafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/privatemetafield) * `updatedAt` field was added to object type [Metafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/metafield) * `createdAt` field was added to object type [Metafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/metafield) ### Generate account activation URL You can now generate an account activation URL that customers can use to activate their account. **New mutations** * `customerGenerateAccountActivationUrl` was added. **New types** * `CustomerGenerateAccountActivationUrlPayload` was added ### Manage duties and taxes on orders You can now [manage the taxes and duties](https://shopify.dev/docs/apps/build/orders-fulfillment/returns-apps/view-and-refund-duties) applied to orders that ship internationally. **New fields** * `totalDutiesSet` field was added to object type `SuggestedRefund` * `refundDuties` field was added to object type `SuggestedRefund` * `refundDuties` optional argument was added to `SuggestedRefund` * `duties` field was added to object type `Refund` * `duties` field was added to object type `LineItem` * `originalTotalDutiesSet` field was added to object type `Order` * `currentTotalDutiesSet` field was added to object type `Order` * `refundDuties` field was added to input object type `RefundInput` **New types** * `Duty` was added * `RefundDutyRefundType` enum was added * `RefundDutyInput` was added * `RefundDuty` was added **Updated mutations** - `refundDuties` optional argument was added to [refundCreate](https://shopify.dev/docs/api/admin-graphql/latest/mutations/refundcreate). ### Retrieve filename of videos and 3D models The [Video](https://shopify.dev/docs/api/admin-graphql/latest/objects/video) and [Model3d](https://shopify.dev/docs/api/admin-graphql/latest/objects/model3d) object types now return the filename field. **New fields** * `filename` field was added to object type [Model3d](https://shopify.dev/docs/api/admin-graphql/latest/objects/model3d) * `filename` field was added to object type [Video](https://shopify.dev/docs/api/admin-graphql/latest/objects/video) ### Updates to delivery profiles The following changes have been made to delivery profiles: **Updated fields** * `DeliveryMethodDefinitionType` argument was added to field `DeliveryLocationGroupZone.methodDefinitions` **New fields** * `methodDefinitionCounts` field was added to object type [DeliveryLocationGroupZone](https://shopify.dev/docs/api/admin-graphql/latest/objects/deliverylocationgroupzone) **New types** * `DeliveryMethodDefinitionType` was added * `DeliveryMethodDefinitionCounts` was added ### Query fulfillment service provider You can now query a fulfillment service by ID. **New fields** * `fulfillmentService` was added to `QueryRoot` *** ## Storefront API changes Below are all the changes introduced in the 2020-04 version of the Storefront API. ### New error code for customer #### Breaking A new error code that's returned when a customer provides an invalid email domain during checkout. **Updated types** * `BAD_DOMAIN` value was added to enum `CustomerErrorCode` ### Additional fields and types added for enhanced visibility into orders You can now query order editing information using the Storefront API and have better visibility into order state. **New types** * `OrderCancelReason` was added * `OrderFulfillmentStatus` was added * `OrderFinancialStatus` was added **New fields** * `discountedTotalPrice` was added to object type [OrderLineItem](https://shopify.dev/docs/api/storefront/reference/orders/orderlineitem) * `currentQuantity` was added to object type [OrderLineItem](https://shopify.dev/docs/api/storefront/reference/orders/orderlineitem) * `originalTotalPrice` was added to object type [OrderLineItem](https://shopify.dev/docs/api/storefront/reference/orders/orderlineitem) * `originalTotalPrice` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `fulfillmentStatus` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `financialStatus` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `edited` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `currentTotalTax` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `currentTotalPrice` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `currentSubtotalPrice` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `canceledAt` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) * `cancelReason` was added to object type [Order](https://shopify.dev/docs/api/storefront/reference/orders/order) ### Updates to metafields You can now return the `updatedAt` and `createdAt` dates for metafields. **New fields** * `updatedAt` field was added to object type [Metafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/metafield) * `createdAt` field was added to object type [Metafield](https://shopify.dev/docs/api/admin-graphql/latest/objects/metafield) ### Updates to tokenized payment checkout A new checkoutComplete mutation with updated token type requirements. **New mutations** * `checkoutCompleteWithTokenizedPaymentV3` was added **New types** * `PaymentTokenType` was added * `TokenizedPaymentInputV3` was added * `CheckoutCompleteWithTokenizedPaymentV3Payload` was added ### Activate customer accounts by URL You can now [activate customer accounts](https://shopify.dev/docs/storefronts/headless/building-with-the-storefront-api/customer-accounts#step-2-activate-a-customer) using a generated URL. **New mutations** * `customerActivateByUrl` was added. **New types** * `CustomerActivateByUrlPayload` was added ### Create customer access tokens using multipass You can now create customer access tokens for the Storefront API using multipass. **Updated types** * `INVALID_MULTIPASS_REQUEST` value was added to enum `CustomerErrorCode` **New mutations** * `customerAccessTokenCreateWithMultipass` was added **New types** * `CustomerAccessTokenCreateWithMultipassPayload` was added ### Updates to product and product variants You can now view additional inventory and stock information on products and product variants. **New fields** * `totalInventory` field was added to object type `Product` * `compareAtPriceRange` field was added to object type `Product` * `quantityAvailable` field was added to object type `ProductVariant` * `currentlyNotInStock` field was added to object type `ProductVariant` ### Query the unit price of checkout line items You can now query the unit price of checkout line items. **New fields** * `unitPrice` field was added to object type `CheckoutLineItem` ### Corresponding Buy SDK versions | SDK | Supported Versions | | - | - | | Mobile Buy SDK Android | 5.0.0 | | Mobile Buy SDK iOS | 4.0.0 | | Unity Buy SDK | N/A | | JS Buy SDK | 2.10.0 | | Buy Button JS | 2.1.3 | *** * [Breaking changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#breaking-changes) * [REST Admin API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#rest-admin-api-changes) * [Graph​QL Admin API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#graphql-admin-api-changes) * [Storefront API changes](https://shopify.dev/docs/api/release-notes/previous-versions/2020-04#storefront-api-changes)