By default, assets, attributes, extra_fields, related_products and variant_groups are no longer returned on the list products. You can include them by using the include parameg: ?include=attributes,extra_fields,related_products,variant_groups
All Cart APIs now return cart objects in their responses. "Delete cart" returns an empty response.
The analytics settings have been removed from checkout objects. Please use the "get merchant" API to retrieve this information instead.
The "check if free" checkout helper API is deprecated and will be removed in future. It also now returns the updated checkout token. Use the checkout totals or conditionals to determine if a checkout is free.
The "check discount code" checkout helper API now returns the updated checkout object. Invalid discount codes will now return a 422 error, rather than a 200 with valid: false in the response. The valid, type, code, value, and amount_saved response attributes have been removed.
The "check giftcard" checkout helper API now returns the updated checkout object. Invalid gift cards now return a 422 error, rather than a 200 with valid: false in the response. Additionally, the code and credit attributes have been removed from the response.
The "check pay what you want" checkout helper API now returns the updated checkout object. Invalid PWYW prices will now return a 422 error, rather than a 200 with valid: false in the response.
The "check quantity" checkout helper API now returns the updated checkout object. Invalid quantity will now return a 422 error, rather than a 200 with available: false in the response. requested_quantity has also been removed from the response.
The "check shipping method" checkout helper API now returns the updated checkout object. The id, description, and price attributes have been removed from the response.
The "check variant" checkout helper API now returns the updated checkout object. Invalid variants, or unavailable inventory, will now return a 422 error, rather than a 200 with available: false in the response.
The "get live" helper API has been deprecated. Use the "get checkout" API instead.
The gateways object in checkout responses are now an optional include. Add ?include=gateways to checkout token API requests to continue including it. It will still be returned by default when creating a checkout token.
The "check variant" checkout helper API now accepts a list of variant option IDs, where it previously only accepted one at a time. It no longer returns the specified variant group and option IDs, name, or price in the response body. Get this information from the line item.
The shipping.available_options object has been removed from checkout responses, use shipping_methods instead.
The countries and regions keys have been removed from shipping methods returned in checkout responses. Use the "get available shipping methods" helper API instead.
The "live" object has been removed from checkout responses. The data it contained is now available at the top level of the checkout object. The merchant_id attribute has been removed, use a separate call to fetch merchant information instead. The adjustments list is now called adjustments.breakdown.
The merchant section of checkout responses has been removed, please use the "get merchant" API instead.
The products key has been removed from checkout objects. Use the products API instead.
The "set tax zone" checkout helper API now returns the updated checkout object. The valid and tax_region response attributes have been removed.
Bugfixes
Fixing issue with adding discount to cart with different discount applied.
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
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.
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.
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
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
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
The response of "refund order" APIs now includes the order ID that was refunded
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
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.
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
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.
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
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
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
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
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
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
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
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
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
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
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
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
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.