Altera shows a code such as ABC001 with each error or warning. This article explains the codes for this area of the app and how to resolve them. For codes from other areas, see Error and warning codes.
Order Codes
Error and warning codes that occur when dealing with orders
ORD001 - ID or Name Column Missing (Warning)
Order sheets work best with either a Name or ID column for grouping. When neither column is present, the system will fall back to using "Top Row" column markers for grouping, or group all rows into a single order if no Top Row column exists.
ORD002 - Required Column Missing
Required columns, such as the Line: Type column are missing from the source file.
ORD003 - Invalid 'Line: Type' Value
A row of the order has a blank or unknown value in the Line: Type column. The app didn't import the order. The other orders in the file are imported.
The message shows the value that isn't valid:
"Line: Type" values [<empty>] are not validmeans that a cell is blank. When theLine: Typecolumn is in the file, every row of the order needs a value"Line: Type" [Foo] is unknownmeans that the value isn't a line type. The app stops at the first unknown value, so the rows after it aren't checked
Orders accept these values:
Line ItemDiscountShipping LineRefund LineRefund ShippingTransactionFulfillment LineIgnore
Draft orders accept Line Item, Discount, Shipping Line, and Ignore.
Case, extra spaces, and a - or _ between the words don't matter, so line item, LINE ITEM, and Line-Item are all read as Line Item. The words must be separate: LineItem is unknown.
Fill the blank cells or correct the values, and import the order again
To keep a row in the file that the app must not read, for example a row with formulas, set its
Line: TypetoIgnore
A new, updated, or replaced order fails. A DELETE row doesn't check the Line: Type column. With REPLACE, the existing order isn't deleted when this error occurs.
ORD004 - Order Import Email Notifications
Importing orders will trigger Shopify Admin staff notifications for each order unless they are disabled. Shopify does not provide a way for apps to detect if notifications are already turned off.
To disable order notifications, open up the Shopify admin and go to Settings > Notifications > Staff notifications and turn them off before importing large batches of orders.
Additionally, importing orders may trigger other applications that are configured to process new orders on Shopify. We recommend testing with 1-2 orders before importing large batches of orders.
ORD006 - Editing Orders Not Supported
Editing existing orders is not currently supported through the application. You may need to delete the existing order and create a new one with your desired changes.
ORD007 - Missing Line Item Data
This error occurs when processing a refund with insufficient line item data. When processing refunds, make sure to include all required line item information to properly associate the refund with the correct items.
ORD008 - Trial/Development Store Rate Limit
Shopify limits new orders to 5 per minute on trial and development stores. If your store is on a trial or development plan, order imports will run more slowly due to this limitation. To increase the import speed, consider upgrading to a paid Shopify plan. A file where every Command is DELETE does not show this warning, because it creates no orders. IGNORE rows count the same.
ORD010 - Invalid Date/Time Value
The date/time columns in your order import ('Processed At', 'Transaction: Processed At', 'Fulfillment: Processed At') must contain valid date/time values or be left blank. This error occurs when these columns contain text or other values that cannot be parsed as valid dates. Use standard date formats like 2024-01-15, 2024-01-15 14:30:00, or Jan 15, 2024 2:30 PM. Ensure all values in these columns are either empty or contain properly formatted date/time values.
ORD011 - Payment Terms Due Date Required
When importing orders with fixed date payment terms, the 'Payment Terms: Due At' column must be provided and cannot be empty. This error occurs when you have specified a payment terms template that requires a fixed due date, but the corresponding 'Payment Terms: Due At' column is missing or empty. Ensure that for fixed date payment terms, you include the 'Payment Terms: Due At' column with a valid date/time value specifying when the payment is due.
ORD013 - Multiple Fulfillments Without ID
You can only update a single fulfillment per order when the Fulfillment ID is not specified. If you need to update multiple fulfillments for the same order, you must provide the specific Fulfillment ID for each fulfillment you want to update.
ORD015 - Incomplete Address Information
When importing orders, if you provide any shipping or billing address information, you must provide all required address fields. This error occurs when some address fields are filled but others are missing. The message names the row and the fields that are blank.
Required shipping address fields:
Shipping: Address 1
Shipping: City
Shipping: Country Code
Required billing address fields:
Billing: Address 1
Billing: City
Billing: Country Code
The check uses the Country Code column (for example EG or US), not the Country name column. If Country Code is filled, you can leave Country blank.
The check runs on the first row of each order and stops at the first order with an incomplete address. After you fix that row, check the same columns in the other orders of the file.
How to fix this:
Either fill in all required address fields for the address type you're importing
Or remove the partial address data if the address is not needed
Ensure that when you provide any address field, you also provide the other required fields for that address type
ORD017 - Cannot Edit International Currency Order
Shopify does not allow editing orders that are recorded in a currency different from your store's currency, for example orders from before the store changed its currency. The order's Shop Currency column shows the currency it is recorded in.
To resolve this:
Make sure you are only trying to edit line items of orders recorded in your store's currency
Orders that customers paid in another currency (
Currencydiffers fromShop Currency) can be edited, except that a custom line item can't be added to them (ORD057)
Note: Shopify doesn't allow adding Line Items to an Archived Order – the app will automatically unarchive the order, add the line items, and then re-archive it if it was originally archived.
ORD018 - No Line Items to Add
When using the Line: Command column with the MERGE value to add line items to an order, you must include at least one line item row in your spreadsheet.
To resolve this:
Make sure you have at least one row in your spreadsheet with
Line: Typeset to "Line Item"Make sure the
Line: Commandcolumn is set to "MERGE" for the line items you want to addVerify that your line items have the required fields filled in (such as SKU or Product Handle to identify the product)
ORD019 - Invalid Fulfillment Line Item Quantity
The fulfillment request contains an invalid line item quantity. This typically happens when:
Line item already fulfilled: You are trying to fulfill a line item that has already been fulfilled. Shopify does not allow fulfilling the same line item twice.
Quantity exceeds available: The quantity you are trying to fulfill is greater than the unfulfilled quantity remaining on the line item.
How to fix this:
Check if the line items in your import have already been fulfilled in Shopify
Ensure the fulfillment quantity does not exceed the ordered quantity minus any already-fulfilled quantity
If re-importing fulfillments, remove rows for line items that were already fulfilled in a previous import
ORD020 - Refund Amount Adjusted for Fully Refunded Order
Shopify rejected the refund because the recorded refund amount in shop currency was greater than the net payment received on the destination order. This typically happens with multi-currency orders where the exchange rate drifted between sale time and refund time on the source store - the customer paid and was refunded the same presentment amount, but the recorded shop-currency values differ.
When the source order was fully refunded (Price: Current Total = 0, Price: Total Outstanding = 0, Payment: Status = refunded) and there is exactly one sale and one refund transaction, the import retries with the refund amount adjusted to match the sale so the order settles cleanly on the destination.
This is informational; no action is required. The destination order will show as fully refunded.
ORD021 - Company Link Could Not Be Resolved
The order specifies a B2B company link, but Altera couldn't unambiguously resolve the company and/or location. The row fails so the order isn't created with the wrong association.
This code is raised in any of the following situations:
A
Company:column (ID, External ID, or Name) is set but no company on the store matches itA
Company: Locationcolumn is set but no location matches itCompany: Location IDresolves to a location that belongs to a different company than theCompany:column on the same rowCompany: Location Nameis set without aCompany:column and more than one company on the store has a location by that nameCompany: Location External IDis set without aCompany:column and more than one company on the store has a location with that external IDA
Company:column is set but noCompany: Locationcolumn is set
To fix:
Import the company and its locations before importing orders that reference them
Check that the values in the
Company:andCompany: Locationcolumns match existing records exactlyWhen
Company: Location NameorCompany: Location External IDmay not be unique across companies, also setCompany: ID,Company: External ID, orCompany: Nameto scope the lookupMake sure
Company: Location IDand theCompany:column on the same row point at the same company
ORD022 - Company Location Requires a Customer
A Company: Location is set but no customer could be resolved for the order. Shopify only creates a B2B order when both a customer and a company location are provided, and the customer has an active role at that location. The row fails.
Set
Customer: IDorCustomer: Emailto a customer that exists on this storeMake sure that customer has been assigned as a contact at the company location with an "Ordering only" or "Location admin" role (see the Companies import guide)
ORD023 - Company Link Ignored on Existing Order
A Company: column was set on a row using MERGE or UPDATE, but Shopify's order update API doesn't support changing the company location of an existing order. The company link was ignored and the order's existing company association was preserved.
Use
REPLACE(delete and recreate) if you need to change the company link on an existing orderOtherwise, leave the
Company:columns blank forMERGE/UPDATErows
ORD024 - Customer Has No Role at Company Location
The order specifies both a customer and a company location, but the customer isn't assigned as a contact at that location. Shopify only accepts a B2B order when the customer has an active role at the linked company location, so the row fails.
Open the company location in Shopify Admin and add the customer as a contact with an "Ordering only" or "Location admin" role
Or import the contact role first using the Companies import (see the Companies import guide), then re-run the order import
Make sure
Customer: ID/Customer: Emailand theCompany: Locationcolumns point to a customer/location pair that already has a role assigned
ORD025 - Total Shipping Price Not Imported
The row sets Price: Total Shipping to a non-zero value, but no row for this order has Line: Type set to Shipping Line. Shopify's order creation API has no field for a total shipping amount - shipping charges can only be added to an order through a Shipping Line row. The order was created without any shipping charge, even if a transaction on the order included the shipping amount.
Add a row with
Line: Typeset toShipping Linefor the order, withLine: Titleset to a shipping method name andLine: Priceset to the shipping amountPrice: Total Shippingis informational only (used on export) and is never used to create shipping charges on import
ORD026 - Line Item Has No Matching Variant and No Title
A line item on the order could not be matched to a product variant on this store (the Line: SKU or Line: Variant ID value doesn't exist), and the row has no Line: Title value. Shopify requires every line item to have a title, so the order fails to import with a "Line items Title can't be blank" error.
The error message includes the SKU and/or variant ID from the row so you can find the problem line in your file.
Check the
Line: SKU/Line: Variant IDvalue in the error message and correct it so it matches a variant that exists on this storeOr, if the line item is intentionally not linked to a product, add a
Line: Titlevalue so it can be imported as a custom line item
ORD027 - Line Fulfillment Status Ignored on Existing Order
A row using MERGE or UPDATE set Line: Fulfillment Status to fulfilled on an order that already exists, but no Fulfillment Line rows were included. The Line: Fulfillment Status column only creates a fulfillment when the order is first created. When updating an existing order, that column is ignored, so no fulfillment was created and the order stays unfulfilled even though the import reports success.
To fulfill the whole order, add a single row with
Line: Typeset toFulfillment LineandFulfillment: Statusset tosuccess. LeaveFulfillment: IDempty and you do not need to list the individual items; the whole order is fulfilled. Add one such row per orderTo fulfill only some of the items (a partial fulfillment), include one
Fulfillment Linerow per item with aFulfillment: ID(any value likeF1groups the lines into one fulfillment),Fulfillment: Statusset tosuccess, and the item'sLine: SKU/Line: Title/Line: Price(orLine: ID) so it can be matchedThe simplest route for a migration is to re-export the orders from Altera, which produces correctly shaped
Fulfillment Linerows, then re-import that file withMERGEThis is a warning only - the rest of the order update still applies
ORD028 - Order Details Read from First Line Item Row
The first row for this order has Line: Type set to something other than Line Item (for example Discount or Shipping Line), and that row's order-level cells are blank. Order details like the customer email, billing and shipping addresses, and processed date are normally read from the first row of each order, so the app filled the missing details from the order's first Line Item row instead.
This is informational only - the order imported with the details from the Line Item row
To avoid the message, order the rows in your file so a
Line Itemrow (the one carrying the email, addresses, and dates) is the first row for each order
ORD029 - Order Created but Not Cancelled
The row has Cancelled At or Cancel: Reason set, so the app created the order and then tried to cancel it. Shopify does not allow cancelling an order that is both paid and fulfilled. Normally the app handles this automatically by cancelling the order's fulfillments and retrying (see ORD034), but that automatic step failed here, so the order was left uncancelled.
The order itself was created successfully and remains open
To cancel it, first cancel its fulfillments in the Shopify admin, then run an UPDATE import for the order with
Cancel: ReasonsetShopify sets the cancellation date to the time of the import, so the
Cancelled Atvalue from the file is not preserved
ORD030 - Zero-Amount Transaction Skipped
The row has a transaction with Transaction: Amount set to 0. Shopify doesn't accept zero-amount transactions when creating an order, so the app skipped the transaction and imported the order without it.
The order itself imported normally, including its
Payment Status, so a fully discounted or voucher-paid order still shows as paidIf only part of the order was free, set
Transaction: Amountto the amount that was actually charged instead of 0To avoid the message, leave the
Transaction:columns blank on orders where nothing was charged
ORD031 - Refund Line Doesn't Match a Line Item
The order has a Refund Line row that the app couldn't tie to any line item of the order, so it couldn't tell Shopify which item was refunded.
On a new order, set
Line: IDon theRefund Linerow to the same value as theLine Itemrow it refundsOn an existing order (
UPDATE), setLine: IDon theRefund Linerow to the ID of the line item it refunds. An export of the order shows this in theLine: IDcolumnIf
Line: IDis blank, the app falls back to matching onLine: Variant IDand thenLine: SKU, so one of those must match aLine Itemrow on a new order, or a line item of the existing orderOn a new order, a
Refund Linerow for an item that has noLine Itemrow of its own can't be imported, because the item is never created and there is nothing to refundThe order itself is still created or updated; only the refund fails
ORD032 - Refund Line Matches More Than One Line Item
The order has a Refund Line row with no Line: ID, and the Line: SKU or Line: Variant ID it does have appears on more than one line item of the same order. The app doesn't guess which one was refunded, because attaching a refund to the wrong line item gives the order incorrect financial records.
On a new order, set
Line: IDon theRefund Linerow to the same value as theLine Itemrow it refundsOn an existing order (
UPDATE), setLine: IDon theRefund Linerow to the ID of the line item it refunds. An export of the order shows this in theLine: IDcolumnThis is common when an order has the same product on several lines, for example the same SKU bought in two separate lines at different prices
The order itself is still created or updated; only the refund fails
ORD033 - Order Archived at Current Time
The row updated an existing open order and had a value in the Closed At column, so the app archived (closed) the order. Shopify only lets an existing order be archived at the moment the request is made, so the archive date on the order is the time of the import, not the value from the Closed At cell.
This is informational; the order was archived as requested
The exact
Closed Attimestamp is only applied when the order is first created, so to preserve historical archive dates, include theClosed Atcolumn in the import that creates the orderCancelling an order does not archive it, so include
Closed Aton rows that cancel orders too; fully refunded or fulfilled orders can be archived automatically depending on the store's settings
ORD034 - Fulfillments Cancelled to Cancel Order
The row cancels an order that is both paid and fulfilled. Shopify does not allow cancelling such an order, so the app cancelled the order's fulfillments first and then cancelled the order. Shopify cannot represent an order that is paid, fulfilled, and cancelled at the same time.
This is informational; the order was cancelled as requested
The order shows as unfulfilled because its fulfillments were cancelled; tracking details remain visible on the cancelled fulfillments in the order's timeline
Orders that are fulfilled but not paid can be cancelled without this step and keep their fulfillments
ORD035 - Refund Transaction Skipped Without Kind or Amount
The order has a refund row where both Transaction: Kind and Transaction: Amount are blank, but another Transaction: column (usually Transaction: Gateway) has a value. Shopify requires the kind and amount on every refund transaction, so the app skipped the transaction and imported the refund without it.
The refund itself was still created and records the returned items; only the payment transaction was left out
This is usually the right outcome for zero-value returns where no money moved; to avoid the message, leave all
Transaction:columns blank on those rowsIf money was refunded on the row, set
Transaction: Kindtorefundand fill inTransaction: Amount, then re-import with MERGE
ORD036 - Refund Transaction Missing Amount
The order has a refund row where a Transaction: column such as Transaction: Currency is filled in, but Transaction: Amount is blank. A refund transaction can't be created without an amount, so the transaction was not imported.
The refund itself may still have been created for the returned items, but without the payment transaction, so the refunded amount is missing from the order's financial records
Fill in
Transaction: Amounton the row and re-import with MERGEIf no money was refunded, leave all
Transaction:columns blank on the row instead
ORD037 - Discounts Ignored on Existing Order
The row updates an existing order but includes discount data, either a Discount row or Line: Discount values. Shopify only applies discounts when an order is created and has no way to add or change a discount on an existing order, so the discount was skipped.
To apply the discount, re-import the order with the REPLACE command, which deletes and re-creates the order, or delete the order in Shopify first and import it again
Shopify doesn't support per-line discounts on imported orders: the discount is applied as one order-level discount that Shopify spreads across the line items
ORD038 - Fulfillment Service Not Found on Store
The Line: Fulfillment Service value doesn't match any fulfillment service registered on this store, so the line item was assigned Shopify's default manual fulfillment service instead. The rest of the order, including its fulfillments and tracking information, is imported normally.
This usually happens when importing orders exported from a different store: fulfillment services belong to a specific store, so the source store's services don't exist on the destination store
The manual fallback only affects which service the line item is associated with; tracking numbers and fulfillment statuses come from the
Fulfillment:columns and are unaffectedTo keep a third-party fulfillment service assignment, install and set up that fulfillment service on the destination store before importing, or clear the
Line: Fulfillment Servicecolumn to accept the manual service without warnings
ORD039 - Shopify Source Value Skipped
The Source value is one of Shopify's own channel values (web, pos, iphone, android, shopify_draft_order, checkout_one, checkout_next). Shopify doesn't allow apps to set these protected values when creating an order, and sending one makes the whole order fail, so the value was skipped and the order was created without it.
These values appear in files exported from Shopify, so this warning is common when copying orders between stores
The order itself is imported normally; only the source value is left unset
To keep channel information on the order, use a custom
Sourcevalue that isn't in the protected list, or add a tag and filter the order list by tag
ORD040 - Refund Transaction Generated by Default
The file has Refund Line or Refund Shipping rows for this refund but no Transaction row linked to the same Refund: ID, and the Refund: Generate Transaction column is missing or blank. The app treats a missing value as TRUE, the same as Matrixify, so it generated the refund's payment transaction from Shopify's suggested refund for the refunded lines: the unit price times the refunded quantity, plus the tax on those units, plus any refunded shipping. The transaction uses the gateway of the original payment and is linked to it as its parent.
This is an informational message; the refund and the transaction were created as described
To record a refund without returning any money, add the
Refund: Generate Transactioncolumn and set it toFALSETo refund a different amount, add a
Transactionrow with the sameRefund: ID,Transaction: Kindset torefund, and the amount inTransaction: Amount(see How to bulk partially refund Shopify orders for a specific amount)Explicitly setting the column to
TRUEgenerates the transaction in the same way without this message
ORD041 - Refund Transaction Not Generated
Refund: Generate Transaction was TRUE (or missing) for a refund with no Transaction row, but Shopify couldn't suggest a payment transaction for it, so the refund was created with its refund lines only and no money was returned. The message names the order and the reason. The message is only shown when the refund was created.
Common reasons:
The order has no successful payment to refund against, for example an order that was imported as pending or unpaid
The refunded lines have already been refunded in full, so nothing is left to refund
Shopify returned an error for the suggested refund lookup
To return money on this order, check the order in the Shopify admin and, if it still has a refundable balance, import a Transaction row with the same Refund: ID, Transaction: Kind set to refund, and the amount in Transaction: Amount.
ORD042 - Fulfillment Line Doesn't Match a Line Item
A Fulfillment Line row couldn't be tied to exactly one line item of the order: it matches no line item, or more than one.
On a new order, the order is created without that fulfillment, also when its other rows matched. Fix the row and add the fulfillment with an update
On an existing order, only that row is skipped. The rest of the fulfillment is still created if its other rows matched
Set
Line: IDon theFulfillment Linerow to the ID of the line item it fulfills. An export of the order shows this in theLine: IDcolumnIf
Line: IDis blank, the app matches on theLine: SKU,Line: Title, andLine: Variant Titlevalues the row has, and they must match the line item exactly. A row with none of them (for example onlyLine: Quantity) matches nothingWhen two line items have the same SKU and title, add
Line: Priceto the row to say which one it fulfillsEach line item is matched at most once per import, so two
Fulfillment Linerows for the same item needLine: IDto tell them apart
ORD043 - Amount Missing in One Currency
The order's Currency (what the customer paid) is different from its Shop Currency, but an amount is only in one of the two currencies, so the order wasn't created. The app doesn't convert between currencies, because it can't know the exchange rate the order was placed at. The message lists every missing column.
Each amount column (for example
Line: Price) holds the amount in the order currency, and its twin with(Shop Currency)at the end (for exampleLine: Price (Shop Currency)) holds the same amount in the shop currency. Fill in both for line items, shipping lines, transactions, fixed amount discounts, and taxesA refund
Transactionrow only needsTransaction: Amount, in the order currency. ItsTransaction: Amount (Shop Currency)is ignored, because Shopify converts the refund with its own exchange rate. WhenTransaction: Amountis blank on an order in two currencies, the message is"Transaction: Amount" is required in Order currencyA blank or missing
Shop Currencycolumn means the store's currency. An older file whereCurrencyheld the shop currency of an order in another currency needs aShop Currencycolumn with that same currencyFor an order in one currency, set
CurrencyandShop Currencyto the same value (or leaveShop Currencyblank for the store's currency). Then only the amount columns are neededWith the
REPLACEcommand the existing order is kept, because the new one can't be created
ORD044 - Transaction Currency Isn't the Order Currency
A transaction row has a Transaction: Currency that is different from the order's Currency. Shopify only accepts transactions in the order currency, so the amount in Transaction: Amount was imported as an amount in the order currency. Check the order's payment status after the import. If the amount was in another currency, convert it to the order currency in the file and import the order again.
When the order has one currency and the row has a Transaction: Amount (Shop Currency) value, that value is imported as the amount instead, because it is already in the order currency. Files exported before September 28, 2026 have this shape for orders that the customer paid in another currency.
ORD050 - Order Line Items Edited
The import changed the line items of an existing order. The message counts the line items that were added (rows that aren't on the order, see ORD080), updated (a higher Line: Quantity), and deleted (Line: Command set to DELETE). For example: Order Edit: added [1] Line Items, updated [0], deleted [1].
All the changes for one order are saved together as one order edit in Shopify, and the order timeline shows them. The customer isn't notified. This message is for information only.
ORD051 - Line Item Quantity Not Decreased
The Line: Quantity value is lower than the quantity of the existing line item, so the quantity wasn't changed. Shopify reduces the quantity of an existing line item through a refund, not an edit.
To reduce the quantity, add a
Refund Linerow for the line item with the quantity to remove. See RefundsTo remove the whole line item, set
Line: CommandtoDELETEon its rowTo leave the line item as it is, clear
Line: Quantityor set it to the current quantity
ORD052 - Line Item Row Matches More Than One Line Item
The row has no Line: ID, and its Line: Title, Line: Variant ID, or Line: SKU (on a Line: Command DELETE row: its Line: Variant ID or Line: SKU) matches more than one line item on the order, so the app can't tell which line item to change. The row was skipped and the other rows were imported. A row that matches more than one line item isn't added.
Set
Line: IDon the row to the ID of the line item to change. An export of the order shows it in theLine: IDcolumn
ORD053 - Customer Email Not Changed
The row has a Customer: ID and a Customer: Email that belongs to a different customer, or that is different from the email of that customer. The order is linked to the customer with the Customer: ID, and the email in the file is ignored.
An order import can't change a customer's email. To change it, import the customer with a customers import
To link the order to the customer with that email, remove the
Customer: IDvalue from the row
ORD054 - New Customer Created
No customer on the store has the Customer: Email from the row, so the app created a new customer with that email and linked the order to it. The new customer also gets the name, phone, and address from the row's Customer: columns. This message is for information only.
ORD055 - Order Customer Not Changed
The row asks to change the order's customer, but no customer on the store matches the Customer: ID or Customer: Phone value, so the order keeps its current customer. The rest of the row was imported.
Check that the
Customer: IDbelongs to a customer on this store. IDs from another store don't matchTo find the customer by email, or to create a new customer, add the
Customer: EmailcolumnTo remove the customer from the order, leave
Customer: IDblank, with noCustomer: EmailorCustomer: Phonevalue on the row
ORD056 - Unknown Line Command
A row has a Line: Command value that isn't DEFAULT, MERGE, or DELETE (for example a typo like DELTE). The order wasn't created or changed, so that the line items aren't left in a state you didn't ask for.
Correct the value and import the order again. Values are case-insensitive
Leave the cell blank to keep the line item as it is
ORD057 - Custom Line Item Can't Be Added to a Multi-Currency Order
The row adds a custom line item (a row that isn't on the order, with no product) to an order in two currencies: the order's Currency, which the customer paid in, differs from its Shop Currency. Shopify prices a new custom line item in the order currency and sets the shop currency amount with its own exchange rate, and the app doesn't convert between currencies. The order wasn't changed. The message has the same wording as Matrixify, for example Currency must be EUR.
To add a product, use
Line: SKUorLine: Variant IDinstead. Shopify adds it at the product's price in both currenciesTo add the custom line item with your own amounts in both currencies, create the order again: import it with the
REPLACEcommand, withLine: PriceandLine: Price (Shop Currency)on each line item row. This deletes the order and creates a new one
ORD058 - Unknown Fulfillment Status
A row has a Fulfillment: Status value that can't be imported. The order wasn't created or changed, so that it isn't marked as fulfilled when you didn't ask for it.
An import can create a fulfillment with one of these values (case-insensitive):
successcreates the fulfillment. A blank cell does the samecancelledcreates the fulfillment and cancels it. With aFulfillment: IDof an existing fulfillment, it cancels that fulfillmenterrorandfailureskip the fulfillment (see ORD059)
Shopify no longer supports open and pending for fulfillments, so they also fail the order.
This often happens when the file has a Fulfillment Status column with the order's status, for example unfulfilled or partial from a Shopify export. The app reads that header as Fulfillment: Status. To set the status of the whole order, rename the column to Order Fulfillment Status. To leave the order unfulfilled, remove the column.
ORD059 - Fulfillment Skipped
A row has Fulfillment: Status set to error or failure. Shopify can't create a fulfillment in that state, so the app skipped the fulfillment and imported the rest of the order.
To fulfill the items, set
Fulfillment: Statustosuccessand import the order again
ORD060 - Fulfillment Cells Ignored
A Line Item row has Fulfillment: cells, for example Fulfillment: Tracking Number or Fulfillment: Location, but Fulfillment: ID and Fulfillment: Status are both empty. The app didn't fulfill the line item and imported the rest of the order.
When an order has no Fulfillment Line rows, the app fulfills a line item from its own row only when Fulfillment: ID or Fulfillment: Status has a value. This stops a row with only tracking details, or only Fulfillment: Send Receipt, from fulfilling the order by accident.
To fulfill the line item, set
Fulfillment: Statustosuccesson its row and import the file againTo fulfill only part of the quantity, or to group line items into several fulfillments, use
Fulfillment Linerows instead
ORD062 - Refund Already Exists
An UPDATE or MERGE row group describes a refund that the order has already, so the app skipped it and didn't refund the customer again. The rest of the order was updated as usual. This is the same as Matrixify. A refund is skipped when:
Its
Refund: IDis the ID of a refund of this order, as in an export of the order. The rows under that ID aren't compared, so a changed quantity or amount under an existingRefund: IDis also skippedIt is an exact copy of a refund of this order with another
Refund: ID: it has aRefund Linerow and aTransactionrow, and theTransactionrow has the same amount and the same time (to the second) as the existing refund. The time comes fromRefund: Created AtorTransaction: Processed Aton theTransactionrow
To add another refund to the order, give it a Refund: ID that isn't a refund of this order (for example 1), and leave out Refund: Created At and Transaction: Processed At. A refund without these times is always created, so importing the same refund file twice refunds twice.
ORD063 - Refund Currency Isn't the Order Currency
A refund Transaction row has a Transaction: Currency that isn't the order's currency (the currency the customer paid in). Shopify only refunds in the order currency, and the app doesn't convert amounts, so the order wasn't changed and no refund was created.
Put the refund amount in the order currency in
Transaction: Amount, and setTransaction: Currencyto the order currency or leave it blankAn export of the order shows its currency in the
Currencycolumn
ORD064 - Refund Shipping Needs a Transaction Row
A Refund Shipping row is for an order in two currencies (its Currency is different from its Shop Currency), and the refund has no Transaction row. Shopify can't work out the amount to return for shipping on such an order, so the order wasn't changed and no refund was created. Matrixify fails these rows too.
To refund the shipping, add a Transaction row with the same Refund: ID, Transaction: Kind set to refund, and the amount in the order currency in Transaction: Amount. To record the shipping refund without returning money, set Refund: Generate Transaction to FALSE.
ORD065 - Refund More Than the Amount Paid
The refund Transaction rows of an existing order add up to more than the order has left to refund: its successful payments minus the refunds it has already. The message shows both amounts in the order currency. The order wasn't changed and no refund was created.
Check the amounts in
Transaction: Amount. They are in the order currency, not the shop currencyCheck the order in the Shopify admin. A refund of the same order that is already there counts against the amount left
ORD067 - Shipping Line Price Missing
A Line Item row has values in Shipping Line: columns, but Shipping Line: Price is empty, so the order wasn't created. The message is: "Shipping Line: Price" is required to create a Shipping Line.
Add the shipping price to
Shipping Line: Price. Use0for free shippingThe app reads the
Shipping Line:columns from one row only: the first Line Item row of the order that has a value in any of them. Values on other rows aren't added to it, so put the title, price, and tax of the shipping line on the same rowWhen
Currencydiffers fromShop Currency, the order currency amount goes inShipping Line: Price, and the shop currency amount inShipping Line: Price (Shop Currency). A shop currency amount alone isn't enoughWith the
REPLACEcommand the existing order is kept, because the new one can't be created
ORD068 - Shipping Line Value Isn't a Valid Number
A Shipping Line: column that holds a number has a value that isn't a valid number, or a shipping price that is negative, so the order wasn't created. The message names the column and the value, for example "Shipping Line: Price" [-5.00] can't be negative.
Shipping Line: Price,Shipping Line: Price (Shop Currency), andShipping Line: Tax Ratemust be0or moreShipping Line: Tax PriceandShipping Line: Tax Price (Shop Currency)must be numbersUse a period or a comma as the decimal separator, without a currency symbol
Matrixify imports a negative shipping price as a positive charge. The app fails the order instead, so that the customer isn't charged for shipping by mistake.
ORD069 - Shipping Line Title Missing
A Line Item row has a Shipping Line: Price with a Shipping Line: Code or Shipping Line: Source, but Shipping Line: Title is empty. Shopify needs a title for every shipping line, so the order wasn't created.
Add the name of the shipping method to
Shipping Line: Title, for exampleStandard
When the row has only a Shipping Line: Price (no title, code, or source), the order is created without the shipping line and the app shows ORD071.
ORD070 - Shipping Line Tax Title or Rate Missing
A Line Item row has a shipping tax value, but Shipping Line: Tax Title or Shipping Line: Tax Rate is empty, so the order wasn't created. The message names the empty columns.
Fill in
Shipping Line: Tax Title(for exampleVAT) andShipping Line: Tax Rate(for example0.21for 21%)Shipping Line: Tax Priceis the tax amount. When it's empty, the shipping line gets a tax line of0.00The shipping tax line is imported as not channel liable
ORD071 - Shipping Line Values Ignored
The file has values in Shipping Line: columns that weren't imported. The rest of the order was imported. The message names the columns and values that were ignored. This happens when:
A later Line Item row of the order has other
Shipping Line:values. Only the first Line Item row with a value in anyShipping Line:column adds a shipping line. To add a second shipping line, add a row withLine: Typeset toShipping LineThe values are on a row that isn't a Line Item row, for example a
TransactionorShipping Linerow. Move them to a Line Item row of the orderThe row has a
Shipping Line: Pricebut noShipping Line: Title,Shipping Line: Code, orShipping Line: Source. The order was created without the shipping line. Add aShipping Line: Titleand import the order again with theREPLACEcommandThe row updates an existing order (the
UPDATEorMERGEcommand). TheShipping Line:columns only add a shipping line when an order is created. To add the shipping line, import the order with theREPLACEcommand. This deletes the order and creates it again
Matrixify ignores the same values without a message.
ORD072 - Tax Lines Left Out of the Export
An order has more tax lines than the export has Tax columns, so its last tax lines aren't in the file. The export finds the number of tax columns from the newest and the oldest orders before it writes the first row. An order with more tax lines in between can have more than that number.
Export the order again with a filter that selects it, for example on
Name. The export then has a column for each of its tax linesAn export has at most 100 tax lines per order, and at most 10 in the order format from before September 28, 2026
ORD073 - Restock Columns Ignored on a Deleted Line Item
A Line Item row with Line: Command set to DELETE also has Refund: Restock TRUE, a Refund: Restock Type, or a Refund: Restock Location. The app deleted the line item and ignored these columns.
When you delete a line item from an existing order, Shopify doesn't restock its units: the stock is written off. The committed and on hand quantities go down, and the available quantity doesn't change. Matrixify does the same.
To give the units back to stock, add a
Refund Linerow for the line item withRefund: Restockset toTRUEinstead of theDELETE. See RefundsTo delete the line item without a restock, remove the restock columns from the row
ORD074 - Inventory Behaviour Ignored on an Existing Order
The row updates an existing order and has an Inventory Behaviour value other than bypass. Shopify uses the inventory behaviour only when it creates an order, so the value was ignored and the rest of the row was imported. bypass (the value in every export) gives no warning.
A line item that you add to an existing order (Line: Command set to MERGE) or a higher Line: Quantity always takes the units from stock.
To stop the warning, clear
Inventory Behaviouron update rowsTo create the order again with another inventory behaviour, import it with the
REPLACEcommand. This deletes the order and creates a new one
ORD075 - Fulfilled Line Item Can't Be Deleted
A Line Item row with Line: Command set to DELETE points to a line item whose units are all fulfilled (or already refunded). Shopify can only remove unfulfilled units from an order, so the line item wasn't changed. When the row has no other line item changes, the row fails. When it has other changes, they are imported and the row gets a warning.
A line item that is only partly fulfilled can be deleted: its unfulfilled units are removed and its fulfilled units stay on the order.
To take back fulfilled units, add a
Refund Linerow for the line item. To put the units back in stock, setRefund: RestocktoTRUE. See Refunds
ORD076 - Restock Type Needed for a Partly Fulfilled Line Item
A Refund Line row has Refund: Restock set to TRUE and no Refund: Restock Type, and its line item has both fulfilled and unfulfilled units. The refund takes only some of the units, so the app can't tell which units to restock. The row failed and nothing was refunded.
Without a type, the app restocks like Matrixify: CANCEL when the line item has only unfulfilled units, RETURN when it has only fulfilled units, and both when the refund takes all the units.
Set
Refund: Restock TypetoRETURNto restock fulfilled units, or toCANCELto restock unfulfilled unitsTo restock both kinds, use two
Refund Linerows for the line item, one with each type
ORD077 - No Line Item Row
The app can't create the order, because the order has no Line Item row. Shopify needs at least one line item to create an order.
A row is a Line Item row when its Line: Type is Line Item. When the file has no Line: Type column, no row is a Line Item row, so every new order in the file fails with this error.
Add the
Line: Typecolumn and set it toLine Itemon the rows with the products of the order. FillLine: Title,Line: Quantity, andLine: Priceon those rowsTo update an existing order without changing its line items, use the
UPDATEcommand. An update doesn't need aLine Itemrow
ORD080 - Line Item Added to the Order
The row is a Line Item row with a blank or DEFAULT Line: Command on an existing order (order Command set to UPDATE or MERGE), and no line item on the order matches it. The app added it to the order, like a row with Line: Command set to MERGE. The message names the line item, for example Line Item [Gift wrap] is not on the order, so it was added.
The app looks for the line item by Line: ID, then by Line: Title (not case-sensitive, the price doesn't matter), and then by Line: Variant ID or Line: SKU. The added line item raises the order total, so the order shows a balance to collect. A product line item also commits stock. The customer isn't notified.
If the line item is already on the order under another title, set
Line: IDon the row to its ID. An export of the order shows it in theLine: IDcolumn. A changed title in the file doesn't rename the line itemTo leave the line items of an order as they are, remove the
Line Itemrows from the file, or remove theLine:columns
ORD081 - Line Quantity Missing for a New Line Item
A Line Item row adds a line item to an existing order (order Command set to UPDATE or MERGE, and no line item on the order matches the row), but Line: Quantity is empty. The whole order failed and wasn't changed. The message has the same wording as Matrixify, for example "Line: Quantity" must be provided for Line Item [Gift wrap, 3.0, USD].
To add the line item, set
Line: Quantityand import the file againIf the row is for a line item that is already on the order, set
Line: IDon the row to its ID. An export of the order shows it in theLine: IDcolumn
ORD082 - Line Price Missing for a New Custom Line Item
A Line Item row adds a custom line item to an existing order: no line item on the order matches the row, no product matches its Line: SKU, Line: Variant ID, or Line: Product Handle, and Line: Price is empty. This applies to every Line: Command value, also MERGE. The whole order failed and wasn't changed, so no line item is added at 0.00. The message has the same wording as Matrixify, for example "Line: Price" must be provided for Line Item [Gift wrap, 1], or linked to a Product Variant.
To add a custom line item, set
Line: Priceand import the file again. Use0for a free line itemTo add a product, check that
Line: SKUorLine: Variant IDbelongs to a product on the storeIf the row is for a line item that is already on the order, set
Line: IDon the row to its ID
ORD083 - Line Item Not Added Because the Command Is Blank
A Line Item row with a blank or DEFAULT Line: Command matches no line item on an existing order, and the order Command is blank. The app didn't add the line item, and it imported the rest of the order. The message names the line item, for example Line Item [Gift wrap] is not on the order and wasn't added, because the order Command is blank. Set Command to MERGE or UPDATE to add it.
A blank Command updates an order that already has the same name. When no row matches a line item of that order, the file often reuses the name of another order, for example an order number from another system. Adding the rows would put the items of one order on a different order, so the app only adds them when you ask for it.
Check that the order name in the file belongs to the order on the store. If it belongs to a different order, give the order in the file a new name
To add the line item to the existing order, set
CommandtoMERGEorUPDATE, or setLine: CommandtoMERGEon the row
ORD084 - Order Name Reused for Another Customer's Order
An order with a blank Command was found by its Name, but the customer in the file (Customer: ID, Customer: Email, Customer: Phone, or Email) is not the customer of that order, and none of the file's Line Item rows matches a line item of the order. The app didn't update the order. The message names the order, for example Order [#1001] exists for another customer and none of its line items match this file, so it was not updated. Set Command to UPDATE or MERGE to change the existing order, or use another Name to create a new order.
A blank Command is MERGE, so an order in the file that has the same name as an order on the store updates that order. When the customer and the line items both differ, the file almost always reuses an order number from another system for a new order of another customer. Updating would move the existing order to the other customer and replace its addresses. Matrixify treats a blank order Command as NEW and fails such rows too.
If the order in the file is a new order, give it a name that isn't on the store yet, or leave
Nameblank so Shopify assigns the next numberIf you do want to change the existing order, set
CommandtoUPDATEorMERGE
ORD085 - Command Is NEW but the Order Already Exists
The Command is NEW, but an order with the same ID or Name is already on the store. The rows of that order fail and nothing changes, like in Matrixify.
To change the existing order, set
CommandtoUPDATEorMERGETo create a new order, give it another
Name, or leaveNameblank so Shopify assigns the next numberTo skip orders that already exist without a failure, set
CommandtoIGNOREon those rows
ORD086 - Billing Address Can't Be Changed
The row updates an existing order, and at least one Billing: value is different from the billing address of the order. Shopify doesn't let apps change the billing address of an existing order, so the billing address stays as it is. The rest of the row is imported.
Blank Billing: cells, and values that are the same as the order's, give no warning. A province or country can be a name or a code, and case and extra spaces don't matter, so the re-import of an export stays quiet.
To keep the order and its billing address, remove the
Billing:columns or make them match the orderTo change the billing address, re-create the order with
Commandset toREPLACE
ORD087 - New Order Not Cancelled Without Cancelled At
A new order had Cancel: Reason, Cancel: Refund, or Cancel: Restock set, but Cancelled At was blank, so the order was created and not cancelled. Like in Matrixify, only a Cancelled At value cancels a new order.
To create the order as cancelled, set
Cancelled Atto any date (Shopify uses the time of the import)On an existing order (
UPDATEorMERGE),Cancel: Reasonalone still cancels the order
ORD088 - Order Has Nothing Outstanding
A Transaction row with the kind sale was not added to the existing order, because the order has nothing left to pay (it is paid, or paid more than its total). This keeps a file that is imported a second time from paying the same orders twice.
If the order really got another payment, check the order total first: add the line items that the payment is for, then import the transaction
A row with a
Transaction: IDthat is already on the order is skipped without this warning
ORD089 - Transaction Amount More Than What Is Left
The Transaction: Amount of a sale is more than the outstanding amount of the existing order, or the amount of a capture is more than the amount left on the authorization. The app added only the outstanding (or remaining authorized) amount, so the order is not paid more than its total.
Check the amount in the file and the order total in the Shopify admin
ORD090 - Transaction Not Added to the Existing Order
A Transaction row of an existing order was skipped. The message says why:
Transaction: Kindis blank, or is a kind that can't be added to an existing order (authorization, or arefundwithoutRefund Linerows). To refund, useRefund Linerows with aRefund: ID.Transaction: Statusis notsuccess(for examplependingorfailure). Only a successful payment is added.Transaction: Amountis blank andTransaction: Statusis blank. Set the amount, or set the status tosuccessto pay the outstanding amount.Transaction: Currencyis not the currency of the order.Shopify didn't add a payment smaller than the outstanding amount. Shopify allows a partial payment only on Shopify Plus stores. A payment of the full outstanding amount works on every plan.
ORD091 - Authorization Not Captured or Voided
A capture or void row of an existing order was skipped. The message says why:
The order has no open authorization (it is captured or voided already).
The order has more than one open authorization. Set
Transaction: Parent IDto the ID of the authorization.The authorization is from a real payment gateway. A capture takes the customer's money, so set
Transaction: Force GatewaytoTRUEto capture or void it.Shopify refused the capture or the void. The message shows Shopify's reason.
ORD092 - Order Email Not Changed After a Customer Switch
The order's customer was changed to the customer in the file, but Shopify didn't accept that customer's email as the order's email, so the order keeps its old email. The message shows the email and Shopify's reason, for example Email contains an invalid domain name. Shopify accepts some emails on a customer that it refuses on an order.
Check the customer's email in Shopify. If it is wrong, correct it on the customer and import the row again
To set a different order email, add an
Emailcolumn with the email you want
ORD093 - Line Item Not Linked to a Product Variant
The line's Line: Product Handle or Line: Product ID found a product, but none of its variants matches the line, and the product has more than one variant. The line was imported as a custom line item without a link to the product. A variant of another product with the same SKU isn't used, because the product column names the product.
A line is linked to a variant of the product when one of these matches, in this order: Line: Variant ID, Line: SKU (or Line: Variant SKU), Line: Variant Title. When the product has only one variant, the line is linked to it even when the SKU is different.
Correct
Line: SKUorLine: Variant Titleso it matches one of the product's variants, or addLine: Variant IDIf the line belongs to another product, correct
Line: Product Handleor clear it, so the line is matched by SKU across the store
ORD094 - Discount Type Assumed as fixed_amount
The Line: Title of a Discount row is not one of the discount types fixed_amount, percentage, or shipping, so the discount was imported as a fixed_amount discount. The discount code is the Line: Name value, and the amount is the Line: Discount value. Files often have the discount code in Line: Title by mistake. A blank Line: Title is also read as fixed_amount, without this warning.
If the discount is a fixed amount, set
Line: Titletofixed_amountand put the discount code inLine: NameFor a percentage discount, set
Line: Titletopercentageand put the percent inLine: Price
ORD095 - Discount Amount Missing
The order was not created, because a Discount row of the type fixed_amount has no Line: Discount amount. This includes a row with a blank or unknown Line: Title, which is read as fixed_amount (see ORD094). The order is not created without its discount, so it doesn't get the full price.
A row without an amount is accepted when the line items have Line: Discount values: the line discounts are then added up and imported under the row's code.
Add the discount amount in
Line: Discount, for example-15.00For a percentage discount, set
Line: Titletopercentageand put the percent inLine: PriceFor free shipping, set
Line: TitletoshippingIf the order has no discount, remove the
Discountrow
ORD096 - Shipping Discount Imported as Free Shipping
A Discount row with the type shipping has a Line: Discount amount that is not the shipping price of the order. Shopify can import a shipping discount only as free shipping, so the whole shipping of the order was discounted and the amount in the file was not used. The order was created.
If the order really had free shipping, you can ignore this warning
If only part of the shipping was discounted, lower the
Line: Priceof theShipping Linerow by the discount instead and remove theDiscountrow
ORD097 - Discount Lines of More Than One Type
The order was not created, because its Discount rows have more than one type, for example shipping and fixed_amount. Shopify allows only one discount type per order. A blank or unknown Line: Title counts as fixed_amount (see ORD094).
Keep the
Discountrows of one type and remove the othersTo combine a shipping discount with another discount, lower the
Line: Priceof theShipping Linerow instead of using ashippingrow
Draft Order Codes
Error and warning codes that occur when dealing with draft order imports and operations.
DRFT001 - Draft Orders Import Not Yet Available
We're still working on importing draft orders. Please email us if you need more information about when this feature will be available or if you have specific requirements for draft order imports.
DRFT002 - Unable to Find Draft Order to Delete
The draft order you are trying to delete cannot be found in your Shopify store. This may be because it was already deleted or because the identifier (ID or name) provided in your import is incorrect.
DRFT003 - Shopify API Refused to Save Draft Order
The Shopify API rejected the draft order data and refused to save it during a creation operation. This typically occurs when the draft order configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level.
DRFT004 - Draft Order is Completed - Only Tags Can Be Updated
You are trying to update a draft order that has already been completed (converted to a real order). Completed draft orders are locked and only their tags can be modified. Other changes require creating a new draft order.
DRFT005 - Shopify API Refused to Update Draft Order
The Shopify API rejected the draft order data and refused to update it. This typically occurs when the updated draft order configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level.
DRFT006 - Invalid Email Format
The email address provided for the draft order is not in a valid format. Email addresses must follow the standard email format (e.g., [email protected]). Please check the email field and ensure it contains a properly formatted email address.
DRFT007 - Invalid Date Format for Reserve Inventory Until
The date format provided for the 'Reserve Inventory Until' field is invalid. Expected format is YYYY-MM-DD HH:MM:SS or YYYY-MM-DD. Please ensure your date values match one of these formats.
DRFT008 - Company Link Could Not Be Resolved
Altera could not link the draft order to a B2B company location. This happens when the Company: columns reference a company, location, or customer that doesn't exist on the store, when the location belongs to a different company than the one specified, or when a Company: column is set without a corresponding Company: Location value. Make sure the company and location identifiers exactly match an existing record in Shopify and that the row also sets Customer: ID or Customer: Email.
DRFT009 - Could Not Resolve Company Contact
The draft order specifies a company location, but the customer is not a contact of that company and could not be added automatically. Add the customer as a contact of the company in Shopify admin (or in the same import via the Companies sheet) before importing draft orders that reference this company.
DRFT010 - Invalid Email Format
A value in the Email column of a draft orders file does not look like an email address. The message includes the row number and the value that was found. Correct the value so it contains an @ and a domain, or leave the cell blank, and upload the file again.
DRFT011 - Invalid Customer Email Format
A value in the Customer: Email column of a draft orders file does not look like an email address. The message includes the row number and the value that was found. Correct the value so it contains an @ and a domain, or leave the cell blank, and upload the file again.
DRFT012 - Line Quantity or Price Must Be a Number
A value in the Line: Quantity or Line: Price column of a draft orders file is not a number. The message names the column, the row, and the value that was found. Remove any currency symbols or text from the cell so it contains only a number, and upload the file again.
DRFT013 - Invalid Date/Time Value
A value in the Reserve Inventory Until, Created At, or Updated At column of a draft orders file could not be read as a date and time. The message names the column, the row, and the value that was found. Use a format like 2024-12-05 06:12:35 -0500 (ISO-formatted timestamps are also supported), or leave the cell blank, and upload the file again.
Inventory Transfer Codes
Error and warning codes that occur when dealing with inventory transfer imports and operations.
TRFR001 - Unable to Resolve Line Item
An inventory transfer line item could not be matched to a product variant. This happens when the SKU, barcode, or inventory item ID provided doesn't match any variant in your store, or when the quantity is missing or zero. Check that your SKUs match exactly and that the quantity is greater than zero.
TRFR002 - Inventory Transfer Not Found for UPDATE
The UPDATE command was used, but no inventory transfer with the provided ID could be found in your Shopify store. Either use MERGE to create the transfer if it doesn't exist, or verify the ID in your file matches an existing transfer.
TRFR003 - Invalid Inventory Transfer Status Transition
The Status value in the import file is either unknown or represents a transition that is not allowed from the transfer's current state. Valid statuses are Draft, Ready to Ship, In Progress, Received, and Cancelled. Note that In Progress and Received are only reached by creating and receiving shipments - they cannot be set directly. Transfers cannot be moved back to Draft, and a received transfer cannot be cancelled.
TRFR004 - Shipment Not Found on Transfer
A row referenced a shipment that doesn't exist on the transfer (either by ID or because DELETE was used without a valid ID). Leave the Shipment N: ID column blank to create a new shipment, or use the ID of a shipment that already exists on the transfer.
TRFR005 - Conflicting Shipment Column Prefixes
The import file contains both Shipment: (single shipment) and Shipment 1: (numbered shipments) column prefixes in the same sheet. Pick one convention and use it consistently. Use Shipment: when every transfer has exactly one shipment, or Shipment 1:, Shipment 2:, etc. when transfers may have multiple shipments.
TRFR006 - Transfer Location Not Found
The origin or destination location specified for the inventory transfer could not be found in your Shopify store. Verify that the location name or ID in your import file matches an existing location. Leave blank for external suppliers or shipments.
TRFR007 - Origin and Destination Can Only Be Changed for Draft Transfers
You tried to change the Origin Location or Destination Location on an inventory transfer that is no longer in DRAFT status. Shopify only allows origin and destination to be changed while the transfer is in the Draft state. Either clear the location column to leave it unchanged, or cancel and recreate the transfer.
TRFR008 - Shopify API Refused to Save Inventory Transfer
The Shopify API rejected the inventory transfer data and refused to create it. This typically occurs when the transfer configuration violates Shopify's business rules or contains invalid data. Check the error message returned by the API for specific details.
TRFR009 - Shopify API Refused to Save Inventory Shipment
The Shopify API refused to create or update an inventory shipment on this transfer. This usually means the shipment input violates a business rule (for example, the transfer isn't in a shippable state or the shipment has no line items). Check the surrounding error message for the specific reason.
TRFR012 - Inventory Transfer Already Exists
The NEW command was used for an inventory transfer that already exists in your Shopify store. Use MERGE to update an existing transfer (once updates are supported), or remove the ID column to create a new transfer.
TRFR014 - Inventory Transfer REPLACE Not Yet Supported
The REPLACE command is not yet supported for inventory transfers and will be available in a future release. Use NEW or MERGE to create new transfers.
TRFR015 - Invalid Date Created
The value provided for the Date Created field is not a valid date. Expected format is YYYY-MM-DD HH:MM:SS or an ISO 8601 timestamp. Please check the date value and ensure it matches one of these formats.
TRFR017 - Inventory Item Does Not Track Inventory
One or more line items reference a variant that has inventory tracking disabled. Shopify only allows inventory transfers for tracked variants. Enable inventory tracking on the variant in Shopify admin (or via a product import) before including it in a transfer.
TRFR018 - Inventory Item Not Stocked at Origin or Destination
A line item on the inventory transfer references a variant that Shopify considers "not stocked" at one of the transfer's locations. Shopify surfaces a single error message for this, but in practice it can be triggered by either end of the transfer:
Origin not stocked - the item has never been activated at the origin location, so there is no inventory level to draw from. Stock the item at the origin (for example with a product or inventory import) before including it in the transfer.
Destination not stocked - the origin has stock, but the destination location has never had an inventory level activated for this item. Shopify requires an active inventory level at the destination before a shipment can move from Draft or Ready to Ship into In Transit. Activate the item at the destination (an inventory import with quantity
0is enough) and retry.
If you see this error when creating or marking a shipment as In Transit and the origin clearly has stock, the destination is almost always the real cause.
TRFR019 - Invalid Shipment Status Transition
The Shipment N: Status value is either unknown or represents a transition that isn't allowed from the shipment's current state. Valid statuses are Draft, In Transit, Partially Received, and Received. Shipments can move Draft to In Transit to Received, but cannot be sent back to an earlier state.
TRFR020 - Shipment Has No Line Items
A new shipment was requested but the transfer has no remaining shippable quantities for any of its line items. Either add more line items to the transfer, or avoid creating additional shipments until line items with remaining quantity are available.
TRFR021 - Ambiguous SKU or Barcode
A line item's SKU or barcode matched more than one variant in your store, so the importer cannot decide which inventory item to transfer. Shopify treats inventory transfers as strict on this point - duplicate SKUs are rejected rather than guessed. Make the SKU or barcode unique across your catalog (or scope it to the correct variant) and re-run the import.
TRFR022 - No Line Items Could Be Resolved
The row included line items but none of them matched a variant in your store by SKU or barcode. Rather than create or update the transfer with the wrong line items (or with none at all), the row is rejected. Check the accompanying TRFR001 warnings to see which SKUs or barcodes failed, correct them, and re-run the import.
