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

# Préparer vos fichiers CSV

> Guide complet étape par étape pour formater vos données en vue de leur importation dans Qwoty.

Ce guide vous accompagne dans la préparation de votre fichier CSV pour une importation réussie dans Qwoty. Suivez ces étapes dans l'ordre pour éviter les erreurs.

## Étape 1 : Vérifier les exigences du fichier

Avant de commencer, assurez-vous que votre fichier respecte ces exigences :

| Exigence                     | Détails                                                                                                        |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------- |
| **Format**                   | CSV                                                                                                            |
| **Encodage**                 | UTF-8 (recommandé)                                                                                             |
| **Séparateur de champs**     | Virgule `,`                                                                                                    |
| **Séparateur décimal**       | Point `.`                                                                                                      |
| **Séparateur intra-cellule** | La virgule `,` sépare plusieurs valeurs dans une même cellule (par exemple, plusieurs noms d'API de catalogue) |
| **Structure**                | Un type d'objet par fichier (Produits maîtres, Produits ou Prix)                                               |
| **Première ligne**           | En-têtes — chaque colonne doit avoir un nom                                                                    |

Pour les jeux de données de plus de 10 000 lignes, divisez-les en plusieurs fichiers ou utilisez l'[API Qwoty](https://docs.qwoty.io).

## Étape 2 : Télécharger le fichier exemple

**C'est l'étape la plus importante.** Le fichier exemple vous indique les noms de colonnes exacts et le format attendus par Qwoty.

1. Ouvrez **Paramètres → Données → Importer/Exporter des données**.
2. Sélectionnez l'objet que vous souhaitez importer : **Produits maîtres**, **Produits** ou **Prix**.
3. Cliquez sur **Télécharger le fichier exemple**.
4. Utilisez ce fichier comme modèle — conservez les en-têtes et remplacez les lignes d'exemple par vos données.

<Tip>
  **Conseil de pro :** exportez d'abord quelques enregistrements existants
  plutôt que de partir du modèle vide. L'export vous donne de vrais exemples de
  la façon dont Qwoty formate les données, et les noms de colonnes sont mappés
  automatiquement lors de la réimportation.
</Tip>

## Étape 3 : Supprimer les valeurs en double

Qwoty impose l'unicité sur certains champs. Les doublons provoquent des erreurs d'importation.

| Objet                | Champs uniques                                                                    |
| -------------------- | --------------------------------------------------------------------------------- |
| **Produits maîtres** | `product_parent_id`, `parent_product_api_name`                                    |
| **Produits**         | `product_id`, `product_api_name`, `inventory[sku]` (si utilisé comme identifiant) |
| **Prix**             | `id`                                                                              |

Avant d'importer :

1. Triez votre feuille de calcul par le champ unique.
2. Supprimez ou fusionnez les lignes en double.
3. Vérifiez les doublons qui existent déjà dans Qwoty en exportant d'abord.

## Étape 4 : Formater chaque type de champ correctement

Les différents types de champs nécessitent des formats spécifiques. Voici la référence complète pour Qwoty.

### Champs texte

* Aucun formatage particulier requis.
* Les espaces en début et en fin de valeur sont automatiquement supprimés.
* Si une valeur contient une virgule, un saut de ligne ou des guillemets, encadrez-la avec des guillemets doubles : `"Premium, Extra Large"`.

### Champs numériques

* Chiffres uniquement (pas de texte).
* Utilisez le point pour les décimales : `1234.56`.
* Pas de séparateur de milliers (pas `1,234.56`).
* Les nombres négatifs sont autorisés uniquement là où le schéma le permet (la plupart des champs de prix exigent des valeurs positives).

### Champs booléens

Utilisez des minuscules : `true` ou `false`.

Cela s'applique aux champs tels que `settings[is_active]`.

### Champs énumération (sélection)

Utilisez la **valeur exacte** attendue par Qwoty, y compris la casse. Énumérations courantes :

| Champ                       | Valeurs acceptées                                                            |
| --------------------------- | ---------------------------------------------------------------------------- |
| `settings[recurrence_type]` | `one_off`, `recurring`                                                       |
| `settings[product_type]`    | `physical`, `service`, `subscription`                                        |
| `type` (prix)               | `one-time`, `reccuring`                                                      |
| `pricing_model`             | `Flat`, `Cost based`, `Percent`, `Graduated Tiered`, `Volume Tiered`, `None` |
| `period_unit`               | `day`, `week`, `month`, `year`                                               |

<Warning>
  Les énumérations sont sensibles à la casse. `flat` est différent de `Flat`.
  `recurring` est différent de `Recurring`. Utilisez les valeurs exactes
  indiquées ci-dessus.
</Warning>

### Champs date

Utilisez le format ISO 8601 :

* `YYYY-MM-DD` — par exemple, `2026-04-25`
* `YYYY-MM-DDTHH:MM:SSZ` — pour les horodatages

### Champs devise

Utilisez le code ISO 4217 à trois lettres : `EUR`, `USD`, `GBP`, `JPY` — pas le symbole (`€`, `$`) ni le nom complet.

### Champs taxe (TVA)

Utilisez le format `<CODE_PAYS>_<TAUX>`. Exemples :

| Valeur   | Signification         |
| -------- | --------------------- |
| `FR_200` | France, TVA 20,0 %    |
| `FR_055` | France, TVA 5,5 %     |
| `DE_190` | Allemagne, TVA 19,0 % |
| `-`      | Aucune taxe           |

### Champs ID

* **Facultatif** : Qwoty génère automatiquement des UUID si aucun n'est fourni.
* **Format** : UUID, par exemple `c776ee49-f608-4a77-8cc8-6fe96ae1e43f`.
* **Cas d'usage** : Incluez l'ID pour **mettre à jour** des enregistrements existants au lieu d'en créer de nouveaux.

### Champs multi-valeurs

Certains champs acceptent plusieurs valeurs dans une seule cellule, séparées par des **virgules** :

| Colonne              | Exemple                  |
| -------------------- | ------------------------ |
| `catalog_api_names`  | `france,partner_pricing` |
| `category_api_names` | `hardware,accessories`   |

Si une valeur dans la liste contient une virgule, encadrez toute la cellule avec des guillemets doubles : `"category_one,category, with comma"`.

### Champs indexés (niveaux, options)

Qwoty utilise une notation entre crochets avec un index numérique pour les groupes de champs répétés. Les index sont **basés sur 0** pour les niveaux et **basés sur 1** pour les options.

```text theme={null}
tiers[starting_unit][0],tiers[ending_unit][0],tiers[price][0]
options[1][name],options[1][value]
```

Ajoutez `[1]`, `[2]`, `[3]`... pour déclarer des lignes supplémentaires.

## Étape 5 : Ajouter les colonnes de relation

Les objets Qwoty se référencent mutuellement via des champs spécifiques. Pour lier un enregistrement à son parent ou à un objet associé, renseignez la bonne colonne.

| Liaison                  | Colonne à renseigner                                                 |
| ------------------------ | -------------------------------------------------------------------- |
| Produit → Produit maître | `parent_product_api_name` (privilégié) ou `product_parent_id` (UUID) |
| Produit → Catalogue(s)   | `catalog_api_names` (séparés par des virgules)                       |
| Produit → Catégorie(s)   | `category_api_names` (séparés par des virgules)                      |
| Prix → Produit           | `product_id` (UUID)                                                  |
| Prix → Grille tarifaire  | `pricebook_id` (UUID ou nom de la grille tarifaire)                  |

<Warning>
  **L'ordre d'importation est important !**

  1. **Produits maîtres** en premier — ce sont les parents.
  2. **Produits** ensuite — ils référencent les produits maîtres.
  3. **Prix** en dernier — ils référencent à la fois les produits et les grilles tarifaires.

  Les catalogues, catégories et grilles tarifaires doivent exister avant de commencer. Créez-les d'abord via l'interface.
</Warning>

## Étape 6 : S'assurer que les champs personnalisés existent dans Qwoty

L'importation crée des **enregistrements**, pas des **champs**. Tout champ personnalisé que vous souhaitez renseigner doit déjà exister dans votre modèle de données.

Avant d'importer :

1. Ouvrez **Paramètres → Données → Modèle de données**.
2. Sélectionnez l'objet (Client, Modèle de contrat — notez que les Produits et les Prix ne sont actuellement pas extensibles avec des champs personnalisés).
3. Ajoutez les champs personnalisés dont vous avez besoin.
4. Assurez-vous que l'en-tête de colonne dans votre CSV correspond exactement au nom d'API du champ.

Consultez la page [Modèle de données](/user-guide/data-model/introduction) pour le guide complet sur l'ajout de champs personnalisés.

## Étape 7 : Liste de vérification finale

Avant de charger votre fichier, vérifiez :

* Le fichier est au format **CSV**
* L'encodage est **UTF-8**
* Le séparateur de champs est la **virgule `,`**
* Le séparateur décimal est le **point `.`**
* Les cellules multi-valeurs utilisent des virgules à l'intérieur, avec des guillemets autour de la cellule si nécessaire
* Pas de valeurs en double dans les champs uniques (`product_id`, `product_api_name`, `id`)
* Les champs booléens utilisent **des minuscules** `true` ou `false`
* Les champs énumération utilisent la **casse exacte** indiquée à l'étape 4
* Les dates utilisent le format **ISO 8601**
* Tous les champs personnalisés existent dans **Paramètres → Données → Modèle de données**
* Les produits maîtres sont importés **avant** les produits
* Les produits sont importés **avant** les prix
* Les catalogues, catégories et grilles tarifaires existent déjà dans l'espace de travail

## Erreurs courantes à éviter

| Erreur                                                             | Solution                                                                            |
| ------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
| Utiliser `;` comme séparateur                                      | Qwoty attend la virgule `,`                                                         |
| Utiliser `flat` ou `recurring` (minuscules) pour `pricing_model`   | Utilisez `Flat`, `Volume Tiered`, etc. — casse exacte                               |
| Importer des produits avant leur produit maître                    | Importez toujours les produits maîtres en premier                                   |
| Oublier d'encadrer les valeurs multi-catalogue avec des guillemets | `"france,partner_pricing"` est obligatoire lorsque la cellule contient des virgules |
| Mapper deux fois la même colonne                                   | Chaque cible Qwoty n'accepte qu'une seule colonne source                            |
| Utiliser `,` comme séparateur décimal                              | Les nombres doivent utiliser le point `.`                                           |
| Mélanger `recurring` (produit) avec `one-time` (prix)              | `settings[recurrence_type] = recurring` exige `type = reccuring` sur le prix        |

## Étapes suivantes

Votre fichier est prêt. À présent :

<CardGroup cols={2}>
  <Card title="Importer les produits maîtres" icon="layer-group" href="/user-guide/data-migration/how-tos/import-master-products">
    Commencez toujours ici.
  </Card>

  <Card title="Importer les produits" icon="box" href="/user-guide/data-migration/how-tos/import-products">
    Une fois vos produits maîtres créés.
  </Card>

  <Card title="Importer les prix" icon="tag" href="/user-guide/data-migration/how-tos/import-prices">
    Dernière étape — les prix référencent les produits et les grilles tarifaires.
  </Card>

  <Card title="Modèle de données" icon="diagram-project" href="/user-guide/data-model/introduction">
    Ajoutez les champs personnalisés avant d'importer si nécessaire.
  </Card>
</CardGroup>
