Release notes

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