Skip to content

CSV preparation guide

Get your opportunity and payout CSVs ready

Use the current ResaleCraft fields to prepare an inventory opportunity sheet or payout export. Start with a synthetic example, check the formats, and preview the file before saving valid rows.

1. Choose opportunities or payouts

Opportunities describe inventory you could buy: its cost, quantity, expected prices, timing, and evidence. Payouts describe sales, refunds, or fee adjustments that you will later review against purchased inventory. Use a separate file for each kind of import.

These downloads contain synthetic format examples, not real inventory, market evidence, or performance. Their dates are fixed historical examples. Downloading a file does not save rows or create purchases. Replace the example rows before a real import.

You can practice an opportunity CSV preview in the public demo. Real imports require an invited workspace. The public payout demo practices matching sample rows; it does not upload payout files.

Back to contents

2. Prepare a small, plain CSV

Save a comma-separated CSV with one header row and one record per data row. Keep the headers unique and nonempty. Their order can change. Quote any cell containing a comma, quote, or line break; spreadsheet CSV export normally handles that quoting for you.

  • File limits: up to 2,000,000 UTF-8 bytes, 2,000 data rows, and 64 columns. Split larger exports into smaller files with the same headers and distinct record references.
  • USD amounts: plain values such as 1200.00, with at most two decimals. Individual amounts are limited to $21,474,836.47 in magnitude where signed values are allowed. Opportunity totals also have limits.
  • Tax: 8.25 means 8.25%, and 1 means 1%. Do not enter 0.0825 to mean 8.25%.
  • Dates: use 2026-01-15, or a timestamp with a timezone such as 2026-01-15T12:00:00Z. Locale dates such as 01/15/2026 and timestamps without a timezone are rejected.
  • Text: supply plain labels and references, not spreadsheet formulas. Text starting with =, +, -, or @ is rejected. Negative numeric payout amounts follow the separate rules below.

Remove unrelated buyer names, addresses, and other personal details before upload. Unmapped extra columns are discarded; the optional format_notes column in these examples is documentation and is not saved.

If your export uses different column names, map them during preview. Each source column can fill only one ResaleCraft field. A saved mapping remembers column names for later imports, not the original file or its rows.

Back to contents

3. Prepare opportunity fields

Fields marked May be blank can preserve an unknown fact. A valid import with unknown buying inputs can remain Needs information; importing it does not make it ready to approve. Use a real zero only when the amount is known to be zero. Required tax, inbound shipping, supplies, and confidence fields still need values.

Opportunity CSV fields
CSV fieldWhat to enter
external_idRequiredYour stable, unique reference for this opportunity. Reimporting an existing reference does not update its record.
nameRequiredA recognizable product or lot name.
skuRequiredThe item code you use to distinguish the inventory.
categoryRequiredThe inventory category used for the opportunity and exposure review.
supplierRequiredWho you would buy the inventory from.
sourceRequiredWhere the opportunity came from, such as your own research or a supplier sheet.
intended_channelRequiredThe channel you plan to sell through. Check its selling-cost assumptions in workspace settings.
unit_costMay be blankPurchase cost per unit in USD, before the separately recorded tax and costs.
quantityMay be blankWhole units, from 1 to 100,000 when known.
tax_rateRequiredPurchase tax as a percentage: 8.25 means 8.25%, and 1 means 1%. Use 0 only when the actual rate is zero.
inbound_shipping_totalRequiredTotal inbound shipping cost for the purchase, in USD, rather than a per-unit amount.
supplies_per_unitRequiredSupply cost per unit in USD.
base_sale_priceMay be blankYour expected sale price per unit, in USD. This is an assumption, not a price supplied by ResaleCraft.
downside_sale_priceMay be blankYour lower-price scenario per unit, in USD. It is not a guaranteed floor or statistical percentile.
days_to_cashMay be blankExpected whole days until cash returns, from 1 to 3,650 when known.
decision_deadlineMay be blankAn optional buying deadline, using an ISO date or a timestamp with a timezone.
evidence_sourceMay be blankThe source behind your price assumptions.
evidence_observed_atMay be blankWhen you checked the price evidence. Future calendar dates are rejected.
confidenceRequiredYour evidence-confidence label: high, medium, or low.

The CSV supplies acquisition costs and sale-price assumptions. Channel selling-cost defaults come from your workspace settings, so review those defaults too. ResaleCraft does not connect to a marketplace or fetch live prices because you entered a channel name.

Use the inventory buying checklist to gather the underlying facts. The older evidence dates in the download demonstrate a file format; they are not suitable evidence for a current buying decision.

Back to contents

4. Keep payout kinds and cash signs distinct

The payout CSV calls each row a settlement. Only sale_reference may be blank. Keep the original sale or order reference when available; a row accepted by the importer may still lack what is needed for a safe inventory match.

Payout CSV fields
CSV fieldWhat to enter
external_transaction_idRequiredA stable, unique reference for this payout row. Use separate references for a sale, its refund, and later adjustments.
channelRequiredThe selling channel associated with the row.
settled_atRequiredThe settlement date, using an ISO date or timestamp with timezone. Future calendar dates are rejected.
kindRequiredExactly sale, refund, or fee_adjustment.
sale_referenceMay be blankThe original sale or order reference, when available. Keep it even though the importer permits a blank.
skuRequiredThe item code used to connect the row to the purchased inventory.
quantityRequiredUnits sold or affected by a refund. Fee adjustments use 0. A money-only additional refund may also use 0.
gross_amountRequiredGross sale amount in USD. Refunds and fee adjustments use 0.
platform_feesRequiredPlatform charges in USD. On refunds and adjustments, a negative amount is a fee credit.
shipping_costRequiredSeller-paid shipping in USD. On refunds and adjustments, a negative amount is a shipping credit.
refund_amountRequiredA positive customer-refund amount on refund rows; 0 on sales and fee adjustments.
net_payoutRequiredThe authoritative signed cash amount: positive for cash received, negative for cash paid out.
currencyRequiredUSD. The current pilot does not accept other currencies.

Sales, refunds, and fee adjustments

  • Sale: quantity is at least 1; gross, fees, and shipping are nonnegative; refund amount is 0. The example has $20 gross less $2 fees and $3 shipping, producing $15 net cash received.
  • Refund: gross is 0 and refund amount is positive. Quantity counts affected units, or 0 for an additional money-only refund. The example returns $20 to a buyer and receives a $2 fee credit, so its net cash movement is −$18.
  • Fee adjustment: quantity, gross, and refund amount are all 0. Positive fees or shipping represent charges; negative amounts represent credits. The example has a −$1 fee entry and a +$1 net payout.

Use the statement’s signed net_payout as the authoritative cash amount. ResaleCraft compares it with gross minus fees, shipping, and refunds. A difference is accepted with a warning for individual explanation. Do not change the reported net merely to force the components to agree.

The review example reports $14.99 net where the listed components imply $15.00. That one-cent difference requires review and excludes the row from safe bulk matching. A nonpositive sale payout or a refund that does not reduce cash also needs review.

A refund does not automatically restock physical inventory. Confirm what came back and its disposition when matching. See the payout reconciliation guide for partial sales, returns, and closure checks.

Back to contents

5. Preview, map, correct, then accept

  1. Choose the correct file and select Validate and preview. Preview does not save imported rows.
  2. Check the valid and rejected counts. Match any differently named source columns and validate again. Check which optional facts remain blank.
  3. Review accepted payout warnings as well as rejected rows. Accepted does not mean ready for automatic matching.
  4. Download the Error CSV if rows need correction. It lists row, field, and error; it is not a repaired copy of your original file.
  5. In a real workspace, accept the valid rows when ready. Rejected rows are not imported. Keep and correct them in your source file before a later preview.

References prevent duplicate imports. A repeated external_id or external_transaction_id inside one file rejects the later occurrence. At save time, references already present in your workspace are skipped and the existing records remain unchanged. Reimporting is not a way to edit a previously saved opportunity or payout.

After importing payouts, review and match them to actual purchased inventory. A file can be valid without every row being matchable. The full workflow keeps the import, purchase, payout, and final result separate.

Back to contents

Common import errors and what to change

Correction and review checklist
What you seeCheck in the source file
The CSV cannot be readCheck the size and row/column limits, duplicate or empty headers, quoting, and equal column counts across rows.
Required field missingSupply the real value or map its source column. Leave blanks only in fields explicitly marked May be blank.
Invalid amount or quantityUse at most two decimal places for money and whole units for quantity. Check total purchase/sales limits as well as individual values.
Invalid or future dateUse a real ISO calendar date or timezone-qualified timestamp. Evidence and payout settlement dates cannot be future calendar dates.
Duplicate referenceRemove unintended duplicate rows. Preserve the stable ID for the same record; do not invent a new ID to bypass a duplicate warning.
Payout details conflictCheck the kind: a sale cannot contain a refund; a refund uses zero gross and positive refund amount; an adjustment uses zero quantity, gross, and refund.
Valid payout needs reviewCheck the statement’s signed net amount and any unrepresented charges or credits. Keep the actual net and explain the difference individually.

Keep the original source file while correcting rows. ResaleCraft parses raw CSV files in memory rather than retaining those files; accepted canonical records and import metadata are saved when you commit a real import.

Back to contents

Start with a sample

Follow one buy all the way through.

The guided demo uses sample data. No email is required, and practice changes are not saved to a real workspace.