> ## Documentation Index
> Fetch the complete documentation index at: https://docs.priceos.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Migrating to PriceOS

> Migrating your existing customers and pricing to PriceOS is simple and easy

PriceOS was built from the ground up with the assumption that you already have existing customers and pricing so we've made the migration process super easy.

<Note>This guide assumes you have already created a PriceOS account and integrated your Stripe account</Note>

<Steps>
  <Step title="Set up your products">
    PriceOS automatically imports all of your Stripe products so you don't need to recreate them.

    All you need to do is...

    1. [Hide any Stripe products](/stripe-products#hiding-stripe-products) you don't need in PriceOS
    2. [Create custom products](/custom-products#how-to-create-a-custom-product) if you need to define feature access for customers outside of Stripe
  </Step>

  <Step title="Create features and define access">
    Next, you can [create features](/creating-features) and [define access](/defining-feature-access) for all of your products.

    <Tip>Tip: Create features and define access on your oldest product first via the [product details page](/defining-feature-access#by-product) and then duplicate feature access (by clicking the More ... button) on subsequent products to save you time.   </Tip>
    <Note>If you need to define different feature access for the same product but different prices, create [multiple product versions](/product-versioning). </Note>
  </Step>

  <Step title="Integrate PriceOS">
    Now, comes the fun part of integrating PriceOS into your application.

    <Tip>If your current feature access management code is spread out in your entire codebase, it is recommended to consolidate all that code the best you can first. </Tip>

    You'll need to implement the following in your application...

    1. [Evaluate feature access](/evaluating-feature-access)
    2. [Link Stripe customers](/linking-stripe-customers)
    3. [Track usage](/tracking-usage) (only if using PriceOS to track usage)
    4. [Create customers](/creating-customers) (only if using [custom products](/custom-products))
  </Step>

  <Step title="Import existing customers">
    You'll only need to import existing customers if...

    * You have customers that exist outside of Stripe (e.g. for [custom products](/custom-products)) OR
    * You do not already have an internal ID in your customers' Stripe metadata.

    To import customers...

    1. Go to the [customers page](https://app.priceos.com/customers)
    2. Click the <b>More menu (...)</b> at the top right of the screen
    3. Select the <b>Bulk Upload</b>  menu option
    4. Upload a CSV file in the format described below

    #### CSV format

    The CSV needs to include either a `customer_id` or `stripe_customer_id` for all customers. Everything else is optional.

    Columns can be in any order and you only need to include the ones you use.

    | Header Column        | Required                      |
    | -------------------- | ----------------------------- |
    | `customer_id`        | Yes (or `stripe_customer_id`) |
    | `stripe_customer_id` | Yes (or `customer_id`)        |
    | `email`              | No                            |
    | `name`               | No                            |
    | `usage_started_at`   | No                            |
    | `product_keys`       | No                            |

    [Download sample CSV](/files/customers-import-sample.csv)

    <Tip>
      Imports are idempotent. Uploading the same customer multiple times does not create duplicates.
    </Tip>
  </Step>
</Steps>
