Release notes

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