Release notes

November 24, 2021

Improvements

  • Added APIs for third-party Integrations (e.g. Contentful, Slack, SendGrid, Algolia), which are provisioned and managed for your account and will execute serverless functions when certain webhooks are fired. For more info, see the blog post.
  • Products API may now be sorted by updated timestamps

Bugfixes

  • Fix incorrect product ID type in API docs

November 17, 2021

Improvements

  • The "resent order reciept" is now a POST request, has a webhook event orders.receipt.resend, and now returns the order object in the response
  • Add meta attribute to carts and checkouts, which transfers to order meta once captured

Bugfixes

  • Fix bug where failed webhook deliveries were always reporting 500 status codes
  • Fix bug where webhook response bodies in failed deliveries included unnecessary HTTP library context
  • Fix bug where "list variants" API response example was not showing in API docs
  • Fix bug where resending an order receipt would ignore your notification preferences
  • Fix bug where long request URLs may sometimes cause the log persistence to fail
  • Incorrectly configured Braintree gateways in checkout token generation now throw a 422 error, previously 500

November 10, 2021

Improvements

  • "Update product" API no longer requires required attributes to be provided
  • Webhook payloads now contain an array of model IDs (under the property model_ids) for contextless APIs such as "delete"
  • Webhook response body truncation in message history has been increased from 500 characters to 2000 characters

Bugfixes

  • Fix bug where ISO-3166 regions for Peru were not listed in Spanish
  • Fix bug where numeric ISO-3166 region codes were not saved as strings
  • Fix bug where digital downloads with a download limit were showing as unlimited in receipt emails
  • Fix possible null pointer error when saving merchant notification settings for the first time
  • Fix bug where radio attributes would not accept null as a value when they are not required

November 3, 2021

Improvements

  • "Create zone" and "update zone" APIs now accept a wildcard to enable all subdivisions: ['*']
  • All delete APIs now return a 204 No Content response header and empty body
  • Added support for custom attributes which may be used individually, or attached to products
  • The "issue and email login token" API now fires a customers.login.token webhook event
  • The "issue and email login token" API now returns the email address the email was sent to

Bugfixes

  • Fixed bug where country level tax might not calculate correctly
  • "Pay what you want" minimum amounts now include shipping costs
  • Fixed bug where order_value on order objects was returning incorrect values for orders with "pay what you want" enabled
  • Fixed bug where API responses with an empty body would cause webhooks not to fire

October 27, 2021

Improvements

  • Improved "list products" API performance
  • Added order customer_reference and customer information to response from "create physical shipment" API
  • Added webhook event for "email customer login token" API

Bugfixes

  • Fixed bug where using older versions of the API with multiple Square gateways configured might not return merchant and location IDs

October 20, 2021

Improvements

  • Improved API verification failure message more user friendly for Square gateway
  • Various performance improvements in the Products API
  • Added meta to transactions and "capture checkout" API requests via payment.meta
  • template is now an optional include in the "list/get integrations" APIs

Bugfixes

  • Fixed bug where saving log entries for checkout capture requests using the test gateway may sometimes cause an internal error

October 13, 2021

Improvements

  • Improvements to API request logging performance

Bugfixes

  • Fixed possible internal error when refreshing Square access tokens
  • Fixed possible internal error when uploading assets with spaces in their filename

October 6, 2021

Other

  • The log_id attribute in log responses has been renamed to id, and time renamed to created.

September 29, 2021

Improvements

  • Added Česká pošta (Czech Post) as a shipping carrier
  • Added assets to child category responses
  • The customer_reference attribute on order objects may now be customised in "capture checkout" and "update order" API calls
  • Carts, checkouts, and orders now have an image attribute, which is the first image asset associated with either the selected variant, one of the selected variant options, or the product
  • Using Square now supports Strong Customer Authentication (SCA) by using their Web Payments SDK and specifying a verification_token during "capture checkout" API calls

Bugfixes

  • Fix possible null pointer exception when listing orders

Other

  • Physical fulfillment response objects now contain the shipping_method_id used
  • Standard plan transaction fees have changed from 3% to 2%, and a minimum transaction fee of 10c per order has been introduced
  • The media attribute has been removed from "add to cart" responses. Use the image object instead.
  • The media attribute has been removed from line item objects in a cart. Use the image object instead.
  • The media attribute has been removed from "update item in" responses. Use the image object instead.
  • The media attribute has been removed from products, use image or assets instead. Additionally, the has_video and has_rich_embed conditionals have been removed since they were always false.
  • The media attribute has been removed from related product objects, use image or assets instead.

September 22, 2021

Improvements

  • Added ability to disable the hosted checkout and spaces/storefront using the "update merchant" API

Bugfixes

  • Fixed bug where not providing a Stripe token in "checkout capture" requests would result in a 500 error, now returns a 422 validation error
  • Fixed bug in checkout helper and capture API requests where providing a line item ID in a request object rather than as an object key would result in inconsistent line item resolution, and potentially in validation errors
  • Creating or updating a discount code will now return a 422 validation error when the code already exists in your account, where it previously returned a 402

Other

  • The fraud keys have been removed from order objects, and the "protect" API on checkouts has been removed. No replacement is provided for this API, however existing fraud protection information will be returned when available for existing orders if using older API versions.

September 15, 2021

Bugfixes

  • Fixed bug where sandbox and pending orders were being included in product order statistics

September 8, 2021

Bugfixes

  • Fixed bug with falsy cached value coming out of EU VAT MOSS tax rate resolver
  • Fixed incorrect webhook event name for deleting a variant option's assets
  • Fixed bug where Google Analytics tracking ID field was not able to be cleared in "update merchant" API calls

September 1, 2021

Improvements

  • Order objects now return a status attribute, and can be updated via the "update order" API (options are open and cancelled)
  • Add support to "list orders" API for filtering by status
  • Add ability to define CORS domains for your merchant account, which will be applied to public key API responses

Bugfixes

  • Fix bug where invalid orders were being included in order statistics

August 25, 2021

Improvements

  • Add gateway customer to transaction responses and hook up Stripe, Square, and Braintree
  • Categories may now have children and a parent assigned, using children.* (array of category IDs) or parent_id (category ID) respectively. Add ?include=breadcrumbs to category API calls to include the parent hierarchy.

Bugfixes

  • Fix bug with pagination where items may appear in multiple pages
  • Fix bug where deleted shipping rates on zones would break checkout token generation
  • Fix bug where categories could not be created using a slug from a deleted category

August 18, 2021

Bugfixes

  • Fix bug in Square token/nonce validation during "checkout capture" API calls
  • Square gateway responses now return the location ID
  • Fix bug where Square gateways that have not been fully configured would be returned in the "list gateways" API calls, but not be usable

August 4, 2021

Improvements

Bugfixes

  • Fixed bug where product responses might return associated categories multiple times
  • Removed Braintree tokenization key from payment gateway settings, use the client token in the checkout object instead
  • Fixed some bugs in Braintree error reporting when providing invalid API keys or authorization token

July 28, 2021

Improvements

Bugfixes

  • Fixed bug where empty log entries would be included in the "list logs" API pagination metadata but not the response body
  • Fixed bug where product shipping may not work after initially signing up until you have adjusted your shipping settings in the dashboard
  • Fixed bug where having multiple US Nexus tax rates for the same state could return rate for the wrong postcode

Other

  • The business_name, business_description, and has.business_description properties in merchant responses have been renamed to name, description, and has.description respectively
  • The "list available shipping subdivisions" API no longer returns region codes that are prefixed with the country code, e.g. US-CA, they are now just the region code, e.g. CA

July 21, 2021

Improvements

  • The timezone attribute has been removed from merchant API request and responses
  • Google Analytics linked domains in merchant responses are now always returned as an array, where previously it may have been null or a string
  • Address region fields in merchant responses now return an ISO-3166 region code, previously free-text input

Other

  • The analytics.google.settings.linked_domains property in merchant objects is now always an array, where it previously might have been null, a string, or an array of strings

July 14, 2021

Improvements

  • The "update merchant" API now allows you to specify images.cover and images.logo using an asset ID
  • Cart and checkout token expiry times are now reset whenever the tokens are modified
  • Empty variant responses in cart line items are now null rather than an empty array
  • Filtering the "list products" API now accepts a string or array of strings for the category_id and category_slug arguments

Bugfixes

  • Fix bug where merchant names with unicode characters would result in an incomplete order customer reference field

Other

  • The logo and cover attributes on a Merchant object have been removed, please use images.logo and images.cover instead, which return Asset objects
  • The valid property on discounts applied to a checkout token as been removed - discounts are always valid if they are on a checkout token
  • The metadata property on new physical fulfillments has been renamed to meta
  • The "create physical fulfillment" API now returns a 201 status code on success, previously 200

July 7, 2021

Improvements

Bugfixes

  • Fixed a bug where the "list merchants" API would throw an error when sorting by created date, and allow it to be sorted by merchant ID

June 30, 2021

Improvements

  • Removing or regenerating API keys attached to a Commerce Ray will now cause that Ray to be redeployed, which will recreate keys if necessary

Bugfixes

  • Fix bug where empty log entries were showing up in the pagination metadata but not in the response data
  • Fix bug where validation.string would be returned in some 422 error responses, now returns a descriptive message
  • Fix bug where incorrectly configured Braintree gateways may throw 500 errors, now return 401 gateway_error errors instead

June 23, 2021

Improvements

  • Add APIs for managing payment gateways
  • The "list API keys" API may now be sorted by the sandbox attribute
  • Add support for Ghanaian cedi (GHS) currency
  • The checkout token's gateways list now returns a list of Gateway objects, where it previously listed whether each gateway was available or not

Bugfixes

  • Fix bug where webhook payload signing was encoding unicode characters in a way that was not compatible with JSON.parse()

June 16, 2021

Improvements

Bugfixes

  • Fixed bug where the "capture checkout" API would allow line item quantities higher than the available limit to be captured, when line item quantities were not provided in the direct request
  • Fixed bug where webhook signatures were incorrect, having included double escaped slashes in the payload that was being signed

June 9, 2021

Improvements

  • The "update checkout" API now allows developers to define custom price adjustments for a checkout token
  • The "update checkout" API now allows developers to specify custom line item prices
  • Added a "list merchants" API, which replaces the existing "get merchant" API route - the "get merchant" API now exists at GET /v1/merchants/{id}
  • Performance improvements to the "list orders" API
  • Commerce Rays now use unique API keys per Ray
  • Added setup_future_usage and customer_id as options when capturing checkouts using Stripe for payments. setup_future_usage will be sent through to Stripe to allow for remembering card information, and customer_id can be used to attach the payment to an existing customer.

June 2, 2021

Improvements

Bugfixes

  • Fixed bug where line item totals were incorrect on order responses in some cases
  • Fixed bug with tax calculation when using tax inclusive pricing
  • Fixed bug where listing products may sometimes time out
  • Fixed bug where extra fields could not be updated in the "update order" API

Other

  • The "list logs" API argument last has been renamed to limit to be in line with other paginated API endpoints
  • The "list logs" API response is now nested inside a data key to be in line with other paginated API endpoints
  • A 20 second timeout limit has been added when dispatching webhooks

May 26, 2021

Improvements

  • Line item objects now include a product_meta property, which includes the product metadata

Bugfixes

  • Fix bug where order exports may not include line items
  • Fix bug where custom shipping rates with no provider weren't falling back to "custom"
  • Fix bug where shipping rate name/descriptions were not included in order CSV exports

May 19, 2021

Improvements

  • Add the ability to edit details of the merchant
  • All product responses now include fulfillment info when using a secret key
  • Stripe Payment Intents now include a description, and shipping/billing address information for the customer to satisfy Indian merchant requirements
  • Product images now allow .webp formats to be uploaded
  • Merchant details now provide a named timezone and the current UTC offset

Bugfixes

  • Fix bug where filtering lists of orders by an invalid column would throw an error

May 12, 2021

Improvements

  • Discounts may now be applied to carts, which are then carried over to checkout tokens

Bugfixes

  • Fix bug where failures to generate transaction fees for an order may prevent order from being captured

May 5, 2021

Improvements

  • Notes responses now include the user ID and full name/email address that created them
  • Checkouts may now be captured using a customer ID, which will internally resolve the customer's email if available
  • Added the ability to filter products using the conditionals is.pay_what_you_want, is.inventory_managed and is.tax_exempt
  • Removed restrictions on file types for digital downloads

Bugfixes

  • Fixed a bug where assets could not be removed from a product variant
  • Fixed a bug where invalid digital download access settings caused orders to be not viewable

Other

  • The "get available shipping methods" helper API now returns a 200 response with an empty list when no shipping methods were found, where it previously threw an error
  • Updated presigned asset uploads to determine an image's MIME type on completion
  • Variants are now limited per product according to your billing plan - default limit is 300, or 600 for paid plans
  • The is.free conditional has been removed from the product response

April 28, 2021

Bugfixes

  • Fix bug where duplicated shipping rates were being returned in checkout tokens

Other

  • The name attribute on order line items has been removed, use product_name instead.
  • The rate and rate_percentage attributes are no longer included in order tax breakdowns, please use the equivalent tax breakdowns in the order's line items.
  • The previously empty total_outstanding attribute has been removed from the order object.
  • The order.tax attribute has been removed from order objects. Please use tax instead.
  • Tax attributes for line items in an order object have been moved from top level to under the tax attribute. As well as this, the taxable_amount and amount values now return the line item price when the item is not taxable, where they previously would return null.
  • The variant_id and variant_name keys in an order's line item selected options/variants have been renamed to group_id and group_name.
  • The variants key on order line items has been renamed to selected_options.
  • The variants array, and child variant_id and variant_name keys in physical fulfillment line item responses have been renamed to selected_options, group_id, and group_name respectively.

April 21, 2021

Bugfixes

  • Fix bug where long collected extra field values were being truncated

Other

  • Removed support for merchant account registration via Manifold

April 14, 2021

Improvements

  • Add Braintree as a payment gateway, providing internal support for PayPal, Venmo, etc
  • Improved error handling when Instant Payment Notification fails to be delivered

Bugfixes

  • Fix bug that prevented customer order emails from being sent in some scenarios
  • Fix bug where unvalidated address attributes would cause order creation to break
  • Fix bug where checkout capture response in IPN payloads was not respecting API version

Other

  • Remove inventory from variant options - the attributes are now redundant

April 7, 2021

Improvements

  • Add TIPSA shipping carrier
  • Add filter for "list customers" API to find by external ID
  • Make plain text searches on products now also search the SKU field

Bugfixes

  • Fix bug where not specifying a line item quantity during checkout capture would not create fulfillment items correctly
  • Fix bug where categories with no products in them could not be deleted
  • Fix bug where extra fields for products were being returned in checkouts when they should not have been

March 31, 2021

Improvements

  • We've released a fully redesigned interface and set of APIs for managing variants on your products. For more information, see the blog post.
  • Improved performance in the "list products" API

Bugfixes

  • Fix bug where extra fields for a merchant's products may show up in checkouts that use different products from the same merchant

Other

  • The variant request argument in "add to cart" and "update item in cart" API calls has been renamed to `options
  • The variant_id request argument in the "check variant" helper API has been renamed to group_id to more accurately represent a variant group

March 24, 2021

Improvements

  • Performance improvements for the orders "export to CSV" functionality

Bugfixes

  • Fix bug where orders placed via the hosted Spaces Storefront/checkout may not show variant names in fulfillment items
  • Fix bug where creating or updating a product with no extra fields would fail
  • Fix bug where the "create variant" API allowed multiple variant options from the same variant group to be assigned

Other

  • Variant options are now a required attribute when using the "create variant group" API

March 17, 2021

Improvements

  • Asset objects now have a description attribute

Bugfixes

  • Fix bug with US Nexus tax zones where state ZIP codes had a leading zero (e.g. MA, NJ)

Other

  • As part of improving handling of extra fields for orders and products, request and response keys have been renamed from extrafields to extra_fields for consistency
  • Extra fields that belong to a product previously had IDs that may change as you modify other extra fields on the product, this has been changed so that the IDs are now persistent, however they may have changed one last time - avoid using hard coded IDs where possible

March 10, 2021

Improvements

  • Backfill customer first and last names from previous order records where customer records had null values
  • Capturing a checkout will now accept a customer.meta attribute for newly created customer records (existing records will not be affected by this change)

Bugfixes

  • Fix bug where a product that is no longer available for a line item triggered a 500 error
  • Fix bug where omitting a shipping country when providing a shipping method in checkout helper API calls would not highlight the missing field

Other

  • Cart and checkout line items no longer return a type attribute
  • Product quantity attribute has been replaced by inventory.available (integer), and inventory.managed (boolean)
  • The is.quantity_limited conditional (and variations of) has been renamed to is.inventory_managed

March 3, 2021

Improvements

  • Checkout capture API requests now also accepts a variant_id argument for line items, where previously it only accepted a variant group -> variant option map
  • Variants may now have fixed prices (absolute), while the existing behavior of calculating the base price of the product plus any delta adjustments from variant options is still the default
  • "Check variant" helper now accepts a specific variant ID, and can also resolve from variant group/option IDs
  • Add and update cart requests now accept a variant_id parameter for a specific variant to be added, while existing behavior has been preserved
  • Add ability to filter "list variants" API by variant option IDs
  • New APIs for managing variants, variant groups, and variant options for a product

Bugfixes

  • Prevent more than one variant existing with the same set of options

February 24, 2021

Improvements

  • Variants are now referred to as "variant groups", in preparation for our rebuild of variant handling
  • Assets may now be associated directly to a product's variant options
  • "List product" API now accepts an array of category slugs or IDs to filter by

February 10, 2021

Improvements

  • We’ve added a new realtime notification system
  • Added the ability to update Merchant details using the API
  • Added more information to checkout capture in the API docs
  • Cart line items now have an is_valid flag
  • Added published and draft status indicators to the Rays listing

Bugfixes

  • Fix bug where invalid sortDirection values would cause a server error
  • Ensure missing products, variants or options don't cause server errors using the cart or creating checkouts

February 3, 2021

Improvements

  • Improved error message when adding invalid variants or options to a cart
  • Added is_embeddable flag for Rays using templates that are embeddable

Bugfixes

  • Fixed issue where asset could not be loaded from CDN during "update asset" API call
  • Fixed bug with "check quantity" helper when product has variants that have not been provided yet

January 27, 2021

Improvements

  • Next and previous buttons now appear when viewing orders and products in the dashboard
  • Improved "select all" support for text that is supposed to be copied from the dashboard
  • Add sandbox mode to the Commerce Ray editor
  • Added a step to the getting started guide for those interested in Rays
  • Improved performance with the "list products" endpoint
  • Added a count of rays to the merchant statistics
  • Added a "delivery attempts" endpoint for channels

Bugfixes

  • Fixed card padding issues on the dashboard

January 20, 2021

Improvements

  • Commerce Rays may now be unpublished via the API
  • Add support for .exe, .dmg, and .AppImage files in Asset APIs

Bugfixes

  • Adjusted subdivisions in ISO-3166 list for Belgium
  • Changing your billing plan will now automatically resize plan-limited resources such as Commerce Rays accordingly

January 13, 2021

Improvements

  • All accounts now have a standard rate limit of 240 requests per minute, please contact us to increase this limit

Bugfixes

  • Removed some Italian regions that should not have been in the ISO-3166 list

January 6, 2021

Improvements

  • All countries and subdivisions have been updated to the latest ISO-3166 standard
  • Added Kosovo to the list of countries and subdivisions for shipping

Bugfixes

  • Fetching a cart that belongs to a deleted merchant using another merchant's API key not throws a "cart not found" error, previously a "merchant not found" error

December 23, 2020

Improvements

  • Added APIs for managing Commerce Rays
  • Added APIs for managing third-party integration channels (e.g. Shopify) - speak to sales to get beta access

Bugfixes

  • Shipping region codes provided in ISO-3166 format (e.g. US-CA) are now handled in checkout capture requests, where previously they were rejected

December 16, 2020

Improvements

  • Product list API calls may now be filtered by the active attribute
  • Category API responses now contain a products key with the number of products in that category

Bugfixes

  • Fixed a bug where some characters would be replaced by question marks in product names, descriptions, etc

December 9, 2020

Bugfixes

  • Fixed bug where "thank you" URLs for products were not being included in checkout capture responses
  • Fixed bug where products that do not belong to a merchant were able to be added to cart

December 2, 2020

Improvements

  • Discounts now have a starts_on field to specify a timestamp for when they become valid
  • Creating or updating discounts will now auto-assign a start date to now if not provided
  • Cart line item responses now include the product permalink
  • Payment gateway request parameters have improved validation in checkout capture requests. Note that sending irrelevant payment attributes in checkout capture requests may now through 422 validation errors, where they previously were ignored.
  • Add ability to filter and sort products by price

Bugfixes

  • Empty manual payment instructions and name no longer renders labels in email templates
  • Updating a product without digital delivery now removes existing related records, fixed conditional calculation in checkout
  • Sandbox and unpaid orders are now excluded from order statistics results
  • Products with variants are no longer able to be purchased without selecting variant

November 25, 2020

Improvements

  • List of ISO-3166 countries and subdivisions has been updated

November 18, 2020

Improvements

  • Orders and Customer APIs now have support for adding private (merchant only) notes
  • Assets now track dimensions when the asset is an image, which may be specified when creating assets, otherwise will be determined automatically
  • Products, carts, and gift cards: last_updated response parameter has been renamed to updated

Other

  • Digital download ID prefixes are now dwnld_ rather than ful_

November 10, 2020

Improvements

  • Commerce.js now supports all currencies supported by Stripe (see here)
  • Issuing JSON web tokens for customers from login tokens now returns the customer ID in the response
  • Various performance improvements for listing and retrieving orders

Bugfixes

  • Zero decimal currencies no longer return decimals in rounded prices
  • Using an invalid JWT for authorization now returns a 401 instead of a 500
  • Product sales statistics now include "pay what you want" order amounts
  • Fix bug where related products could not be cleared for a product

November 4, 2020

Improvements

  • Uploading assets now supports .flac and .rar file types
  • Performance and scalability updates to the infrastructure
  • Using Stripe with the Token API now adds the customer name to new customers created in Stripe

Bugfixes

  • Product descriptions are now always strings where previously could be null
  • Fix some potential null pointer exceptions in the cart APIs
  • Invalid country code on set_tax_zone helper now throws a validation error (422), previously was a server error (50x)
  • Fix bug in API docs where versions with breaking changes were not listed correctly

October 21, 2020

Improvements

  • Product responses now expose the thank_you_url attribute
  • Asset API calls now no loner use the Chec CDN for pre-authorized upload URLs
  • Products are now able to be assigned to many categories
  • Listing customers is now filterable by customer attributes
  • Add APIs for authorizing a customer via one-click email login, which will issue a JSON web token for the customer that may be used to retrieve that customer's orders, etc
  • Allow sorting by created date with the products API

Bugfixes

  • Prevent attempted Stripe refund when Stripe is not configured correctly
  • "Requires shipping address" is now set to true when enabling shipping options for a product
  • Fix strict type error in "check IP location" helper by casting input to strings
  • permalink is now nullable when creating or editing a product
  • Fixed an error when updating a product with already assigned categories
  • Fixed internal errors when saving a product in some combinations of variant configurations
  • Fixed bug where changing related_products on a product was deleting some products

October 7, 2020

Improvements

  • Stripe payment gateway may now be used with sandbox keys when using Chec sandbox API keys, allowing developers to test Stripe in a way that doesn't attract transaction fees on test orders
  • Added APIs for managing customers, automatically creating/associating customers to new orders, and listing orders for a customer
  • When editing a product, you may now specify collects.extrafields = false to remove existing extra fields on the product
  • Uploading an asset now allows definition of visibility (public/private) in the CDN via the private boolean
  • Product's fulfillment responses now include the zone_id that the selected rate belongs to
  • Retrieving shipping rates now allows for filtering by a set of IDs
  • Saving a product now allows you to specify images (assets) to associate, which can avoid a subsequent follow up call to /assets
  • Saving a product now allows for both numeric and hashed IDs when creating shipping options for the product

Bugfixes

  • Removed shipping.available_options from shipping information on an order
  • Responses from checkout.capture calls now correctly include line item totals, and tax amounts
  • Fixed response structure for quantity object under an order's physical fulfillment items when calling checkout.capture
  • Failure to resolve a merchant when rehydrating a Cart will now throw an explicit exception
  • Fixed bug where a base_rate_id should have been required when defining shipping zones during create/update of a product
  • Fixed bug where merchants were unable to edit shipping addresses on orders

September 23, 2020

Improvements

  • The data key on assets has been removed and the attributes are now part of the response directly
  • The order object conditionals no longer returns future tense keys from the live object e.g. collects_fullname. Use past tense instead, e.g. collected_fullname
  • amazon_pay is no longer returned in the list of available payment gateways
  • line_items on the root level of the checkout token response has been replaced with products to more accurately reflect the purpose of the attribute
  • All error responses across the checkout have been made consistent with the rest of the API
  • Refunds are now possible for orders paid for using PayPal
  • Live payment gateways may no longer be used with Chec sandbox API keys, except for "Test Gateway" which will convert the order to a sandbox order if used with live keys
  • Updating a cart's line item quantity to 0 is now possible and will remove the line item, where it previously would throw an error
  • Retired the receipt object, the order object is used instead
  • Product APIs now support SEO title and description
  • Product APIs now support a numeric sort_order, which may also be used to sort the "list products" API calls
  • Uploading assets via the API now supports a presigned CDN URL location for large file uploads
  • API for listing Chec billing plans no longer requires any API key for authorization
  • Outgoing platform emails will now be sent from @chec.io rather than @trychec.com
  • Performance and scalability improvements to the cart and checkout APIs

Bugfixes

  • Fix exception thrown in add/edit product APIs when product has no variant options defined
  • Razorpay now processes transactions in the merchant's configured currency, previously would always use INR
  • Merchants may no longer change their billing plan without a valid credit card on file

August 26, 2020

Improvements

  • Added new shipping zone and shipping rate APIs
  • Added extra logging in Square payment gateway failures
  • The products API now supports basic filtering using the query parameter
  • Improvements to our internal logging and error handling
  • When refunding an order paid with Stripe, if the payment was already refunded in Stripe, Chec now continues as if the refund was successful where previously it would return an error
  • Updating a product through the API now accepts a boolean extra_field.enabled to indicate whether extra fields exist on the product overall, allowing API users to remove all extra fields on a product
  • Listing billing plans are now sorted in ascending price order
  • Webhook message history now exposes the first 500 characters of the response body

Bugfixes

  • Fixed bug where requesting billing information or changing plans immediately after registering would cause an internal error
  • Fixed bug where deleting your account through Manifold would cause an internal error
  • Fixed bug where conditionals on an order were incorrectly encoded, causing intermittent problems with digital and physical fulfillments on orders
  • Fixed bug where fetching available shipping rates for a checkout token was returning rates from other shipping zones within the same country
  • Fixed bug where logging in or registering through the Chec CLI would cause an internal error if the user had not completed merchant registration

August 12, 2020

Improvements

  • payments, pending_payments, refunds, charges, and future_payments are no longer responses in the order object - we now use a common list of transactions instead, which includes both charges and refunds
  • Internal API for capturing a manual payment has been removed in favour of "update transaction for order", which allows manual transaction status to be changed and note metadata to be attached
  • Legacy references to preorders have been removed
  • ISO-3166-2 shipping subdivisions for Indonesia have been updated
  • List discounts API now uses pagination
  • Strong customer authentication using Stripe's Payment Intents API is now confirmed by the API. Clients must create a Payment Method using Stripe.js and provide payment.stripe.payment_method_id in the request parameters for checkouts.capture()
  • Removed previous API for registering a Stripe Payment Intent on a checkout token. No backwards compatibility is provided for this API.

Bugfixes

  • Fixed bug where contents in the create/update asset API would accept an array and throw an internal error

July 29, 2020

Improvements

  • Add API for GDPR compliant account deletion
  • Users can now edit their user account information from the Chec Dashboard
  • Added Rise and Growth plans
  • "Other" shipping method no longer returns the tracking number in the tracking URL field
  • Billing plan API now exposes the plan's monthly ceiling and overage fees

Bugfixes

  • Fixed a bug where adding an item to cart that is already in your cart would not increase its quantity
  • Fixed a bug where filtering orders using a simple search term would match all orders

July 1, 2020

Improvements

  • Updating an order now supports defining a custom meta object
  • Order object metadata attribute is now named meta to be in line with other objects
  • Order API now includes digital package expiry date
  • Digital packages in an order may now have their expiry date and download counter cleared

Bugfixes

  • Fixed typo in error message during physical fulfillment of an order
  • Line items in cart objects now correctly render prices in the merchant's currency

June 17, 2020

Improvements

  • Discounts may now be applied to multiple products
  • The discount object now includes an is_expired boolean

Bugfixes

  • Discounts may now be created with zero quantity
  • Updating a discount now requires the expiry date if expires is true

June 4, 2020

Improvements

  • Updating objects via PUT API requests are no longer idempotent, partial data updates are now allowed using this method, previously requests were idempotent
  • Creating and editing categories now allows for nullable description attributes

Bugfixes

  • Fixed bug where saving an unlimited discount code as part of a product API call wasn't correctly calculating the is_quantity_limited conditional on the product response

Other

  • Improved response attribute documentation for discounts, categories, and developer log API endpoints

May 20, 2020

Bugfixes

  • Variants or variant options not found during "add to cart" API calls now returns a 422 error, previously returned 404

Other

  • Improved example responses in API documentation

May 6, 2020

Improvements

  • Updating a category now accepts a nullable description attribute

Bugfixes

  • Fixed bug preventing order CSV exports from being correctly generated

Other

  • Added integration with Manifold
  • Added Commerce.js examples to the API documentation

April 22, 2020

Improvements

  • Deleting a category now returns the category's ID, and clears existing product associations
  • Creating or updating a product via the API now supports configuring discounts for it in the same operation
  • Creating or updating a product now returns the updated product object
  • Products now support a custom meta attribute via the API
  • Updating discounts is now supported via the API
  • Orders may now be retrieved by the customer_reference identifier

Bugfixes

  • Creating or updating a discount code now allows a null quantity field, and if provided it must be at least 1
  • Webhooks no longer fire on Chec API calls that return a 300 status code or higher
  • When creating or editing a product, you can now correctly delete associated assets, variant price is now nullable, and associated variants and discounts may be removed
  • Category slugs must now be unique per merchant

Other

  • Webhook event name checkouts.capture is now called orders.create

April 8, 2020

Improvements

  • Minor performance improvements to the cart APIs
  • Added APIs for managing digital fulfillments on an order: list, get, revoke, enable
  • Added CRUD API endpoints for categories

March 31, 2020

Improvements

  • APIs for retrieving a product, adding to cart, and generating a new cart from a product may all now use the product's SKU as an identifier
  • Manual payments are now included in the pending_payments array of the order object
  • Webhook delivery history records now include the first 500 characters of the callback URL's response body
  • Added Toll as a New Zealand based shipping carrier option

Bugfixes

  • Fixed bug where capturing a manual payment on an order would not mark the order as fulfilled when the order had no physical fulfillment settings
  • pending_payments in order objects is now always returned as an array, previously would return null if no data was available

Other

  • JavaScript examples are now included in the Chec API documentation

March 19, 2020

Improvements

  • Added API endpoints and support for webhooks and webhook delivery history
  • Add unique signing key for merchants to verify authenticity of webhook delivery's signature

Bugfixes

  • Retrieving a non-existent order receipt now throws a 404 error, previously would return an internal server error
  • Fixed bug where line total calculations sometimes resulted in an internal server error
  • In order API calls, digital packages that have been revoked now correctly reflect their revoked status

March 3, 2020

Improvements

  • All API endpoints now return appropriate no-cache HTTP headers
  • API now supports use of user-scoped JSON web tokens for authentication
  • Added CRUD endpoints for API keys
  • Added support for tax exempt products

Bugfixes

  • Fixed internal server error in digital fulfillment API due to incorrect type coercion

Other

  • Breaking changes to the Chec API will now be listed in the API documentation alongside their associated release date. API keys have a version associated to them, and will use the latest release by default. You may select a specific version to pin your API keys to from the Chec Dashboard's settings area.

January 27, 2020

Improvements

  • Optimised database table indexes to improve order API performance
  • Improved error handling when using Stripe payment gateway

Bugfixes

  • Fixed issue with digital download links in order confirmation emails

Other

  • 201 responses are no longer logged under your developer logs