Credits and billing
ImportKit is free to install. Imports are paid for with credits, and one credit imports one row. There's no subscription, nothing recurring, and nothing to cancel.
What a credit is
One credit = one CSV row written to your store. “Written” means the row created something or updated something. If a row doesn't change your store, it doesn't cost anything.
That's the whole pricing model. A 500-row file where 380 rows are new and 120 already exist costs 380 credits in Skip mode.
What's charged and what isn't
| Activity | Cost |
|---|---|
| Installing the app | Free |
| Downloading templates and column guides | Free |
| Uploading a file, however large | Free |
| Mapping columns | Free |
| The pre-import check, however many times | Free |
| A row that creates something | 1 credit |
| A row that updates something | 1 credit |
| A row skipped because it already exists | Free |
| A row reported as a conflict | Free |
| A row that errors | Refunded |
| A row interrupted mid-write (uncertain) | Refunded |
| Retrying the unprocessed rows of a job | 1 credit per row written |
| Rows already succeeded, on a retry | Never re-charged |
Net effect: an import that fails entirely costs nothing. The only rows you pay for are the ones that changed your store.
How the metering actually works
A credit is reserved immediately before each row is sent to Shopify, and released back the moment the outcome is known if the row wasn't written.
Two things follow, both useful:
- Your store can never be changed beyond what you paid for. Because the reservation happens first, there's no window where a row is written but uncharged.
- Running out is graceful. The import stops cleanly at your balance rather than half-writing something.
Every purchase, deduction and refund is a ledger entry, so your balance is auditable rather than a number that drifts.
The packs
| Pack | Credits | Price | Per row |
|---|---|---|---|
| Starter Pack | 50 | $1.99 | 4.0¢ |
| Value Pack | 250 | $7.99 | 3.2¢ |
| Pro Pack | 600 | $16.99 | 2.8¢ |
| Agency Pack | 1,500 | $34.99 | 2.3¢ |
- Prices in USD.
- Packs stack — buy several and they add to one balance.
- Credits never expire.
- Credits belong to the store that bought them and aren't transferable between stores.
Pricing page, with worked examples →
Buying credits
- Open Credits in the app.
- Pick a pack.
- Approve the charge on Shopify's own confirmation screen.
- You're returned to the Credits page with the balance updated.
Purchases are one-time Shopify application charges, so they appear on your regular Shopify invoice and we never see your payment details. Grants are idempotent — a purchase can't be credited twice, however the confirmation reaches us.
Outside production, charges are created as Shopify test charges. Approving one on a development store costs nothing, so you can practise an entire migration end to end before doing it live.
The Credits page
“Your Credit Balance” card with Available / Total Purchased / Total Used, beside the four packs in the Purchase Credits grid.
assets/screenshots/credits-page.png
Reading your balance
| Figure | Meaning |
|---|---|
| Available | What you can spend right now. |
| Total purchased | Every credit you've ever bought. |
| Total used | Every credit consumed by a written row, net of refunds. |
The same summary is on the app's Home page.
Knowing the cost before you commit
Run the pre-import check. It reports “N of M rows will be written”, and N is the credit cost. It's free, and you can re-run it after every edit to your file.
Changing the conflict mode changes the number: rows that skip in Skip mode become charged updates in Update mode. Worth checking both if the difference matters.
Rough guidance when you can't run a check:
- Metafield definitions — one credit per definition. Setting up custom data is usually tens of credits, not hundreds.
- Metafield values — one credit per value per resource. Two fields on 400 products is 800 credits.
- Metaobject entries — one credit per entry.
- Blog articles — one credit per article.
Running out mid-import
The import stops cleanly at the point your balance is exhausted and reports:
Ran out of credits before all rows were imported.
Buy more credits and retry to finish.
Nothing was written that couldn't be paid for. Buy a pack, open the job from Jobs, and press Retry — it resumes from the first unprocessed row. Rows that already succeeded are never re-written or re-charged.
Refunds
Row-level refunds are automatic and immediate — errored, skipped, conflicting and uncertain rows return their credit to your balance as part of processing. You don't have to ask, and there's nothing to reconcile.
For a pack refund, email support@importkit.app from the store in question. Packs are generally non-refundable once purchased, since credits are only consumed when work is done — but we'll refund where credits were consumed because of a fault in ImportKit, or where a purchase was clearly made in error and is unused. Billing terms →
Billing questions
- Are there free credits or a trial?
- No free credits. But everything up to the moment of writing is free and unmetered — including unlimited pre-import checks — so you can validate a whole file before spending anything. The Starter Pack is $1.99.
- Is this a subscription?
- No. One-time charges only. Nothing recurs.
- Do credits expire?
- No. If you uninstall and reinstall on the same store, credits you'd bought and not used are still there.
- Do I pay per store or per organisation?
- Per store. Agencies running imports for several clients buy credits on each store, and the charge lands on that store's Shopify invoice.
- Does a cancelled import waste credits?
- You're charged only for rows written before the cancel. The rest are untouched and resumable.
- What if the same row is charged twice?
- It can't be. Rows that succeeded are never revisited on a retry, and the credit ledger records every movement — if the numbers ever look wrong to you, send us the job number and we'll reconcile it.