Connecter NetSuite : recevoir les commandes, synchroniser clients, factures et produits
Trouvez votre Account ID dans NetSuite, collez dans Integration un token d’accès OAuth2 déjà émis avec la portée rest_webservices, testez, mappez, activez : les commandes de vente entrent, et clients, factures et produits se synchronisent dans les deux sens.
Le connecteur NetSuite connecte votre ERP Oracle NetSuite via le service SuiteTalk REST Record. Il importe les commandes de vente, clients, factures et produits depuis NetSuite et renvoie clients, factures et produits vers NetSuite. Il ne peut ni lire ni pousser les quantités de stock : utilisez-le pour les commandes et les fiches clients, factures et produits, pas pour la synchronisation des quantités de stock.
Prérequis#
- Un compte NetSuite et un accès pouvant ouvrir Setup → Company → Company Information pour lire l’Account ID.
- Un rôle avec le droit REST Web Services : le token doit porter la portée rest_webservices et son rôle doit pouvoir lire les fiches clients — le test de connexion lit un client.
- Un token d’accès OAuth2 déjà émis, obtenu via un enregistrement d’intégration (integration record) NetSuite par le flux client credentials ou code d’autorisation. Ayez le token fini en main avant de lancer l’assistant.
- Sachez quel compte vous connectez : un Account ID de bac à sable ressemble à 1234567_SB1, avec le suffixe _SB1.
Obtenir les identifiants#
- Trouvez l’Account ID : dans NetSuite, allez dans Setup → Company → Company Information et copiez l’Account ID tel qu’il s’affiche — pour un compte bac à sable, avec le suffixe _SB1, par ex. 1234567_SB1.
- Obtenez le token d’accès OAuth2 : le token doit porter la portée rest_webservices et s’obtient depuis un enregistrement d’intégration NetSuite via le flux client credentials ou code d’autorisation. Integration n’ouvre pas de fenêtre de connexion NetSuite à votre place : vous collez un token déjà émis.
- Vérifiez le rôle derrière le token : il lui faut le droit REST Web Services et le droit de lire les fiches clients, sinon le test de connexion échouera avec MISSING_SCOPE (403).
Remplir dans Integration#
- Ouvrez Integration → Marketplace → NetSuite → Nouvelle connexion.
- account_id — obligatoire. Saisissez-le dans le champ Account ID : l’Account ID de NetSuite → Setup → Company → Company Information, copié caractère par caractère, suffixe _SB1 inclus pour un compte bac à sable (par ex. 1234567_SB1).
- token — obligatoire. Saisissez-le dans le champ OAuth2 access token : collez le token d’accès OAuth2 complet portant la portée rest_webservices (sa valeur commence généralement par eyJ). Il n’y a pas de champ séparé pour un Client ID ou un Client Secret. Le token est stocké chiffré et jamais réaffiché.
Tester la connexion#
Cliquez sur Tester la connexion. Si account_id est vide, le test s’arrête avec MISSING_ACCOUNT_ID ; si token est vide, il s’arrête avec MISSING_TOKEN — dans les deux cas, aucune requête n’est envoyée. Sinon, le test envoie votre token comme Bearer dans une seule sonde en lecture seule : il lit la liste des clients avec une limite de 1 depuis https://{account_id}.suitetalk.api.netsuite.com/services/rest/record/v1/customer (délai de 12 secondes). Une réponse 200 signifie que le test a réussi et le résultat affiche votre account_id. Une réponse 401 revient en INVALID_TOKEN et une 403 en MISSING_SCOPE — voir la FAQ pour savoir quoi corriger dans chaque cas ; tout autre échec est signalé comme CONNECTION_FAILED.
Mapping / choisir un modèle#
Choisissez le modèle standard NetSuite. Il mappe les commandes de vente — y compris le détail des lignes de chaque commande, que le connecteur lit commande par commande — ainsi que les clients, factures et produits (articles d’inventaire NetSuite), entre NetSuite et les documents standard. Avant d’activer, vérifiez dans l’aperçu du mapping les champs qui comptent pour vous et assurez-vous que chaque produit NetSuite est associé au bon produit de ce côté. Les quantités de stock ne font pas partie de ce mapping : cette connexion ne lit ni ne pousse les quantités de stock, ne mappez donc pas les champs de quantité disponible en espérant qu’ils se synchronisent.
Activer#
Après activation, Integration récupère les nouvelles commandes de vente, clients, factures et produits depuis NetSuite selon la fréquence définie et renvoie vers NetSuite les mises à jour de clients, factures et produits. Les quantités de stock ne circulent dans aucun sens via cette connexion. Surveillez les premiers documents dans Runs / Logs avant de le laisser sans surveillance, et quand votre token OAuth2 expire, remplacez-le par un token nouvellement émis et testez à nouveau.
FAQ#
Le test s’arrête avec MISSING_ACCOUNT_ID ou MISSING_TOKEN
L’un des deux champs obligatoires est vide, donc le test s’arrête avant d’envoyer la moindre requête à NetSuite.
Remplissez les deux champs : account_id depuis NetSuite → Setup → Company → Company Information, et token avec le token d’accès OAuth2 complet. Enregistrez, puis testez à nouveau.
Le test échoue avec INVALID_TOKEN (401)
NetSuite a rejeté le token : il est invalide ou expiré, il a été collé de façon incomplète, ou ce que vous avez collé est un identifiant d’authentification par token (TBA) et non un token d’accès OAuth2.
Obtenez un nouveau token d’accès OAuth2 avec la portée rest_webservices depuis votre enregistrement d’intégration NetSuite, collez-le en entier dans le champ token, enregistrez et testez à nouveau. Rappel : les identifiants TBA ne peuvent pas servir avec cette connexion.
Le test échoue avec MISSING_SCOPE (403)
Le token a atteint NetSuite mais n’est pas autorisé à faire ce que fait le test : il lui manque la portée rest_webservices, ou le rôle derrière lui n’a pas le droit de lire les fiches clients — or la sonde du test lit des clients.
Demandez à votre administrateur NetSuite de vérifier la portée sur l’enregistrement d’intégration et le droit clients du rôle. Si la portée change, émettez un nouveau token, collez-le dans la connexion, enregistrez et testez à nouveau.
Le test échoue avec CONNECTION_FAILED
La sonde a atteint NetSuite mais a reçu une réponse autre que succès, 401 ou 403. Une cause fréquente est un account_id qui ne correspond pas au compte du token — l’adresse de la sonde est construite à partir de votre account_id, donc un seul caractère erroné l’envoie au mauvais endroit.
Recopiez account_id depuis NetSuite → Setup → Company → Company Information, caractère par caractère — suffixe _SB1 inclus s’il s’agit d’un compte bac à sable — et confirmez que le token a été émis pour ce même compte. Enregistrez et testez à nouveau.
Où saisir le Client ID et le Client Secret ?
Nulle part dans cette connexion — elle n’a pas de champ Client ID ni Client Secret. Elle prend le token d’accès OAuth2 fini lui-même : l’échange par client credentials ou code d’autorisation se fait du côté de l’enregistrement d’intégration NetSuite pour produire ce token, et vous collez le token obtenu dans le champ token ici.
C’est aussi pourquoi il n’y a pas de renouvellement de token ici : le token que vous collez est l’identifiant fini. S’il expire, refaites l’échange côté NetSuite avec le même Client ID et le même Client Secret, collez le nouveau token dans cette connexion et testez à nouveau.
Cette connexion peut-elle synchroniser les quantités de stock ?
Non. Cette connexion ne peut ni lire les quantités de stock depuis NetSuite ni pousser des quantités de stock vers NetSuite. Utilisez-la pour les commandes de vente, clients, factures et produits, et gardez les quantités de stock dans le système qui les gère aujourd’hui.
Les fiches produits, elles, circulent dans les deux sens : nom, SKU et autres champs produit se synchronisent avec NetSuite. Ce qui ne voyage jamais, c’est le chiffre de quantité : un produit synchronisé n’emporte pas son stock disponible.