Docs
Preparing Shopify, Amazon and Stripe exports for import
Where the export lives in each dashboard, which columns to rename, and the traps: tab-separated Amazon files, blank line-item rows, net payout totals.
The method
Every platform exports its own column names. AXIOTRA reads a small fixed set of names, listed in the CSV import reference. Preparing a file is therefore four operations in a spreadsheet: rename the columns you need, delete or ignore the rest, fill order-level values down onto every line-item row, and make sure timestamps and identifiers are in the shape the importer expects.
Keep the platform's own identifiers. The order_id you put in the orders file must be the same string you put in the payments, refunds and shipments files, because attribution is an exact match on that value plus the source. Shopify order names such as #1001, Amazon order ids such as 113-2948014-1234567 and Stripe ids such as ch_ or pi_ are all fine as long as they are used consistently.
Import in this order: orders, then payments, then refunds and shipments, then inventory, then costs and fees. Findings recompute after each file, so the picture is incomplete until the second source is in; a workspace with orders and no payments will report every order as unpaid until the payments file lands.
Shopify orders
Shopify admin, Orders, Export, choose the date range and the plain CSV format. The export has one row per line item. Rename Name to order_id, Created at to placed_at, Lineitem sku to sku, Lineitem quantity to qty, Lineitem price to unit_price, Total to total, Discount Amount to discount, Taxes to tax, Shipping to shipping, Currency to currency and Financial Status to status. Add a source column with the value shopify on every row.
Check the second and later rows of multi-line orders. If the export leaves order-level columns such as Total or Created at blank on those rows, fill them down from the first row of the order before uploading, because placed_at and total must be present on every row. Rows with an empty sku (custom items, tips) will be skipped and reported.
Created at is exported with a zone offset, for example 2026-08-02 10:14:00 -0400; that format is accepted and converted to UTC. Cancelled orders keep their rows; if you do not want them compared against payments, filter on Cancelled at before uploading.
Shopify Payments and Stripe
If you take cards through Shopify Payments, the capture data is in Finance, Payouts, Transactions, Export. Map the transaction id to payment_id, Order to order_id, Amount to amount, Fee to fee and Transaction Date to captured_at, keep only rows whose Type is charge, and set source to shopify. Refund rows from the same export go into the refunds file with the amount made positive.
If you use Stripe directly, export from Payments in the Stripe dashboard. Map id to payment_id, Amount to amount, Fee to fee, Currency to currency, Status to status and Created (UTC) to captured_at, and set source to stripe. Keep only captured, succeeded rows. Stripe does not know your order id unless your checkout wrote it to metadata; if it did, the export contains a column named after that key with the suffix (metadata), and that is the column to rename to order_id. If it did not, captures import as unattributed cash and are reported as such.
Stripe refunds come from the Refunds export. Map the refund id to refund_id, the amount and currency, Created (UTC) to issued_at, and the order id from metadata to order_id. Add return_received and restocked columns from your returns system if you have them; Stripe has no view of physical returns.
Amazon Seller Central
Orders: Reports, Fulfillment, All Orders (by last update or by order date). Map amazon-order-id to order_id, purchase-date to placed_at, sku to sku, quantity to qty, item-price divided by quantity to unit_price, item-tax to tax, shipping-price to shipping, currency to currency and order-status to status. Set source to amazon. Amazon exports these reports tab-separated with a .txt extension; the importer splits on commas, so save the sheet as CSV first.
Fees: Payments, Reports repository, a Transaction or Date range report for the settlement period. Each Order row lists selling fees, FBA fees and other transaction fees as negative numbers. Turn each non-zero fee column into its own fees row: fee_id as the order id plus the fee name, order_id, kind as referral for selling fees and fba for FBA fees, amount as the absolute value, charged_at as the date/time column, source amazon.
Payments: the same report can produce the payments file. Use the order id as payment_id, and set amount to what the buyer paid (product sales plus shipping and gift wrap credits plus tax, minus promotional rebates), not the total column, which is already net of fees. A net total imported as amount will be reported as a payment that disagrees with the order for exactly the fee amount.
Inventory: Inventory, Manage FBA Inventory, or the Manage Inventory Health report. Map sku to sku, afn-fulfillable-quantity to available, afn-reserved-quantity to reserved, afn-inbound-shipped-quantity to incoming, afn-unsellable-quantity to damaged and afn-total-quantity to on_hand. Set source to amazon, location to the marketplace, and as_of to the report date.
Shopify inventory and your warehouse count
Shopify admin, Products, Inventory, Export. Map SKU to sku, On hand to on_hand, Available to available, Committed to committed, Incoming to incoming and Location to location, set source to shopify and as_of to the export date. One row per SKU per location is fine; the location column keeps them apart.
The warehouse file is what the storefront rows are compared against, so it matters most. From your 3PL or WMS export a stock report with SKU, physical on-hand and any reserved or allocated quantity, taken on the same day as the storefront exports. Set source to warehouse. If you know the count at the start of the period covered by your orders file, add it as opening_on_hand; it makes the expected figure independent of today's warehouse count.
Match SKUs exactly. Storefront rows whose sku does not appear in the warehouse file are compared against an expectation built from orders alone, which is usually zero and produces a large, meaningless gap. Fix SKU spelling in the sheet before upload rather than after.
Import messages and what to do
Missing required column(s): the header lacks one of the required names for that file kind; nothing was imported. Rename the column and upload again. Check for a leading space or a different spelling; matching is exact after lowercasing and replacing spaces with underscores.
line N: source must be one of shopify, amazon, stripe, csv, warehouse. The source value on that row is something else, often the platform's own channel label. Overwrite the column with one of the five values.
line N: field is not an amount, is not a date, or is not a whole number. The value on that row could not be parsed; typical causes are a quantity like 1.0, a date in text form, or a currency code inside the amount cell. Fix the cell and re-upload the file; rows that already imported are simply updated.
File is larger than 8 MB: split the export by month. Viewers cannot import data: your role in the organization is viewer; an owner or admin has to upload.