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

# Prepaid Members & Loyalty Points

> Carry every prepaid membership and loyalty balance into FlexWash so day-one customers feel no disruption at the gate.

Prepaid membership bases and loyalty programs are some of the stickiest parts
of a car wash business, and they are also the parts customers notice fastest
when a migration goes wrong. FlexWash imports both, per car wash, before your
first day live, so existing members keep the time they paid for and every
loyalty point follows them into the new system.

## How It Works

This is a hands-on, support-led import. You produce the data per car wash,
and a FlexWash onboarding specialist runs the importer for you after a
joint validation pass.

<Steps>
  <Step title="Export one CSV per car wash">
    Pull active prepaid memberships and loyalty balances from your current
    POS into a separate CSV file for each car wash. Use the exact field
    names listed below as your headers.
  </Step>

  <Step title="Share the files with your onboarding specialist">
    Send the CSVs to the FlexWash team. We treat them as the source of
    truth for prepaid coverage and point balances at go-live.
  </Step>

  <Step title="We validate and map plans">
    Our support staff verifies every row, flags any data issues back to
    you, and maps each legacy plan name to a FlexWash membership package.
    This mapping is done once per organization and reused on every
    subsequent file.
  </Step>

  <Step title="We run the import">
    Once the file is clean and every plan is mapped, we run the importer.
    Customers, vehicles, prepaid memberships, and loyalty balances land
    in FlexWash. Supplying the optional `customerInsertedAt`,
    `vehicleInsertedAt`, and `membershipInsertedAt` columns preserves
    each record's original start date.
  </Step>
</Steps>

<Note>
  Recurring card-on-file memberships move through a different path. See
  [Member Token Migration](/data-import/member-token-migration)
  for the processor-to-processor flow, and
  [Interim Imports](/data-import/interim-import) for the
  daily bridge that keeps members recognized while tokens migrate.
</Note>

## File Format

One CSV per car wash. The header row must contain the exact field names
shown in the tables below. Empty cells are allowed for any optional field.

### Required Fields

| Field                 | Description                                                                                                                                                                             |
| --------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `customerMigrationId` | The customer's unique ID in your existing POS. We use this to keep your historical records linked.                                                                                      |
| `licensePlate`        | Vehicle license plate. Whitespace and a trailing two-character state suffix (e.g. `ABC123-WA`) are stripped, then the plate is uppercased and any letter `O` is converted to digit `0`. |
| `planName`            | The membership plan name as it appears in your existing POS. Support maps this to a FlexWash package on the first import and remembers it on every file after.                          |
| `billDateInMonth`     | Day of the month for billing, as an integer from 1 to 31.                                                                                                                               |

### Optional Fields

| Field                  | Description                                                                                            |
| ---------------------- | ------------------------------------------------------------------------------------------------------ |
| `name`                 | Customer's full name.                                                                                  |
| `phoneNumber`          | Phone number. Non-digit characters are removed and the trailing 10 digits are kept.                    |
| `email`                | Customer email address. Stored lowercased.                                                             |
| `vehicleMigrationId`   | The vehicle's unique ID in your existing POS.                                                          |
| `make`                 | Vehicle make.                                                                                          |
| `model`                | Vehicle model.                                                                                         |
| `year`                 | Vehicle year.                                                                                          |
| `rfidTag`              | Vehicle RFID tag. Normalized on import.                                                                |
| `customerInsertedAt`   | Original customer creation timestamp. Preserves the customer's true start date in FlexWash.            |
| `vehicleInsertedAt`    | Original vehicle creation timestamp.                                                                   |
| `membershipInsertedAt` | Original membership creation timestamp.                                                                |
| `ccZipcode`            | Billing zip code on file.                                                                              |
| `promotionId`          | FlexWash promotion ID to attach to the subscription. Must already exist in your FlexWash organization. |
| `loyaltyPointsBalance` | Current loyalty point balance for the customer, as an integer.                                         |

## Tips for a Clean File

* If you use Excel export your file as a CSV, then check the data for accuracy
  before sending.
* Keep `customerMigrationId` stable. If your ex-POS has a separate "customer
  number" that changes when a record is edited, use the immutable internal
  ID instead.
* If a customer has more than one vehicle on the same prepaid
  membership, give us one row per vehicle and repeat the customer
  columns on each row. Flag these cases to your onboarding specialist
  so we group the rows under a single customer record.
* Send one file per car wash even if a single customer appears at more
  than one location. We reconcile shared identities during the
  verification pass.
