Zum Inhalt springen

Mit NetSuite verbinden

Rufen Sie mit SuiteQL Finanz- und Betriebsdaten aus NetSuite in PlaidCloud-Tabellen ab. Dieser Leitfaden führt Sie von einer leeren NetSuite-Integration zu einem geplanten, typisierten Abruf. Die feldweise Referenz dazu finden Sie im NetSuite-REST-Connector.

Sie benötigen in NetSuite:

  • Aktivierte OAuth 2.0 und REST Web Services (Setup > Company > Enable Features > SuiteCloud).
  • Ein RSA-Schlüsselpaar – das öffentliche Zertifikat wird in NetSuite hochgeladen, der private Schlüssel bleibt für PlaidCloud erhalten.
  • Eine Zertifikats-ID (die JWT-kid, aus dem Hochladen des öffentlichen Zertifikats), eine Client-ID (aus dem Integrationsdatensatz) und Ihre Konto-ID (Produktion 1234567 oder Sandbox 1234567_SB1).
  • Eine Rolle mit REST Web Services, Log in using OAuth 2.0 Access Tokens, SuiteAnalytics Workbook (wenn Ihre Abfragen Analytics berühren) und Leseberechtigung für die Datensätze, die Sie lesen.

Die vollständigen Schritte auf NetSuite-Seite – das Schlüsselpaar erzeugen, das Zertifikat hochladen und die Integration erstellen – finden Sie in der NetSuite-seitigen Einrichtung der Referenz. Führen Sie diese zuerst aus; dieser Leitfaden setzt voraus, dass Sie die vier Werte zur Hand haben.

  1. Öffnen Sie Tools > Connections und klicken Sie auf New Connection.

  2. Wählen Sie im Menü NetSuite.

  3. Füllen Sie die Felder aus:

    Feld Wert
    Name Ein sprechender Name, z. B. NetSuite Prod.
    Client-ID Die Client-ID aus dem Integrationsdatensatz.
    Zertifikats-ID Die Zertifikats-ID (kid) aus dem Hochladen des öffentlichen Zertifikats.
    NetSuite-Konto-ID Ihre Konto-ID, z. B. 1234567 oder 1234567_SB1.
    Privates NetSuite-Zertifikat Der vollständige PEM-Block des privaten Schlüssels, mehrzeilig eingefügt.
  4. Klicken Sie auf Create.

Bestätigen Sie, dass die Anmeldedaten funktionieren, bevor Sie etwas darauf aufbauen.

  1. Fügen Sie einem Workflow einen REST-Anfrage-Schritt hinzu.

  2. Setzen Sie auf der Registerkarte Anfrage Verbindung auf Ihre NetSuite-Verbindung, Methode auf POST und Endpunkt auf /services/rest/query/v1/suiteql.

  3. Geben Sie im Body eine winzige, begrenzte Abfrage an:

    {"q": "SELECT id FROM account WHERE ROWNUM <= 1"}
  4. Klicken Sie auf Testanfrage senden.

Wenn der Smoke-Test grün ist, machen Sie aus dem Schritt einen echten Abruf.

  1. Schreiben Sie im Body Ihre SuiteQL-Abfrage mit einem deterministischen ORDER BY. Ausgangspunkte zum Kopieren und Einfügen – Journalbuchungen, Saldenliste, GuV, Bilanz, offene Forderungen, Kundenaufträge, Bestellungen, Lagerbestand – finden Sie unter NetSuite-SuiteQL-Abfragebeispiele.

    Finanzen – Hauptbuch-Transaktionszeilen für eine Periode:

    {"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"}

    Betrieb – offene Kundenaufträge nach Kunde:

    {"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. Lassen Sie die Steuerelemente unter Paginierung und Analyse sowie die Header Prefer/Content-Type unverändert – die NetSuite-Verbindung fügt sie ein.

  3. Behalten Sie auf der Registerkarte Antwort das Ziel Tabelle bei und definieren Sie die Spalten mit echten Typen: Currency/Decimal für Beträge, Date/Datetime für Datumswerte, Boolean für T/F-Flags. SuiteQL liefert alles als Zeichenfolgen; die typisierten Spalten sagen PlaidCloud, wie sie umzuwandeln sind.

  1. Führen Sie den Schritt aus (siehe Einen einzelnen Schritt in einem Workflow ausführen) und prüfen Sie die Zieltabelle – Zeilenanzahl und ob Betrags- und Datumsspalten typisiert angekommen sind, nicht als Text.

  2. Für einen fortlaufenden Feed planen Sie den Workflow.

Symptom Wahrscheinliche Ursache
Testanfrage 400 mit einer Scope- oder Rollenmeldung Der Rolle fehlt REST Web Services / OAuth-2.0-Anmeldung / SuiteAnalytics, oder das Scope-Array wurde abgelehnt – die angezeigten Details nennen es.
Token-Austausch schlägt fehl Falsche Form der Konto-ID (fehlendes _SB1), falsche Zertifikats-ID (kid) oder ein privater Schlüssel, der nicht zum hochgeladenen öffentlichen Zertifikat passt.
Typ-/Konvertierungsfehler beim Import (nennt Spalte und Wert) Eine typisierte Spalte hat einen Wert erhalten, den sie nicht parsen kann – meist eine Spalte Date/Datetime, in der SuiteQL das Anzeigeformat des Kontos geliefert hat. Umschließen Sie das Feld in der Abfrage mit TO_CHAR(col, 'YYYY-MM-DD') oder setzen Sie den Spaltentyp auf Text.
Summen gehen über Tochtergesellschaften hinweg nicht auf amount steht in der eigenen Währung der jeweiligen Transaktion – verwenden Sie konsolidierte/umgerechnete Felder.
Doppelte oder fehlende Zeilen bei einem großen Abruf Kein deterministisches ORDER BY bei einer Abfrage mit Offset-Paging.