---
title: "CSV import template: Subscriptions docs | Chargezen"
description: "The ten columns of the Chargezen subscription CSV, how to fill each one, and what every import error message means and how to fix it."
url: "https://chargezen.com/docs/subscriptions/migration-csv-template"
lang: "en"
updated: "2026-10-18"
---

Canonical URL: https://chargezen.com/docs/subscriptions/migration-csv-template

# CSV import template

The ten columns of the Chargezen subscription CSV, how to fill each one, and what every import error message means and how to fix it.

Last updated: 2026-10-18

Use a CSV to bring subscriptions from any app that can export them. Open **Subscriptions → Import → CSV import** and choose **Download a CSV template**to get a file with the header row already filled in.

## Import a CSV

1

#### Prepare your CSV

One contract per row, header row first (it's skipped). Keep the columns in the order below. Save the spreadsheet as .csv.

2

#### Upload

Choose **Choose a CSV** or drop the file. The page counts the rows it will check and how many rows without an email it will skip.

3

#### Start import

Choose **Start import**. Every row is checked before anything is created.

4

#### Watch contracts arrive

When the file passes, the import is queued and new contracts appear under Contracts as they're created.

## Columns, in order

| # | Column | What to put in it |
| --- | --- | --- |
| 1 | Customer email | The email of an existing Shopify customer. |
| 2 | Payment method (shopify\_payment or stripe) | shopify\_payment charges the payment method saved in Shopify. stripe moves the customer's default Stripe payment method into Shopify first. |
| 3 | Next billing date (YYYY-MM-DD) | The first date Chargezen charges. It can't be in the past. |
| 4 | Recurring delivery anchor date (YYYY-MM-DD; prepaid weekly/monthly/yearly only) | Sets the delivery weekday, day of month or month and day for prepaid plans. Leave blank to keep the plan's schedule. |
| 5 | Shipping fee | Charged on every recurring order. 0 or more. |
| 6 | Variant ID | The Shopify variant ID of the product. |
| 7 | Quantity | A whole number greater than zero. |
| 8 | Current price | The price per item the customer pays now. 0 or more. |
| 9 | Selling plan ID | The numeric ID of a Chargezen plan with the Contract import channel on. |
| 10 | Currency | A currency code such as USD or CAD. |

Prepaid anchor dates

Column 4 changes the recurring delivery schedule of prepaid weekly, monthly and yearly plans. If you reuse an older CSV, check column 4 before importing. The first delivery still depends on Shopify's billing and cutoff timing.

## Error messages

If any row fails, nothing is imported. The page says "Nothing was imported. Fix these rows and upload the file again." and lists each problem as "Row N: …".

| Message | How to fix it |
| --- | --- |
| Enter a valid customer email. | Column 1 is empty or isn't an email address. |
| Choose Shopify Payments or Stripe. | Column 2 must be shopify\_payment or stripe. |
| Enter a valid first billing date (YYYY-MM-DD) that is not in the past. | Fix the date format in column 3, or move it to tomorrow or later. |
| Enter a valid recurring fulfillment anchor date (YYYY-MM-DD) on or after the first billing date. | Column 4 is earlier than column 3 or in the wrong format. |
| Enter a non-negative shipping fee. | Column 5 is below zero or not a number. |
| Enter a Shopify variant ID. | Column 6 is empty. |
| Enter a whole-number quantity greater than zero. | Column 7 is zero, negative or has decimals. |
| Enter a non-negative current price. | Column 8 is below zero or not a number. |
| Enter a Shopify selling plan ID. | Column 9 is empty. |
| This selling plan isn't available for contract import. | Turn on the Contract import channel on that plan, or use another plan's ID. |
| Choose a supported currency. | Column 10 isn't a recognized currency code. |

## Troubleshooting

### "File type must be .csv"

Save the spreadsheet as CSV (comma separated) and upload it again.

### "No rows with a customer email found"

Each row needs a customer email in column 1, and the first row is treated as the header. Check that your data starts on row 2.

### The file passed but a contract never appeared

Contracts are created in the background. A row is turned down later if the email isn't a Shopify customer, or if that customer already has a contract. Stripe rows wait until the customer's Stripe payment method is confirmed in Shopify.

### Where do I find a selling plan ID?

Use the numeric ID of a selling plan in a Chargezen plan with Contract import on. Chargezen adds the Shopify prefix for you.

## Related

*   [Migrations](https://chargezen.com/subscriptions/migrations): guides for Skio, Loop, Stay AI, Appstle, Seal, Smartrr, Bold, Ordergroove, PayWhirl and Upscribe.
*   Glossary: [anchor date](https://chargezen.com/glossary/anchor-date), [prepaid subscription](https://chargezen.com/glossary/prepaid-subscription).

### Related Articles

[

#### Migrate subscriptions

All three ways to import



](https://chargezen.com/docs/subscriptions/migration)[

#### Move Stripe payment methods

Rows with stripe in column 2



](https://chargezen.com/docs/subscriptions/stripe-token-migration)[

#### How selling plans work

Where selling plan IDs come from



](https://chargezen.com/docs/subscriptions/selling-plans-explained)

Was this page helpful?

Need more help? [Contact support](https://chargezen.com/docs/checkoutos/troubleshooting/support)
