Skip to content

Reference

CSV import

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

How an import runs

UploadCSV or a pastedspreadsheet rangeMapheaders guessed,you correct themValidatesame schema theREST API usesCommit400 rows a call,per-row reportNothing is written until validation passes. A rejected row never blocks the rest of the file.
Upload at /import, or post the same rows to /api/v1/cartons/bulk.
ModeA SKU you already have
CREATE_ONLYSkipped and counted. Nothing is overwritten.
UPSERTUpdated — but only the columns the file actually maps.

Carton columns

ColumnReqTypeExampleNotes
skuyestextBX-120806Unique per organization, 64 characters. Letters, digits and . _ - /, starting with a letter or digit.
nameyestextBox 12 x 8 x 6120 characters.
typenoenumBOXBOX, BAG, MAILER, TUBE, ENVELOPE, CUSTOM. Defaults to BOX.
innerLengthyesnumber12Interior cavity — what decides fit. Greater than 0, up to 500. Why it matters.
innerWidthyesnumber8As above.
innerHeightyesnumber6As above.
outerLengthnonumber12.25Blank reuses the interior, which understates dimensional weight.
outerWidthnonumber8.25
outerHeightnonumber6.25
maxWeightnonumber40Contents only, tare excluded. 0 means no cap.
tareWeightnonumber0.42Empty carton mass, added to gross weight.
costnonumber0.78Your currency, per empty carton. Used by MIN_COST.
paddingnonumber0.25Dunnage per interior face, up to 24. Unmapped uses your organization default. Diagram.
quantityOnHandnointeger240Respected by the solver unless you turn that off.
reorderPointnointeger60Drives the low-stock view and the reorder report.
activenobooleantrueInactive cartons are ignored by the solver.
flexiblenobooleanfalseConformable packaging. How it is solved.
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 wall2000 characters.

Item columns

ColumnReqTypeExampleNotes
skuyestextSKU-1001Unique per organization. Same character rules as a carton SKU.
nameyestextCeramic mug 12 oz160 characters.
categorynotextHousewaresFree-form, used for filtering. 64 characters.
lengthyesnumber4.5Shipping footprint, not the bare product if they differ.
widthyesnumber3.5
heightyesnumber4.25
weightyesnumber0.95Per unit, in your mass unit. Up to 5000.
fragilenobooleantrueNever carries load; placed last. Diagram.
stackablenobooleantrueFalse means nothing may rest on it at all. Defaults to true.
maxStackWeightnonumber15Cap on the top face. 0 means no explicit cap.
orientationLocknoenumTHIS_SIDE_UPFREE, THIS_SIDE_UP, FLAT, UPRIGHT, FIXED. Defaults to FREE. Diagram.
groupKeynotextCABLE-KITLines sharing a key are kept in one carton where possible.
hazmatClassnotextblankFree-form. Conflicting classes are not co-packed.
colornohex#b45309Six digits, for the 3D plan. Blank derives one from the SKU.
notesnotextShips in its retail box2000 characters.
activenobooleantrue

Validation rules

RuleEffect
Header matchingCase, spaces, underscores and units in parentheses are ignored. "Inner Length (in)" maps to innerLength.
Required column unmappedEvery row fails with "No source column is mapped."
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 cavityTwice the padding must leave space on every axis, 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 run through the schema POST /api/v1/cartons uses, 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.
integer"240.0" is accepted as 240; "240.5" is rejected.
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,quantityOnHand
BX-120806,"Corrugated box 12 x 8 x 6",BOX,12,8,6,40,0.78,0.25,240
PB-1215,"Poly bag 12 x 15",BAG,12,15,0.75,5,0.09,0,1500

The import screen offers a template with every column and two filled example rows, which is the fastest way to get the header spelling right.

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, addressed by row and field.
Plan ceilingApplied to the total the import would leave behind, so re-importing existing SKUs costs nothing.
DelimitersComma-delimited CSV, or a tab-delimited range pasted straight from a spreadsheet.
CSV import · Carton Pack Pro