Release notes for version 1.3.7 were skipped due to a customer-specific deployment. Changes from version 1.3.7 are included in these notes.
✨ New
Central document management API
Added the ability to upload and manage documents attached to products, variants, sellers, or customers. File type and file size are validated when a document is uploaded.
Use the following mutations to manage documents through the API:
documentAdddocumentRemove
Proforma invoice API
Made the following API changes to support generating a proforma invoice:
- The
InvoiceRequestmutation has been updated to support generating a proforma invoice, by passingdocumentType: 4in the request input.mutation {
invoiceRequest(
documentType: 4,
orderId: T3JkZXI6NTI4)
{
invoice {
url
status
number
}
invoiceErrors {
code
field
message
}
}
} - Added the "Sold tax inclusive" label to the proforma invoice and invoice document types, which will now appear on generated documents when appropriate.
- Added "Discount" and "Volume Discount" sections to the proforma invoice and invoice document types, which will now appear on generated documents when appropriate.
Delivered state for orders
Added a new DELIVERED order state to the OrderStatus enum.
Also added the orderMarkAsDelivered mutation, to move a fulfilled order to the DELIVERED state.
mutation {
orderMarkAsDelivered(id: "T3JkZXI6NTI4") {
order {
status
paymentStatus
seller {
companyName
}
}
orderErrors {
message
}
}
}
If a fulfillment is cancelled on an order already in the delivered state, the status will revert back to PARTIALLY_FULFILLED or UNFULFILLED, as appropriate.
💎 Changed
Query performance optimizations
Various performance improvements have been made to improve query speeds.
Include allocations in stock quantity update
A new includeAllocations boolean field is available as part of StockInput in mutations for updating stock levels. This field determines how the quantity input provided in the mutation will be used to update the stock quantity:
- When
true, thequantityyou provide in the mutation will be added to the number of units in thequantityAllocated. The new stockquantitywill be the sum of these values. - When
false(default), thequantityyou provide in the mutation will simply update thequantityfield.quantityAllocatedwill not be taken into account.
- includeAllocations = true
- includeAllocations = false
Mutation
mutation {
productVariantStocksUpdate(
variantId: "ABC=="
stocks: {
quantity: 20
includeAllocations: true
warehouse: "ABC=="
}
) {
productVariant {
name
stocks {
warehouse {
name
}
quantity
quantityAvailable
quantityAllocated
}
}
bulkStockErrors {
message
}
}
}
Response
{
"data": {
"productVariantStocksUpdate": {
"productVariant": {
"name": "A-Line Dress in Red",
"stocks": [
{
"warehouse": {
"name": "Oceania"
},
"quantity": 32,
"quantityAvailable": 20,
"quantityAllocated": 12
}
]
},
"bulkStockErrors": []
}
}
}
Mutation
mutation {
productVariantStocksUpdate(
variantId: "ABC=="
stocks: {
quantity: 20
includeAllocations: false
warehouse: "ABC=="
}
) {
productVariant {
name
stocks {
warehouse {
name
}
quantity
quantityAvailable
quantityAllocated
}
}
bulkStockErrors {
message
}
}
}
Response
{
"data": {
"productVariantStocksUpdate": {
"productVariant": {
"name": "A-Line Dress in Red",
"stocks": [
{
"warehouse": {
"name": "Oceania"
},
"quantity": 20,
"quantityAvailable": 8,
"quantityAllocated": 12
}
]
},
"bulkStockErrors": []
}
}
}
Quantity available at warehouse
The quantityAvailable field is now available on the stock object to reflect the amount of variant stock at the warehouse that is available for purchase and is not allocated to an order.
This field is automatically calculated as the difference between the quantity and quantityAllocated.
quantityAvailable will be sent in all relevant webhook payloads.
Metadata fields on warehouse
The privateMetadata and metadata fields are now available on the warehouse object.
Product location kind API
Added the locationKind field to the location object, supporting options from the LocationKindEnum.
Updated attributes query
The attributes query has been updated to add inProductSearch and inVariantSearch filter options.
Marketplace order number added to seller order email payloads
The nauticalorder.id field has been added to seller order related SendGrid email payloads for a reference to the marketplace order number. For example, payloads will include the following:
"nauticalorder" :
{
"id": 626
}
Stripe API version
You can now specify the Stripe API version in your Stripe app settings. The API version defaults to 2022-08-01, which is the latest supported version.

🪲 Fixed
- Fixed an issue where the
fulfilledByMarketplacefield remains enabled after disabling it with theupdateSellerSettingsmutation - Fixed an issue with master product marketplaces where variant images could in place of the master product images. To fix this issue, a new marketplace setting is introduced for
strict_product_image_handling. Contact Nautical support to request this setting. - Fixed an issue where certain apps could be activated in the app marketplace without valid credentials.
- Fixed an issue where variant update webhooks triggered after changing the
minimal_variant_price_amountfield returned the previous price in the webhook payload instead of the updated value. - Fixed an issue with multiple customer accounts being created in Stripe for the same buyer when the "Store customer cards" setting was enabled .