2020-04 release notes

Release date Date version is no longer supported
April 1, 2020 April 1, 2021

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.

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 in GraphQL. Visit our doc on testing with developer preview to get started.

  • Additional fields were added to the Order and 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 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 upgrade to a more recent API version, then your app will break.

New validations on pricing

As of version 2020-04, a product's compare_at_price must always be higher than its price. Adding this validation will enable apps to trust the relationship between these values, allowing them to surface the compare_at_price in new areas (i.e. on a receipt) without worrying about odd values.

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 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 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

Updated properties

  • compare_at_price property on the Product resource can no longer be set lower than the product's price property.

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 resource
  • localized_province_name property was added to Location resource

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 resource.
  • Added original_total_duties_set property to Order resource.
  • Added list of duties to line_items object in 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 resource.

Abandoned checkout updates

New properties

Fulfillment updates

New properties

  • Added list of duties to line_items object in Fulfillment resource.

Updated properties

GraphQL Admin API changes

Below are all the changes introduced in the 2020-04 version of the GraphQL Admin API.

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 values have been added to the MediaErrorCode type to better represent the different types of errors that can occur when creating media objects.

Updated types

You can now return the updatedAt and createdAt dates for metafields and private metafields.

New fields

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

You can now manage the taxes and 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

The Video and Model3d object types now return the filename field.

New fields

  • filename field was added to object type Model3d
  • filename field was added to object type Video

The following changes have been made to delivery profiles:

Updated fields

  • DeliveryMethodDefinitionType argument was added to field DeliveryLocationGroupZone.methodDefinitions

New fields

New types

  • DeliveryMethodDefinitionType was added
  • DeliveryMethodDefinitionCounts was added

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.

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

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
  • currentQuantity was added to object type OrderLineItem
  • originalTotalPrice was added to object type OrderLineItem
  • originalTotalPrice was added to object type Order
  • fulfillmentStatus was added to object type Order
  • financialStatus was added to object type Order
  • edited was added to object type Order
  • currentTotalTax was added to object type Order
  • currentTotalPrice was added to object type Order
  • currentSubtotalPrice was added to object type Order
  • canceledAt was added to object type Order
  • cancelReason was added to object type Order

You can now return the updatedAt and createdAt dates for metafields.

New fields

  • updatedAt field was added to object type Metafield
  • createdAt field was added to object type Metafield

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

You can now activate customer accounts using a generated URL.

New mutations

  • customerActivateByUrl was added.

New types

  • CustomerActivateByUrlPayload was added

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

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

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