: Staging
: Production
🚫 Deprecated
Deprecated the payout.penalties field in favor of negative adjustments. This field is scheduled for removal after July 1, 2024.
Changelog
We regularly update our product and API while providing detailed notes on each release. We first release to staging, then to production about a week later. Learn more about our release process.
: Staging
: Production
Deprecated the payout.penalties field in favor of negative adjustments. This field is scheduled for removal after July 1, 2024.
: Staging
: Production
Added OAuth authentication support for the Firebase plugin, enabling more secure integration options.
Introduced a new ledger system for tracking financial transactions across the marketplace. This includes:
This foundational work will enable more detailed financial reporting and transaction tracking in future releases.
Increased the maximum allowed document upload size from 5 MB to 15 MB, making it easier to upload larger product documentation and images.
Product creation and updates now handle default variants more flexibly in certain edge cases, improving the product management experience.
Fixed an issue where vendor payout fees were using an incorrect field name, which could cause payout calculations to fail.
Resolved an issue affecting affiliate order handling when gross amounts and taxes were removed from calculations.
Fixed migration dependency issues that could prevent fresh installations from completing successfully.
: Staging
: Production
Added the ability to generate refund receipts with the invoiceRequest mutation. You must provide the refundId as an argument, for example:
mutation {
invoiceRequest(refundId: "UmVmdW5kOjUzOA==") {
invoice {
id
url
}
}
}
Added the nautical.payments.paypal plugin for using PayPal as the payout gateway.
Added the nautical.payments.trolley plugin for using Trolley as the payout gateway.
Improved the logging of webhook events for queue management plugins, such as Google PubSub. Whereas previously logs were only created for failed transmissions, we now also capture and log successful webhook events.
Order webhooks now include the number field, which is populated with the seller order number.
Fixed an issue where voucher discounts requiring a minimum order value were applied based on the gross total, including tax, rather than the net order total.
: Staging
: Production
Added the ability to process seller payouts through PayPal, including customizable payout email configuration and seller-level PayPal plugin enablement.
Introduced support for processing payouts via Trolley (formerly TransferWise), enabling automated recipient creation and batch payout processing.
Added automatic generation of refund receipt PDFs when refunds are paid, with customizable templates and support for both manual and automatic receipt creation through the invoiceRequest mutation.
Product types no longer require the hasVariants field or simple/configurable distinction. Products can now be created with more flexibility in how variants are managed, controlled via marketplace configuration settings.
Added the ability to filter available plugins to specific payment gateways, providing more control over which payment methods are available in different contexts.
The VendorPayout model now stores which payment gateway was used for each payout, improving traceability and reporting.
Fixed an issue where shipping costs were not properly calculating taxes in certain scenarios.
Fixed an issue where users could refund more than the total shipping cost across multiple refunds for the same order.
Fixed an issue that prevented order line refunds after manual refunds were cancelled, by properly filtering out cancelled refunds during validation.
Fixed voucher minimum amount validation to use net total instead of gross total, ensuring discounts are applied correctly.
Fixed an issue in the Shopify integration where the order_updated webhook was not specifying the correct order ID.
Added the missing number field to order webhook payloads, ensuring complete order data is sent to webhook subscribers.
Fixed an issue where draft order CSV exports could fail in certain scenarios.
Fixed an issue where inactive plugins could still affect order calculations and processing. Plugins now only execute when actively enabled.
: Staging
: Production
Refund lines can now be scoped to an OrderLine, allowing you to target refunds to specific individual order lines. To achieve this, use the refundLinesAdd mutation and set the refundScope to the id of the desired order line. Additionally, specify the quantity of the order line that should be included in the refund.
Added the following mutations for uploading a CSV file to create draft order lines:
nauticalOrderLinesCsvUploadorderLinesCsvUploadThe CSV file must have at least three columns: id_type, id, and quantity. See the following sample format:
id_type, id, quantity
NSN, 5669abb7-8c4f-477f-8662-4540af3bcdac, 5
ID, UHJvZHVjdFZhcmlhbnQ6MjEx, 5
SKU, 998323573, 5
ID, UHJvZHVjdFZhcmlhbnQ6MjEz, 5
Added a "Nautical Test Taxes" plugin, which can be used for development and testing with taxes.
Within the plugin settings, you can input a single tax percentage, which should fall within the range of 0 to 100%. This plugin respects tax settings such as "Charge taxes on shipping rates" and "All products prices are entered with tax included."
This plugin is intended solely for development and testing and is not for use in production environments.
When processing a manual refund for a fixed amount, taxes are no longer added separately. The fixed amount entered is the after-tax amount.
Fixed amount refunds do not automatically adjust records in the tax engine, such as Avalara. If you need to modify the amount of tax to remit, you must manually create a tax adjustment within Avalara.
: Staging
: Production
Added the ability to upload order lines via CSV, making it easier to bulk import order data into the platform.
Introduced a new DashboardEmbeddingToken mutation that enables secure embedding of analytics dashboards, with support for seller-specific data filtering.
Added initial support for PayPal as a payout gateway, providing more options for marketplace operators to distribute seller payouts.
Fixed amount refunds no longer include tax calculations, streamlining the refund process for operators.
Enhanced WorkOS integration with strongly typed plugin configuration and support for specifying authentication providers in authorization URLs.
Fixed an issue where the default refund type was not properly set to order line refunds.
Fixed a bug preventing storefront order shipping cost refunds from processing correctly.
Fixed an issue where order line refunds were incorrectly allowed after manual refunds had been processed.
Fixed a bug where shipping prices were not properly set to zero when orders were cancelled after being declined.
Fixed validation issues in refund calculations to ensure accurate refund amounts based on order line quantities and amounts.
Fixed an issue where previously refunded order line quantities were not correctly accounted for in subsequent refund requests.
Fixed an issue with Avalara tax integration where zero-tax return invoices were not being posted correctly due to missing entity use codes.
Resolved several issues with Stripe card payment processing affecting initial card transactions.
: Staging
: Production
Updated webhook payloads for the following events to be more structured and robust. The structure and contents of the following webhook payloads have been changed:
order_createdorder_updatedorder_cancelledorder_fully_paidorder_fulfilledpayment_createdAs a result of these changes, existing logic that utilizes the above webhooks should be updated to align with this new webhook format.
Made several API performance improvements around handling orders and refunds, including:
Fixed an issue where the userOverride argument on the checkoutComplete mutation did not override the user assigned to the checkout. Marketplace operators can now override the user during checkout completion using this argument.
Fixed an issue where buyers were unable to add digital products to the checkout, particularly when it was the first item being added to the checkout.
Fixed an issue where the order_number, created, and total_gross_amounts fields were missing from the recently updated NauticalOrder webhooks.
Fixed an issue that could prevent marketplace operators from finalizing draft orders in multi-currency environments, with a 'NoneType' object has no attribute 'unit_price_net' error message.
: Staging
: Production
Administrators can now override the user associated with a checkout, providing more flexibility in managing orders on behalf of customers.
Added a type field to refunds, allowing you to better track and categorize different types of refunds in your marketplace.
Added an ids filter to the me query, enabling users to retrieve specific orders more efficiently.
Added support for WorkOS, enabling enterprise single sign-on (SSO) for your marketplace users.
Made several performance improvements across the platform:
Fixed an issue where declining fulfillment on an order line could cause errors in certain edge cases.
Improved product category handling to prevent performance issues when querying large product catalogs.
Fixed multiple issues with refund calculations to ensure accurate quantities are used when processing refunds:
Fixed permission checks for order fields to ensure proper data access control.
Fixed an issue where voucher discounts were not properly applied when finalizing draft orders.
Fixed an issue that prevented finalizing draft orders with multiple currencies in certain scenarios.
Fixed issues with Avalara tax calculations:
Fixed issues with shipping method assignments to better support various shipping provider integrations.
: Staging
: Production
Added support for storing metadata on the CheckoutLine, OrderLine, and NauticalOrderLine objects, providing more flexibility in adding custom line-level data within an order.
me queryEnhanced the ability for users to filter orders retrieved from the me query. The CustomerOrderFilterInput, which previously only supported filtering by status, now supports many different filter fields.
One such is the ids filter field, which allows users to find a specific order by id.
Updated the order-related customer SendGrid email payloads to include the recipient_first_name and recipient_last_name fields. If the order is for a guest, these fields will be empty.
Made the following improvements to webhooks:
token to checkout webhook payloads.Made several performance improvements around order management, including:
Improved the ability to store payment sources for Stripe payments:
brand, expMonth, and expYear can now be stored.paymentMethodType.Fixed an issue where event notifications were not being sent during the NauticalDraftOrderLinesBulkDelete mutation.
Fixed an issue preventing full refunds of orders with declined fulfillments.
: Staging
: Production
Added support for storing metadata on the CheckoutLine, OrderLine, and NauticalOrderLine objects, providing more flexibility in adding custom line-level data within an order.
The checkout notification payload now includes the checkout token, making it easier to reference the checkout in notification handlers.
Added support for refunding individual order lines and shipping lines, with detailed tracking codes for each refund. This provides more granular control over partial refunds and better visibility into refund history.
Customer first and last names are now included in the order confirmation payload, making it easier to personalize order confirmation emails and notifications.
ACH payment method types are now stored and tracked, providing better visibility into payment methods used for orders.
Made several performance improvements across the platform:
Introduced a streamlined method to recalculate all pricing and tax information for marketplace orders, making order updates more reliable and consistent.
Fixed an issue where invoice generation could fail or be very slow when creating orders with a large number of products.
Fixed an issue where taxes could be computed before order lines were fully created, leading to incorrect tax calculations in some cases.
Fixed an issue where seller GraphQL responses used an incorrect date format, causing potential parsing errors.
Fixed an issue where accepting a bid would not properly connect the NauticalOrderLine to the OrderLine.
Fixed an issue where shipping calculations used incorrect subtotals when determining shipping costs.