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.
Customer Codes
Error and warning codes that occur when dealing with customer imports and operations.
CSTM004 - Invalid Store Credit Expiry with Non-Zero Balance
You are trying to set a specific Store Credit Amount with an expiration date, but the customer already has a non-zero store credit balance.
When using the 'Store Credit: Amount' column, the system creates a transaction for the difference between the current balance and the target amount. If you provide an expiration date, it would only apply to this adjustment transaction, not the entire balance. This would result in different parts of the balance having different expiration dates, which is not the intended behavior when setting a total amount.
To resolve this, you can:
Use the 'Store Credit: Adjust' column instead if you want to add credit with an expiration date.
Or first zero out the balance (set Amount to 0) and then set the desired amount with the expiration date.
CSTM005 - Invalid Date Format for Balance Expiry
The date format provided for the store credit balance expiry date is invalid. The 'Store Credit: Expires At' column contains a value that cannot be parsed as a valid date/time.
The date should be in a standard format that can be recognized, such as:
2024-01-152024-01-15 14:30:00Jan 15, 2024 2:30 PM
Make sure all values in the 'Store Credit: Expires At' column are either empty or contain properly formatted date/time values.
CSTM006 - Balance Expiry Date Must Be in the Future
The expiry date provided for the store credit balance is not in the future. The 'Store Credit: Expires At' column contains a date/time that is in the past or is the current date/time.
Store credit expiry dates must be set to a future date to be valid. Check that the date you're providing is after the current date and time.
How to fix this:
Ensure the expiry date is set to a future date
Verify that the date format is correct and the year/month/day values are accurate
If you're using relative dates, make sure they're calculated correctly
CSTM007 - No Matching Address Found
The Address Command was set to UPDATE or DELETE, but no address could be found on the customer matching the supplied Address ID. The row was skipped.
Why this happens: UPDATE and DELETE for addresses match on Address ID. If the cell is empty or the ID is not one of the customer's existing addresses, there's nothing to act on.
How to resolve:
Re-export the customer to get the current
Address IDvalues, then edit those rowsIf you want to add a new address instead, use
MERGEorNEWVerify the customer email or ID in the row points to the correct customer
CSTM008 - Address Already Exists
The Address Command was set to NEW, but the supplied Address ID already belongs to one of the customer's addresses. The row was skipped to avoid duplicating an existing address.
How to resolve:
Use
MERGEif you want to update the existing address or create it if it doesn't yet existUse
UPDATEif you only want to update an existing addressRemove the
Address IDvalue if you genuinely want to create a separate new address
CSTM009 - Store Credit Currency Required
A store credit transaction row was provided without a Store Credit: Currency value. Currency is required to identify which currency-specific account the credit or debit applies to (Shopify holds a separate balance per currency on each customer or company location).
How to resolve:
Add a
Store Credit: Currencycolumn with the ISO 4217 currency code (e.g.USD,EUR).For multi-row imports where the same customer has multiple transactions in the same currency, the value can be left blank on follow-up rows; it carries forward from the first row of each account.
For company location store credit, the equivalent column is
Location: Store Credit Currency.
CSTM010 - Store Credit Balance Changed
Informational message added at the end of an import to record the net change to a customer's or company location's store credit balance. For example: Store credit changed from 50.00 USD to 75.00 USD. Multi-currency changes are joined with and.
This is not an error - it's a summary line that lets you audit the import results without re-fetching the customer.
CSTM011 - WhatsApp Consent Skipped, No Phone Number
A WhatsApp Marketing: Status value was provided, but the customer has no unique phone number. WhatsApp marketing consent is tied to the customer's phone number, so Shopify rejects the update and the consent change was skipped. The rest of the customer row was imported normally.
Why this happens: Unlike email or SMS consent, WhatsApp consent requires a unique phone number on the customer record. If the Phone column is empty (or the number is already used by another customer), there is no phone number to attach the consent to.
How to resolve:
Add a valid
Phonevalue to the same row so the phone number and consent are set together.Make sure the phone number is not already assigned to a different customer in your store.
CSTM012 - Customer Segment Not Found
An export used a customer segment filter, but no segment on your store matches the value in the filter. The export stops because it can't tell which customers to include.
Why this happens: The filter holds a segment name that no longer matches a segment, usually because the segment was renamed or deleted after the export was set up, or because the name was typed or passed in from outside the app.
How to resolve:
Open the export, clear the customer segment filter, and pick the segment again from the list.
Check in Shopify under Customers > Segments that the segment still exists and that the name matches.
CSTM013 - Customer Deleted but Replacement Failed
The row used the REPLACE command, which deletes the existing customer and creates a new one from the row. The delete succeeded, but Shopify rejected the new customer, so the customer is no longer on the store.
Before it deletes, Altera checks the row for problems it can detect itself and fails the row with the customer intact. This error only appears when Shopify rejects something after the delete, for example an email or phone value Shopify validates on its side.
To resolve this, fix the problem in the message and import the row again with Command set to MERGE, which creates the customer if they are missing. The original customer's ID, order history, and store credit are gone, so only use REPLACE for customers when you intend to reset the customer record completely.
CSTM014 - Store Credit Warning
Store credit columns detected in your customer import. These operations affect real money and customer account balances. Please double-check your data carefully before importing, as incorrect values could result in financial discrepancies or customer billing issues.
Previous code: CUST001.
Company Codes
Error and warning codes that occur when dealing with company imports and operations.
COMP004 - Company Location Already Exists
A row used the Location: Command NEW, but the company already has a location with the same Location: ID or Location: Name. The NEW command only creates locations and never changes existing ones, so the row was skipped.
How to fix this:
To update the existing location, change the
Location: CommandtoUPDATEorMERGETo create a separate location, give it a different
Location: Name
COMP006 - Shopify API Refused to Save Company
The Shopify API rejected the company data and refused to save it during an update operation. This typically occurs when the company configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level.
COMP018 - Company Name Required
A company name is required when creating a new company. This error occurs when attempting to create a new company record without providing a value in the 'Name' column. The company name is a mandatory field in Shopify and must be specified for all new company records.
How to fix this:
Ensure your import file includes the 'Name' column
Verify that all rows creating new companies have a non-empty value in the 'Name' column
Check that the name field isn't accidentally blank or contains only whitespace
COMP019 - Invalid Tax Exemption
The 'Location: Tax Exemptions' column contains invalid tax exemption values. This column must either be blank or contain a comma-separated list of valid tax exemption codes that Shopify recognizes.
Valid tax exemption codes include exemptions for specific regions and purposes, such as:
Canadian exemptions:
CA_BC_RESELLER_EXEMPTION,CA_ON_PURCHASE_EXEMPTION,CA_STATUS_CARD_EXEMPTION, etc.US state exemptions:
US_CA_RESELLER_EXEMPTION,US_NY_RESELLER_EXEMPTION,US_TX_RESELLER_EXEMPTION, etc.EU exemptions:
EU_REVERSE_CHARGE_EXEMPTION_RULE
For a complete list of all valid tax exemption values, see the Shopify TaxExemption enum documentation.
How to fix this:
Verify that each tax exemption value in your spreadsheet exactly matches one of the valid Shopify tax exemption codes
Ensure multiple exemptions are separated by commas (e.g.,
US_CA_RESELLER_EXEMPTION, US_NY_RESELLER_EXEMPTION)Remove any typos or non-standard exemption codes
Leave the column blank if no tax exemptions apply
Example of valid data:
Location: Tax Exemptions US_CA_RESELLER_EXEMPTION US_NY_RESELLER_EXEMPTION, US_CA_RESELLER_EXEMPTION
COMP020 - Multiple Locations with Same Name Found
When updating a company, if you try to identify a location by name and multiple locations exist with the same name, this error occurs. Location names are not unique in Shopify's B2B system, so when multiple locations share the same name, the system cannot determine which one to update.
How to fix this:
Use the 'Location: ID' column instead of relying on 'Location: Name' to uniquely identify locations
The Location ID is unique and will always identify exactly one location
You can export your existing company data first to get the correct Location IDs
Example:
Instead of:
ID,Name,Location: Name,Location: Tax Setting 1816789132,Whole Foods,Store 001,Do not collect
Use:
ID,Name,Location: ID,Location: Name,Location: Tax Setting 1816789132,Whole Foods,3352297612,Store 001,Do not collect
COMP021 - Company Location Not Found
This error occurs when using the UPDATE command for a company location that doesn't exist. The UPDATE command requires the location to already exist in the company before it can be updated.
How to fix this:
Verify the Location: ID or Location: Name you're using matches an existing location in the company
Use the MERGE command instead of UPDATE if you want to create the location if it doesn't exist
Export your company data first to confirm which locations currently exist
Check for typos in the location name or ID
Example of valid data:
Location: Tax Exemptions US_CA_RESELLER_EXEMPTION CA_BC_RESELLER_EXEMPTION, CA_STATUS_CARD_EXEMPTION
COMP022 - Customer Already Associated with Another Company
This warning occurs when trying to assign a customer as a contact to a company, but the customer is already associated with a different company. Shopify does not allow a customer to be a contact for multiple companies simultaneously.
This is a warning rather than an error - the company import will still succeed, but this specific customer will not be linked as a contact.
How to fix this:
Unlink the customer from their existing company first before assigning them to the new company
Use the company contact management features to remove the customer from the old company
Export your company contacts data to identify which company the customer is currently associated with
If you need the customer to be associated with multiple companies, you may need to create separate customer records for each company
COMP024 - Catalog Context Type Mismatch
This error occurs when trying to assign a catalog to a company location, but the catalog is configured to be assigned to Markets instead of Company Locations. In Shopify, catalogs can only be assigned to one type of context - either Markets or Company Locations - but not both.
How to fix this:
Go to the Shopify admin and navigate to Products > Catalogs
Click on the catalog you're trying to assign
At the top of the catalog page, just below the 'Title' field, there's a dropdown that shows the current context type (e.g., "Markets")
Change the dropdown from "Markets" to "Company locations"
Save the catalog
Re-run your import
Note: Changing a catalog's context type will remove any existing Market assignments for that catalog. If you need the catalog assigned to both Markets and Company Locations, you'll need to create separate catalogs for each use case.
COMP025 - Location Identifier Required
Your import file contains company location columns (such as 'Location: Phone', 'Location: Tax Setting', 'Location: Address 1', etc.) but is missing a location identifier column ('Location: ID' or 'Location: Name') with values.
When updating or creating company locations, each location must be uniquely identified so the system knows which location to update. Without an identifier, the system cannot determine which location the data belongs to.
How to fix this:
Add a 'Location: ID' column with the Shopify location IDs, or
Add a 'Location: Name' column with unique location names
If you're creating new locations, the 'Location: Name' column is sufficient. If you're updating existing locations, using 'Location: ID' is recommended as it's the most reliable identifier (location names can be duplicated).
Example of correct data:
ID,Name,Location: Name,Location: Phone,Location: Tax Setting 1816789132,Whole Foods,Main Office,+1-555-1234,Do not collect 1816789132,Whole Foods,Branch Office,+1-555-5678,Collect taxes
Or with Location IDs:
ID,Name,Location: ID,Location: Phone,Location: Tax Setting 1816789132,Whole Foods,3352297612,+1-555-1234,Do not collect 1816789132,Whole Foods,3352297613,+1-555-5678,Collect taxes
COMP026 - Customer Not Found for Company Contact
A customer specified as a contact or main contact for a company could not be found in your Shopify store. The customer must already exist in Shopify before they can be assigned as a company contact.
This is a warning rather than an error - the company import will still succeed, but the contact will not be linked.
How to fix this:
Verify the customer email address or ID in your import file is correct
Ensure the customer exists in your Shopify store before importing
If the customer doesn't exist yet, import the customer first using a Customers import, then re-run the Companies import
Common causes:
Typo in the customer email address
The customer was deleted from Shopify
The customer ID is from a different Shopify store
The customer hasn't been created yet
Example columns that can trigger this warning:
Main Contact: EmailMain Contact: IDLocation: Contact: Customer: EmailLocation: Contact: Customer: ID
COMP027 - Catalog Not Found
A catalog specified for a company location could not be found in your Shopify store. The catalog must already exist before it can be assigned to a company location.
This is a warning rather than an error - the company import will still succeed, but the catalog will not be assigned to the location.
How to fix this:
Verify the catalog name in your import file matches exactly (case-sensitive) the catalog name in Shopify
Ensure the catalog exists in your Shopify store (Admin → Products → Catalogs)
Create the catalog in Shopify first, then re-run the import
Common causes:
Typo in the catalog name
The catalog was deleted from Shopify
Extra whitespace in the catalog name
COMP028 - Customer or Location Identifier Required for Location Role
Your file includes a Customer: Location Role column with values, but is missing a customer identifier (Customer: ID or Customer: Email) or a location identifier (Location: ID or Location: Name), or both. Each row that has a location role needs both a customer identifier and a location identifier so the import knows which customer to assign the role to and which company location the role applies to.
Without these columns, the role values will be ignored, and the company will show as Ordering: Not approved in Shopify admin even though the rest of the row imports successfully.
How to fix this:
Add a
Customer: IDorCustomer: Emailcolumn with the customer's identifier on each row that has a location roleAdd a
Location: IDorLocation: Namecolumn with the company location identifier on each rowMake sure the customer already exists in your store (or include their details in the same import)
Note: Main Contact: Customer Email only sets the company's main contact. It does not assign a location role and is not a substitute for Customer: Email. The two columns serve different purposes - Main Contact: Customer Email sets the single primary contact for the whole company, while Customer: Email identifies the customer being assigned a role at a specific location.
For a step-by-step walkthrough of approving B2B companies for ordering, see How to bulk approve B2B companies for ordering in Shopify.
Common causes:
Using
Main Contact: Customer Emailinstead ofCustomer: Emailfor the contact at the locationEditing a companies export and removing the ID columns
Building an import file from scratch without including all required identifier columns
COMP029 - Could Not Assign Contact Role
A location role from your file was not applied to one of the company's contacts. The import skips that single role assignment and continues with the rest of the company's contacts, so the other contacts are still linked correctly.
This is a warning, not a fatal error. Shopify allows only one role per contact per company location. The most common cause is that the contact already has a different role at that location than the one in your file. To keep your existing data safe, the import does not overwrite it - it leaves the current role in place and warns you so you can decide.
How to fix this:
If the contact's current role is already correct, no action is needed
To change the role, first remove the existing one (set
Customer: Location Roleto blank with aDELETEon that contact, or remove the role in Shopify admin), then re-import the new roleFor other messages, check the role name in your
Customer: Location Rolecolumn matches a role that exists for the company, and that the customer and location both belong to the same company
COMP030 - Payment Terms Template Not Found
The Location: Checkout Payment Terms value in your file does not match any payment terms template on your store, so the location's existing payment terms were left unchanged.
This is a warning, not a fatal error. To avoid accidentally wiping out payment terms when a name is mistyped, the import only changes payment terms when it can match the name to a real template.
How to fix this:
Check that the name in your
Location: Checkout Payment Termscolumn exactly matches a payment terms template that exists on your store (for exampleNet 30)To remove the payment terms from a location, leave the cell blank instead of typing a value
If the template should exist, create it in Shopify admin first, then re-run the import
COMP031 - Company Contact Missing Customer Identifier
A company location contact in your file has no Customer: Email and no Customer: ID, so it can't be matched to a customer. A Customer: First Name (or other name-only column) on its own can't identify anyone, so the contact is skipped.
This is a warning, not a fatal error. The rest of the row (the company, its locations, tax IDs and addresses) still imports; only the un-identifiable contact is skipped.
Shopify links a company contact to an existing customer record by email or customer ID. There is no way to create or match a contact from a first name alone.
How to fix this:
Add a
Customer: Email(orCustomer: ID) column and fill it in for each contact you want linkedMake sure those customers already exist in your store - import a Customers file first, then re-run the Companies import
If you don't need per-location contacts yet, remove the
Customer: First Namecolumn and re-import; the companies, locations, tax IDs and addresses will still import
Common causes:
Using
Customer: First Name(orCustomer: Last Name) withoutCustomer: EmailorCustomer: IDBuilding the file from an order database that only has contact names, not emails or IDs
Note: Main Contact: Customer Email sets the company's main contact only. It does not supply the email for a location contact and won't rescue a first-name-only contact row.
COMP032 - Invalid Company ID
A company row has an ID value that isn't a valid Shopify ID, so we can't use it to find an existing company and the row is skipped.
A valid ID is either a plain number (e.g. 1234567890) or a full Shopify GID (e.g. gid://shopify/Company/1234567890). Anything else - a name accidentally placed in the ID column, or a number Excel turned into scientific notation like 1.2E+15 - can't be resolved.
The row is skipped rather than matched by Name, because an ID was clearly intended and silently creating a new company could hide corrupted data.
How to fix this:
Correct the
IDcolumn so it holds a numeric ID or agid://shopify/Company/<number>value, then re-importIf Excel converted the ID to scientific notation, format the column as Text before re-exporting, or remove the
IDcolumn and match byExternal IDorNameinsteadTo create a brand-new company, leave the
IDcolumn blank
COMP033 - Multiple Companies Share a Name
A row was matched by Name only, but more than one company on your store has that exact name. Company names are not unique, so the row can't be matched safely and was not imported. Picking one of the matches arbitrarily could update a different company than you intended. Spaces at the start or end of a name are ignored when matching, so companies whose names differ only by a leading or trailing space count as sharing the same name.
How to fix this:
Add an
IDorExternal IDcolumn so each row targets a specific companyIf the duplicate companies are unintended, merge or remove the extras in your Shopify admin, then re-import
Export your companies to see which records share the name
Location Codes
Error and warning codes that occur when importing or exporting store locations.
LOC001 - Cannot Set Default Location via API
Your import file contains an "Is Default" column with a value set to true. The default store location cannot be changed through the Shopify API - this is a limitation of Shopify's system.
How to set the default location:
Log in to your Shopify admin
Go to Settings → Locations
Click on the location you want to make the default
Click Make default (or similar option depending on your Shopify version)
The rest of your location data will still be imported. Only the default location setting will be skipped.
LOC002 - Country Code Required
Your import file has a Country column with values but no Country Code column. Location imports require the two-letter ISO country code (e.g., "US", "CA", "GB") rather than the full country name.
How to fix this:
Add a "Country Code" column to your spreadsheet
Use the two-letter ISO 3166-1 alpha-2 country codes:
United States →
USCanada →
CAUnited Kingdom →
GBAustralia →
AUGermany →
DEFrance →
FR
You can find the full list of country codes at ISO 3166-1 alpha-2.
The Country column (with full names) is optional and used for display purposes only. The Country Code column is required for the import to work correctly.
LOC003 - Fulfillment Service Locations Cannot Be Edited
Locations managed by a fulfillment service cannot be edited through the Shopify API. These locations are created and controlled by third-party fulfillment providers (e.g., ShipBob, Deliverr, Amazon FBA).
How to fix this:
Remove the fulfillment service locations from your import file, or
Contact your fulfillment service provider to make changes to these locations
LOC004 - Multiple Locations With Same Name
Your import file references a location by name, but multiple locations exist with that name. This can happen when a location is deactivated and a new location with the same name is created (Shopify only enforces unique names among active locations).
How to fix this:
Add an "ID" column to your import file
Use the location's unique Shopify ID to identify the specific location you want to update
You can find location IDs by exporting your locations first
LOC005 - Location Could Not Be Added
Shopify's API returned the error "Location could not be added, try again later." This is a temporary issue on Shopify's side. Altera will automatically retry up to 3 times with a 5-second delay between attempts before showing this error.
How to fix this:
Wait a few minutes and try your import again
If the error persists, check the Shopify Status Page for any ongoing issues
Contact Shopify support if the problem continues
Catalog Codes
Error and warning codes that occur when dealing with catalog imports and operations.
CATA003 - Shopify API Refused to Save Catalog
The Shopify API rejected the catalog data and refused to save it during an update operation. This typically occurs when the catalog configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level.
CATA004 - Unable to Find Market
The market specified in your catalog import cannot be found in your Shopify store. Make sure the market handle matches exactly and that the market exists in your store. Check that the market is properly configured and active.
CATA005 - Unable to Find Company Location
The company location specified in your catalog import cannot be found in your Shopify store. Make sure the company location name matches exactly and that the location exists in your store. Verify that the company location is properly set up in your B2B configuration.
CATA006 - Failed to Create Price List
The system failed to create a price list for the catalog. This typically happens when there are issues with the price list configuration or when Shopify's API rejects the price list data. Check your price list settings including currency, name, and any parent adjustment configurations.
CATA007 - Cannot Change Publication ID
You cannot change the publication ID of an existing catalog during an update operation. The publication ID is set when the catalog is created and cannot be modified afterward. If you need to change the publication association, you may need to replace the catalog entirely using the REPLACE command.
CATA008 - Shopify API Refused to Create Catalog
The Shopify API rejected the catalog data and refused to create the catalog. This typically occurs when the catalog configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level during creation.
CATA009 - No Price List Found After Creation
After creating a catalog, the system could not find the associated price list that should have been created. This is an internal error that indicates an issue with the catalog creation process. Please try again or contact support if the problem persists.
CATA010 - Type and Type Values Required
The 'Type' and 'Type Values' fields are required when creating a catalog. These fields determine the context of the catalog (such as which markets or company locations it applies to). Make sure your import includes both the catalog type (e.g., "Market" or "Company Location") and the corresponding values (e.g., market handles or location names).
CATA011 - Catalogs for Apps Not Supported
Catalogs for sales channels/apps cannot be created through the API. Only catalogs for markets and company locations are supported. If you need to create catalogs for apps or sales channels, you'll need to do this manually through the Shopify admin interface.
CATA012 - Catalog Has No Price List for Prices
Your import includes catalog prices, but the catalog has no price list to hold them and the file does not provide enough information to create one. Add a Price List: Name and Price List: Currency column for the catalog so Altera can create the price list before setting the prices. If you only provide fixed prices and no adjustment, Altera creates the price list with a neutral 0% adjustment.
CATA013 - Variant Not Found for Catalog Inclusion
A row in your import references a variant with the Product: Variant ID or Product: Variant SKU column, but no matching variant was found in your store. The row was skipped.
Check that the variant ID or SKU is correct and that the variant still exists. If your store has duplicate SKUs, add the Product: Handle column to the row so the variant can be matched within the right product, or use the Product: Variant ID column instead.
CATA014 - Cannot Exclude Variant from Catalog Without Product
A row with a DELETE command in the Product: Command column tries to exclude a variant from a catalog, but the variant's product is not included in that catalog, so there is nothing to exclude it from. The row was skipped.
To include a product with only some of its variants, use MERGE rows listing the variants you want included. The product will be added to the catalog with only those variants.
CATA015 - Variant Row Skipped for Removed Product
Your import removes a product from the catalog with a whole-product DELETE row, but the same file also has variant rows (Product: Variant ID or Product: Variant SKU) for that product. The whole-product DELETE takes precedence, so the variant rows were skipped.
If you want the product in the catalog with only some variants, remove the whole-product DELETE row and use MERGE rows listing the variants you want included.
CATA016 - Variant Not Found for Catalog Price
A price row in your import references a variant with the Price: Variant ID or Price: Variant SKU column, but no matching variant was found in your store. The price row was skipped, so no price was set or removed for it.
Check that the variant ID or SKU is correct and that the variant still exists. If the variants are created in the same import, run the product import first so the variants exist before the catalog prices are applied.
CATA017 - Unrecognized Catalog Type
The Type column contains a value that is not a recognized catalog type, so the catalog's markets or company locations could not be assigned. The value is matched without regard to letter case, so Market, MARKET, and market all work.
Set the Type column to Market or Company Location, and put the matching market handles or company location names in the Type Values column.
Discount Codes
Error and warning codes that occur when dealing with discount imports and operations.
DISC003 - Shopify API Refused to Save Discount
The Shopify API rejected the discount data and refused to save it. This typically occurs when the discount configuration violates Shopify's business rules or contains invalid data that passed initial validation but failed at the API level.
DISC004 - Invalid Discount Type
The discount type specified in your import is not valid. The 'Type' column must be one of: 'Amount off Products', 'Amount off Order', 'Free Shipping', 'Buy X Get Y', or empty.
DISC005 - Invalid Discount Method
The discount method specified in your import is not valid. The 'Method' column must be either 'Code', 'Automatic', or empty.
DISC006 - Unsupported Discount Type for Creation
The system attempted to create a discount with a type that is not supported by the discount creation API. This is an internal error that should be reported if encountered.
DISC007 - Invalid Date Format
The date format provided for a discount field (such as start date or end date) is invalid. Expected format is YYYY-MM-DD HH:MM:SS or YYYY-MM-DD.
DISC008 - Invalid Usage Limit
The usage limit value provided for the discount is not a valid number. Usage limits must be whole numbers (integers) indicating how many times the discount can be used.
DISC009 - Unable to Find Discount
The discount with the specified ID could not be found in your Shopify store. This may occur when trying to update or delete a discount that doesn't exist.
DISC010 - Unsupported Discount Type for Deletion
The system tried to delete a discount with a type that is not supported by the deletion API. This is an internal error that should be reported if encountered.
DISC011 - Failed to Add Discount Codes
The system failed to add multiple codes to an existing discount. This typically happens when trying to add duplicate codes or codes that violate Shopify's validation rules.
DISC012 - Invalid Uses Per Order Limit
The 'uses per order limit' value provided for the discount is not a valid number. This field must be a whole number (integer) indicating how many times the discount can be applied within a single order.
DISC013 - Customer Segment Not Found
The customer segment specified in your discount cannot be found in your Shopify store. Make sure the segment name matches exactly and that the segment exists in your store.
DISC014 - Customer Not Found
The customer with the specified email address cannot be found in your Shopify store. Make sure the email address is correct and that the customer exists in your store.
DISC015 - Discount Type Not Found in Data
The system could not determine the discount type from the provided data. This is an internal error that should be reported if encountered.
DISC016 - Unsupported Discount Type for Update
The system attempted to update a discount with a type that is not supported by the discount update API. This is an internal error that should be reported if encountered.
DISC017 - Discounts Import in Beta
Importing discounts is still in beta. Please test with 1 or 2 discounts first to ensure everything works as expected before importing larger datasets.
DISC018 - Discount Type Not Specified
The discount type was not specified in the import data. Make sure your import includes the discount type information or that existing discounts have their type properly identified.
DISC019 - Value Must Be a Number
The discount value must be a valid number. This error occurs when the 'Value' column contains text or other non-numeric values that cannot be converted to numbers. For percentage discounts, use a numeric value (e.g., 10.00 for 10% off). For fixed amount discounts, use the monetary value without currency symbols (e.g., 25.00 for $25 off). Ensure all values in the 'Value' column are either empty or contain only numeric values.
Numbers should use a period (not comma) for decimal separation and should not include thousands separators. For example, use 1234.66 instead of 1,234.66 or 1234,66.
DISC020 - Minimum Requirement Must Be Set
When you specify a 'Minimum Value' for a discount, you must also set the 'Minimum Requirement' column to either 'Amount' or 'Quantity'. This tells Shopify whether the minimum requirement is based on:
Amount: The minimum order total (e.g., spend at least $50)
Quantity: The minimum number of items (e.g., buy at least 3 items)
Make sure that every row with a 'Minimum Value' also has a corresponding 'Minimum Requirement' set to one of these valid values. Empty or invalid values in the 'Minimum Requirement' column will cause the discount import to fail.
DISC021 - Minimum Value Required
When you specify a 'Minimum Requirement' for a discount (either 'Amount' or 'Quantity'), you must also provide a corresponding value in the 'Minimum Value' column. This value determines the threshold that customers must meet to qualify for the discount.
For example:
Minimum Requirement: Amount → Minimum Value: 50 (customers must spend at least $50)
Minimum Requirement: Quantity → Minimum Value: 3 (customers must buy at least 3 items)
Make sure that every row with a 'Minimum Requirement' set to 'Amount' or 'Quantity' also has a valid numeric value in the 'Minimum Value' column. Empty values will cause the discount import to fail.
DISC022 - Subscription App Required
This error occurs when trying to configure subscription-related discount fields on a store that doesn't have a subscription app installed. Shopify only allows subscription discount settings when the store has a subscription management app active.
The fields that require a subscription app are:
Purchase Type: Controls whether the discount applies to one-time, subscription, or both types of purchases
Purchase Type: Recurring Subscription Limit: Controls how many billing cycles the discount applies to
How to fix this:
Option 1: Install a subscription app on your store (such as Shopify Subscriptions or a third-party subscription app) before importing discounts with subscription fields
Option 2: Remove the subscription-related columns from your import file:
Remove the 'Purchase Type' column
Remove the 'Purchase Type: Recurring Subscription Limit' column
If you don't need subscription functionality for your discounts, simply remove these columns from your spreadsheet and the import will proceed successfully.
DISC023 - Product Not Found
The product handle specified in the "Applies To: Values" column does not match any product on the store. The import is stopped to prevent the discount from being created without the intended product scope.
How to fix this:
Check that the product handle exists on the store
Make sure the handle is spelled correctly (handles are case-sensitive and use lowercase with hyphens)
If the product was recently deleted or renamed, update the handle in your import file
DISC024 - Variant Not Found
The variant SKU specified in the "Applies To: Values" column does not match any variant on the store. Variant-scoped discounts use the format product-handle|SKU in the values column.
How to fix this:
Check that the SKU exists on the store for the specified product
Make sure the format is
product-handle|SKUwith a pipe separatorVerify both the product handle and variant SKU are correct
DISC025 - Collection Not Found
The collection handle specified in the "Applies To: Values" column does not match any collection on the store. The import is stopped to prevent the discount from being created without the intended collection scope.
How to fix this:
Check that the collection handle exists on the store
Make sure the handle is spelled correctly (handles are case-sensitive and use lowercase with hyphens)
If the collection was recently deleted or renamed, update the handle in your import file
DISC026 - Free Shipping Cannot Combine With Shipping Discounts
Free shipping discounts cannot combine with other shipping discounts. Shopify rejects any free shipping discount where Combines with Shipping Discounts is set to TRUE. The import automatically sets this value to FALSE and continues.
How to fix this:
Set
Combines with Shipping DiscountstoFALSEon free shipping discount rows in your import fileThis warning is safe to ignore - the discount is imported with the corrected value
DISC027 - Amount Off Each Requires Specific Items
The discount row has Applies To: Type set to Products or Collections but Applies To: Values is empty, and Value Type is Amount Off Each. Shopify requires at least one product or collection in the discount's scope when using per-item value types and will refuse to create the discount. The import is stopped so the row can be corrected rather than silently re-created with a different (redeemable) shape.
Why this happens
The most common cause is that the discount was originally created on the source store with one or more specific products in its scope, and those products (or variants) were later deleted. When a product is deleted, Shopify quietly removes it from any discount's scope but does not change the discount's type - so a "products-scoped" discount can end up with zero items in scope. The export faithfully captures that state: Applies To: Type = Products, Applies To: Values = "".
Shopify's current API does not let us recreate a discount in that shape. Creating a new discount with Value Type = Amount Off Each requires at least one product or collection. This means discounts that ended up in this state on the source store cannot be round-tripped through an export/import cycle as-is.
How to fix this:
Add specific product handles or collection handles to the
Applies To: ValuescolumnOr change
Value TypetoFixed AmountorPercentageIf the referenced products/collections were deleted, consider whether the discount is still meaningful - a product-scoped discount with nothing in scope cannot be redeemed by customers, so it may be safe to remove the row from the import file entirely
DISC028 - Unrecognized Applies To Type
The discount row has an Applies To: Type (or Buy X Get Y: Customer Buys Type) value that the importer does not recognize. The import is stopped so the row can be corrected rather than silently falling back to an order-level (Amount off order) discount.
Why this happens
The scope type only accepts a fixed set of values. Anything else (a typo, an unexpected label, or a stray value) previously fell through to "apply to all products", which Shopify stores as an order-level discount - so a discount meant to target specific products or collections silently became Amount off order.
How to fix this:
Set
Applies To: Typeto one ofAll,Products, orCollections(these match the values Altera exports)The Shopify admin uses the wording
Specific Products/Specific Collections; in the import file useProducts/CollectionsinsteadFor Buy X Get Y discounts, set
Buy X Get Y: Customer Buys TypetoProducts,Collections, orAmount
DISC029 - Market Not Found
The Eligibility: Customer Type column is set to Markets, but one of the names in Eligibility: Customer Values does not match a market on the store. The import is stopped so the discount is not created or updated with the wrong eligibility.
How to fix this:
Check the market names in Settings > Markets in the Shopify admin and use the exact spelling
Separate multiple markets with commas; if a market name itself contains a comma, escape it as
\,If the market was deleted, remove it from the list or change
Eligibility: Customer TypetoAll
DISC030 - Unrecognized Eligibility Customer Type
The discount row has an Eligibility: Customer Type value that the importer does not recognize. The import is stopped so the row can be corrected rather than silently falling back to "all customers".
Why this happens
Older versions of Altera treated any unknown value in this column as All. A typo, or a value from a newer Shopify feature that Altera did not yet support, therefore made the discount available to every customer without warning.
How to fix this:
Set
Eligibility: Customer Typeto one ofAll,Customers,Segments, orMarkets(these match the values Altera exports)The Shopify admin wording
Specific customers,Customer segments, andSpecific marketsis also accepted
DISC031 - Eligibility Customer Values Required
The Eligibility: Customer Type column is set to Customers, Segments, or Markets, but Eligibility: Customer Values is empty. The import is stopped because a restricted discount with an empty list would otherwise be saved as available to all customers.
How to fix this:
Fill in
Eligibility: Customer Valueswith the customer emails, segment names, or market names the discount is restricted toIf the discount should be available to everyone, set
Eligibility: Customer TypetoAll
