Aller au contenu

Se connecter à NetSuite

Importez des données financières et opérationnelles de NetSuite dans des tables PlaidCloud avec SuiteQL. Ce guide vous mène d’une intégration NetSuite vierge à une extraction planifiée et typée. Pour la référence champ par champ qui la sous-tend, consultez le Connecteur REST NetSuite.

Vous avez besoin, dans NetSuite, des éléments suivants :

  • OAuth 2.0 et REST Web Services activés (Setup > Company > Enable Features > SuiteCloud).
  • Une paire de clés RSA : le certificat public est téléversé dans NetSuite, la clé privée est conservée pour PlaidCloud.
  • Un ID de certificat (le kid du JWT, obtenu en téléversant le certificat public), un ID client (issu de l’enregistrement d’intégration) et votre ID de compte (production 1234567 ou bac à sable 1234567_SB1).
  • Un rôle disposant de REST Web Services, de Log in using OAuth 2.0 Access Tokens, de SuiteAnalytics Workbook (si vos requêtes touchent à l’analytique) et d’un accès en consultation aux enregistrements que vous lirez.

Les étapes complètes côté NetSuite (génération de la paire de clés, téléversement du certificat et création de l’intégration) figurent dans la section NetSuite-Side Setup de la référence. Réalisez-les d’abord ; ce guide suppose que vous avez les quatre valeurs en main.

  1. Ouvrez Tools > Connections et cliquez sur New Connection.

  2. Choisissez NetSuite dans le menu.

  3. Renseignez les champs :

    Champ Valeur
    Nom Un nom explicite, par exemple NetSuite Prod.
    ID client L’ID client de l’enregistrement d’intégration.
    ID du certificat L’ID du certificat (kid) issu du téléversement du certificat public.
    ID de compte NetSuite Votre ID de compte, par exemple 1234567 ou 1234567_SB1.
    Certificat privé NetSuite Le bloc PEM complet de la clé privée, collé sur plusieurs lignes.
  4. Cliquez sur Create.

Confirmez que les identifiants fonctionnent avant de construire quoi que ce soit dessus.

  1. Ajoutez une étape Requête REST à un workflow.

  2. Dans l’onglet Requête, définissez Connexion sur votre connexion NetSuite, Méthode sur POST et Point de terminaison sur /services/rest/query/v1/suiteql.

  3. Dans le Corps, placez une toute petite requête bornée :

    {"q": "SELECT id FROM account WHERE ROWNUM <= 1"}
  4. Cliquez sur Envoyer une requête de test.

Une fois le test de bon fonctionnement réussi, transformez l’étape en véritable extraction.

  1. Dans le Corps, écrivez votre requête SuiteQL avec un ORDER BY déterministe. Pour des points de départ à copier-coller (écritures de journal, balance générale, compte de résultat, bilan, créances ouvertes, commandes client, commandes d’achat, stocks), consultez Exemples de requêtes SuiteQL NetSuite.

    Financier : lignes de transaction du grand livre pour une période :

    {"q": "SELECT tl.transaction AS transaction_id, TO_CHAR(t.trandate, 'YYYY-MM-DD') AS tran_date, a.acctnumber AS account_number, tl.subsidiary AS subsidiary_id, tl.foreignamount AS amount FROM transactionline tl JOIN transaction t ON t.id = tl.transaction JOIN account a ON a.id = tl.expenseaccount WHERE t.trandate BETWEEN TO_DATE('2026-01-01','YYYY-MM-DD') AND TO_DATE('2026-01-31','YYYY-MM-DD') ORDER BY tl.transaction, tl.id"}

    Opérationnel : commandes client ouvertes par client :

    {"q": "SELECT so.tranid AS order_number, so.entity AS customer_id, TO_CHAR(so.trandate, 'YYYY-MM-DD') AS order_date, so.status AS order_status FROM transaction so WHERE so.type = 'SalesOrd' AND so.status = 'SalesOrd:B' ORDER BY so.id"}
  2. Laissez les contrôles Pagination et analyse ainsi que les en-têtes Prefer/Content-Type tels quels : la connexion NetSuite les injecte.

  3. Dans l’onglet Réponse, conservez la destination Table et définissez les colonnes avec de vrais types : Currency/Decimal pour les montants, Date/Datetime pour les dates, Boolean pour les indicateurs T/F. SuiteQL renvoie tout sous forme de chaînes ; les colonnes typées indiquent à PlaidCloud comment les convertir.

  1. Exécutez l’étape (consultez Exécuter une seule étape dans un workflow) et vérifiez la table cible : nombre de lignes, et que les colonnes de montants et de dates sont arrivées typées, et non en texte.

  2. Pour un flux continu, planifiez le workflow.

Symptôme Cause probable
Requête de test en erreur 400 avec un message de portée ou de rôle Il manque au rôle REST Web Services / la connexion OAuth 2.0 / SuiteAnalytics, ou le tableau de portées a été rejeté ; le détail affiché le nomme.
L’échange de jeton échoue Mauvaise forme de l’ID de compte (suffixe _SB1 manquant), mauvais ID de certificat (kid), ou clé privée qui ne correspond pas au certificat public téléversé.
Erreur de type ou de conversion à l’import (nomme la colonne et la valeur) Une colonne typée a reçu une valeur qu’elle ne peut pas analyser, le plus souvent une colonne Date/Datetime pour laquelle SuiteQL a renvoyé le format d’affichage du compte. Encadrez le champ avec TO_CHAR(col, 'YYYY-MM-DD') dans la requête, ou définissez le type de colonne sur Text.
Les totaux ne se réconcilient pas entre filiales amount est exprimé dans la devise propre à chaque transaction : utilisez les champs consolidés ou convertis.
Lignes dupliquées ou manquantes sur une grosse extraction Pas de ORDER BY déterministe sur une requête paginée par décalage.