Skip to content
On this page

Reference

CSV import

Every column the bulk importer reads, what it accepts, and the rule that rejects a bad row.

How an import runs

Nothing is written until validation passes. A rejected row never blocks the rest of the file.

Upload at /import. The API bulk routes take whole records, with no column mapping or defaults.
ModeA SKU you already have
CREATE_ONLYSkipped and counted.
UPSERTUpdated in the mapped columns only.

Carton columns

ColumnReqTypeExampleNotes
skuyestextBX-120806Unique per organization, up to 64 characters. Letters, digits and . _ - /, starting with a letter or digit.
nameyestextBox 12 x 8 x 6Up to 120 characters.
typenoenumBOXBOX, BAG, MAILER, TUBE, ENVELOPE, CUSTOM. Defaults to BOX.
innerLengthyesnumber12Inside size, used to check fit. Greater than 0, up to 500. Interior vs exterior.
innerWidthyesnumber8As above.
innerHeightyesnumber6As above.
outerLengthnonumber12.25Blank reuses the interior, which understates dimensional weight.
outerWidthnonumber8.25
outerHeightnonumber6.25
maxWeightnonumber40Contents only, tare excluded. 0 means no limit of its own; in imperial units, carrier limits still apply.
tareWeightnonumber0.42Empty carton mass, added to gross weight.
costnonumber0.78Your currency, per empty carton. Used by MIN_COST and LOWEST_RATE.
paddingnonumber0.25Dunnage per interior face, up to 24. Unmapped uses your organization default. Diagram.
activenobooleantrueInactive cartons are ignored by the cartonizer.
flexiblenobooleanfalsePackaging that shapes to its contents, like a poly bag. How it is cartonized.
maxBulgenonumber1Extra height a flexible carton gains when stuffed. Up to 24.
fillFactornonumber0.850.05 to 1. Usable fraction of a flexible carton.
notesnotextECT-32 single wallUp to 2,000 characters.

Item columns

ColumnReqTypeExampleNotes
skuyestextSKU-1001Unique per organization. Same character rules as a carton SKU.
nameyestextCeramic mug 12 ozUp to 160 characters.
categorynotextHousewaresFree-form, used for filtering. Up to 64 characters.
lengthyesnumber4.5Size as it ships, including any packaging of its own.
widthyesnumber3.5
heightyesnumber4.25
weightyesnumber0.95Per unit, in your mass unit. Up to 5000.
fragilenobooleantrueNothing may rest on it. Most orderings pack it late. Diagram.
stackablenobooleantrueFalse means nothing may rest on it at all. Defaults to true.
maxStackWeightnonumber15Most weight that may rest on it. 0 means no set limit.
orientationLocknoenumTHIS_SIDE_UPFREE, THIS_SIDE_UP, FLAT, UPRIGHT, FIXED. Defaults to FREE. Diagram.
nestIncrementnonumber0.35Height each further unit adds to a nest, like stacked cups. Less than height. Blank or 0 means it does not nest.
maxNestQuantitynonumber50Most units in one nest, a whole number from 2 to 10,000. Needs a nestIncrement above 0. Blank means carton size and weight limit a nest.
groupKeynotextCABLE-KITThe Grouped sets first ordering packs each group back to back. A split group gets a warning. Diagram.
hazmatClassnotextblankFree-form. Items of different classes never share a carton.
keepApartnotextblankFree-form. Items with different values never share a carton, such as Firearm and Ammunition. Diagram.
colornohex#b45309Six digits, for the 3D plan. Blank derives one from the SKU.
notesnotextShips in its retail boxUp to 2,000 characters.
activenobooleantrue

Validation rules

RuleEffect
Header matchingCase, spaces, underscores and units in parentheses are ignored. "Inner Length (in)" maps to innerLength.
Required column unmappedThe Check button stays disabled and names the unmatched required fields.
Blank required cellThat row fails. The rest of the file still imports.
Blank optional cellTakes the column default, or clears the field where the column is nullable.
Padding vs cavityEach inner dimension must be more than twice the padding, or the row is rejected.
Outer vs innerAn outer dimension below its inner counterpart is rejected.
Repeated SKUThe first row wins; later rows are reported as errors.
Same rules as the APIRows pass the same checks as POST /api/v1/cartons and POST /api/v1/items, so an import cannot create a record the API would reject.

Accepted values

TypeAccepts
numberSpaces, thousands separators and currency marks are stripped: "1,250" and "$0.78" both parse.
booleantrue, t, yes, y, 1, x, active, on — and false, f, no, n, 0, inactive, off. Case-insensitive.
enumThe code, or its display label. Spaces and hyphens become underscores: "this side up" maps to THIS_SIDE_UP.
textQuoted fields may contain commas and newlines; "" is a literal quote. A UTF-8 byte-order mark is stripped.
cartons.csv
sku,name,type,innerLength,innerWidth,innerHeight,maxWeight,cost,padding,flexible,maxBulge
BX-120806,"Corrugated box 12 x 8 x 6",BOX,12,8,6,40,0.78,0.25,false,0
PB-1215,"Poly bag 12 x 15",BAG,12,15,0.75,5,0.09,0,true,1

Click Download template on the import screen for every column header and two example rows.

Limits

LimitValue
Rows per import20,000. Split a larger file and run it again.
Rows per API bulk call1,000, on /cartons/bulk and /items/bulk.
Errors keptThe first 200 per batch, each with its row and field.
Plan ceilingEach 400-row chunk is checked against your plan's limit. Chunks before the one that goes over stay imported. Existing SKUs count only if the import reactivates them.
DelimitersComma, semicolon, tab or pipe, detected from the header row. A range pasted from a spreadsheet is tab-delimited.
Import cartons and SKUs from CSV · Carton Pack Pro