NetSuite-Finanzdaten analysieren – von der Verbindung zur GuV
~45 Minuten · eine aktive NetSuite-Verbindung, ein geladenes Hauptbuch, eine monatliche GuV, eine Forderungsfälligkeitsliste und eine geplante Aktualisierung
Dies ist der Einstieg für Controller und FP&A-Analysten: Am Ende haben Sie Ihr Hauptbuch direkt aus NetSuite abgerufen, es in eine monatliche Gewinn- und Verlustrechnung verwandelt, die Sie wie einen Abschluss lesen können, eine Forderungsfälligkeitsliste (A/R-Aging) erstellt, beides auf einem Dashboard dargestellt und das Ganze so eingerichtet, dass es sich von selbst aktualisiert. Kein Tabellenexport, kein manuelles Neuerfassen – die Zahlen stammen aus NetSuite und bleiben aktuell.
Sie verbinden sich einmal, rufen die Daten einmal ab und erledigen dann den Teil, auf den es wirklich ankommt: rohe Hauptbuchzeilen in die Zusammenfassungen zu verwandeln, die ein Fachanwender am Montagmorgen liest.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Ein PlaidCloud-Workspace und ein Projekt, in dem Sie arbeiten (Testphase starten, falls Sie noch keinen haben).
- Eine funktionierende NetSuite-Verbindung. Folgen Sie zuerst der Anleitung Mit NetSuite verbinden – Sie benötigen OAuth 2.0 und aktivierte REST Web Services in NetSuite, die Client-ID der Integration, eine Zertifikats-ID, Ihre Konto-ID und den privaten Schlüssel als PEM. Stellen Sie sicher, dass Testanfrage senden erfolgreich ist, bevor Sie hier beginnen.
- Für die Aufbereitung der Daten ist kein SQL nötig – Sie verwenden dafür Standard-Transformationsschritte. Der einzige Abfragetext ist der Abruf aus NetSuite, und alle Abrufabfragen sind vorgegeben. Halten Sie NetSuite-SuiteQL-Abfragebeispiele in einem Tab geöffnet; dieses Tutorial bedient sich daraus.
Schritt 1: Workflow Erstellen
Abschnitt betitelt „Schritt 1: Workflow Erstellen“Der Workflow ist die Pipeline, die die Daten abruft und aufbereitet.
- Öffnen Sie Ihr Projekt und wechseln Sie zur Registerkarte Workflows.
- Klicken Sie auf Neuer Workflow, geben Sie ihm einen Namen wie
NetSuite Financialsund öffnen Sie ihn.
Schritt 2: Das Hauptbuch Abrufen
Abschnitt betitelt „Schritt 2: Das Hauptbuch Abrufen“Eine SuiteQL-Abfrage liefert Ihnen ein Jahr an Buchungsaktivität – jedes Konto, jeden Monat –, was ausreicht, um eine GuV und später weitere Abschlüsse zu erstellen.
-
Fügen Sie einen REST-Anfrage-Schritt hinzu. Legen Sie auf der Registerkarte Anfrage Verbindung auf Ihre NetSuite-Verbindung, Methode auf
POSTund Endpunkt auf/services/rest/query/v1/suiteqlfest. -
Tragen Sie im Body dieses SuiteQL ein, eingebettet als
{"q": "…"}:SELECTTO_CHAR(t.trandate, 'YYYY-MM') AS period,a.accttype AS account_type,a.acctnumber AS account_number,BUILTIN.DF(a.id) AS account_name,tal.amount AS amountFROM transactionaccountingline talJOIN transaction t ON t.id = tal.transactionJOIN account a ON a.id = tal.accountWHERE tal.posting = 'T'AND tal.accountingbook = 1AND t.trandate BETWEEN TO_DATE('2026-01-01', 'YYYY-MM-DD')AND TO_DATE('2026-12-31', 'YYYY-MM-DD')ORDER BY period, a.acctnumber -
Legen Sie auf der Registerkarte Antwort als Ziel Tabelle fest – nennen Sie sie
netsuite_gl– und stellen Sie die Spaltentypen ein:amount→ Währung, alles andere → Text. (SuiteQL liefert Zahlen und Datumswerte als Text; erst der Typ machtamountsummierbar.) -
Klicken Sie auf Testanfrage senden, um zu prüfen, ob sie funktioniert, und führen Sie dann den Schritt aus. Jetzt haben Sie eine Tabelle
netsuite_gl: eine Zeile pro Konto und Monat mit einem vorzeichenbehafteten Buchungsbetrag.
Schritt 3: Das Hauptbuch zur GuV Aufbereiten
Abschnitt betitelt „Schritt 3: Das Hauptbuch zur GuV Aufbereiten“Nun folgt die Analyse, erledigt mit einer einzigen Transformation per Mausklick – ohne SQL. Eine GuV ist nur das zusammengefasste Hauptbuch: Ertrags- und Aufwandskonten, zu wenigen Zeilen gruppiert, mit umgekehrtem Vorzeichen, damit Erlöse positiv erscheinen. Ein Table-Extract-Schritt erledigt all das auf seinen Registerkarten Tabellendatenauswahl und Datenfilter.
-
Fügen Sie einen Table Extract-Schritt hinzu. Legen Sie seine Quelle auf
netsuite_glund sein Ziel auf eine neue Tabellenetsuite_pnlfest. -
Behalten Sie auf der Registerkarte Datenfilter nur die Ertrags- und Aufwandskonten (lassen Sie Bilanzkonten weg): Fügen Sie einen Filter hinzu, bei dem
account_typeist eines vonIncome,OthIncome,COGS,Expense,OthExpense. -
Klicken Sie auf der Registerkarte Tabellendatenauswahl auf Zusammenfassen, um die Aggregation einzuschalten, und richten Sie dann drei Zielspalten ein:
period– direkt aus der Quelle zugeordnet. Zusammenfassen: Gruppieren nach.pnl_line– ein Ausdruck (siehe unten), der jeden Kontotyp in eine Berichtszeile übersetzt. Zusammenfassen: Gruppieren nach.amount– ein Ausdrucknetsuite_gl.amount * -1(die Vorzeichenumkehr). Zusammenfassen: Summe.
Doppelklicken Sie bei
pnl_lineauf die Zelle Ausdruck und geben Sie Folgendes ein (im Editor können Sie die Spalten und die Funktioncaseaus der Gruppe Bedingungen per Mausklick auswählen):case((netsuite_gl.account_type.in_(['Income', 'OthIncome']), '1 - Revenue'),(netsuite_gl.account_type == 'COGS', '2 - Cost of Goods Sold'),(netsuite_gl.account_type.in_(['Expense', 'OthExpense']), '3 - Operating Expenses'),) -
Führen Sie den Schritt aus.
Der Ausdruck amount * -1 ist der eine buchhalterische Kniff: Die Negierung des Soll-positiven Betrags macht Erlöse positiv und Kosten negativ, sodass die drei Zeilen eines Monats den Jahresüberschuss ergeben. Anschließend fasst Summe mit Gruppieren nach für period und pnl_line alle Konten zu diesen drei Zeilen pro Monat zusammen. Ausdrücke verwenden den Mausklick-Editor von PlaidCloud – siehe Erweiterte Data-Mapper-Nutzung und die Ausdrucksreferenz.
Schritt 4: Wie ein Finanzprofi Lesen
Abschnitt betitelt „Schritt 4: Wie ein Finanzprofi Lesen“Öffnen Sie die Tabelle netsuite_pnl. Für jeden Monat haben Sie drei Zahlen:
| period | pnl_line | amount |
|---|---|---|
| 2026-01 | 1 - Revenue | 486,200.00 |
| 2026-01 | 2 - Cost of Goods Sold | -190,540.00 |
| 2026-01 | 3 - Operating Expenses | -212,880.00 |
Direkt daraus ablesbar:
- Rohertrag = Erlöse + Herstellkosten (die Herstellkosten sind bereits negativ) →
486,200 − 190,540 = 295,660. - Jahresüberschuss = Summe der drei Zeilen →
82,780. - Rohertragsmarge in % = Rohertrag ÷ Erlöse → ca. 61 %.
Das Erste, was Sie tun sollten, ist der Abgleich: Führen Sie NetSuites eigene Erfolgsrechnung für denselben Monat aus und prüfen Sie, ob Erlöse und Jahresüberschuss übereinstimmen. Falls nicht, liegt es fast immer an einem Unterschied im Umfang – ein Filter nach Tochtergesellschaft oder Währung oder ein abweichender Bezug auf Buchungsperiode statt Belegdatum (siehe den Hinweis zu Perioden). Vertrauen Sie der Pipeline erst, wenn der Abgleich stimmt.
Schritt 5: Eine Forderungsfälligkeitsliste Erstellen
Abschnitt betitelt „Schritt 5: Eine Forderungsfälligkeitsliste Erstellen“Der zweite Erfolg am ersten Tag folgt demselben Muster aus Verbinden, Abrufen und Aufbereiten. Beginnen Sie mit dem Rezept für offene Forderungen und teilen Sie es dann danach in Klassen ein, wie überfällig jede Rechnung ist.
-
Fügen Sie einen weiteren REST-Anfrage-Schritt hinzu (dieselbe Verbindung,
POST, derselbe SuiteQL-Endpunkt) mit diesem Body:SELECTt.tranid AS invoice_number,BUILTIN.DF(t.entity) AS customer,TO_CHAR(t.trandate, 'YYYY-MM-DD') AS invoice_date,TO_CHAR(t.duedate, 'YYYY-MM-DD') AS due_date,t.foreigntotal AS invoice_total,t.foreignamountunpaid AS amount_unpaidFROM transaction tWHERE t.type = 'CustInvc'AND t.foreignamountunpaid <> 0ORDER BY t.tranidLaden Sie das Ergebnis als
netsuite_open_ar, mitinvoice_totalundamount_unpaid→ Währung,invoice_dateunddue_date→ Datum, dem Rest → Text. -
Fügen Sie einen Table Extract-Schritt hinzu, der
netsuite_open_arin eine neue Tabellenetsuite_ar_agingliest. Klicken Sie auf der Registerkarte Tabellendatenauswahl auf Zusammenfassen und richten Sie drei Zielspalten ein:aging_bucket– ein Ausdruck (siehe unten), der jede Rechnung danach benennt, wie überfällig sie ist. Zusammenfassen: Gruppieren nach.invoices– eine beliebige Spalte, z. B.invoice_number. Zusammenfassen: Anzahl.balance– ausamount_unpaidzugeordnet. Zusammenfassen: Summe.
Geben Sie für
aging_bucketdiesen Ausdruck ein – er misst die Tage über dem Fälligkeitsdatum (Datum minus Datum ergibt Tage) und benennt die Klasse:case(((func.today() - netsuite_open_ar.due_date) <= 0, '0 - Current'),((func.today() - netsuite_open_ar.due_date) <= 30, '1 - 1-30 days'),((func.today() - netsuite_open_ar.due_date) <= 60, '2 - 31-60 days'),((func.today() - netsuite_open_ar.due_date) <= 90, '3 - 61-90 days'),else_='4 - Over 90 days',) -
Führen Sie den Schritt aus.
netsuite_ar_agingzeigt Ihnen nun in fünf Zeilen, wie viel aktuell ist und wie viel 30/60/90+ Tage überfällig – die Mahnwesen-Sicht, die ein Unternehmen zuerst liest. (due_datemuss als Datum typisiert sein, damit die Datumssubtraktion funktioniert – das haben Sie oben auf der Registerkarte Antwort des REST-Anfrage-Schritts festgelegt.)
Schritt 6: Auf einem Dashboard Darstellen
Abschnitt betitelt „Schritt 6: Auf einem Dashboard Darstellen“Zahlen in einer Tabelle sind in Ordnung; ein Diagramm schicken Sie an den CFO. Veröffentlichen Sie netsuite_pnl und netsuite_ar_aging und folgen Sie dann Dashboard erstellen, um Folgendes hinzuzufügen:
- ein Balkendiagramm des Jahresüberschusses (oder der Erlöse) nach
periodund - ein Kreis- oder Balkendiagramm des Forderungssaldos
balancenachaging_bucket.
Damit haben Sie ein aktuelles NetSuite-Finanz-Dashboard – ohne Export, aktualisiert bei jeder Ausführung des Workflows.
Schritt 7: Die Aktualisierung Planen
Abschnitt betitelt „Schritt 7: Die Aktualisierung Planen“- Führen Sie den gesamten Workflow einmal von oben nach unten aus, um sicherzustellen, dass jeder Schritt grün ist.
- Planen Sie den Workflow – monatlich im Takt des Abschlusses oder nächtlich, wenn die Forderungsfälligkeitsliste jeden Morgen frisch sein soll.
Da jeder Abruf die gesamte Tabelle ersetzt, extrahiert jede Ausführung den Ausschnitt neu, den ihre WHERE-Klausel definiert – beschränken Sie diese auf das benötigte Fenster (das laufende Jahr, nur offene Rechnungen) statt auf die gesamte Historie.
Was Sie Erstellt Haben
Abschnitt betitelt „Was Sie Erstellt Haben“Ausgehend von einem leeren Workflow haben Sie das aktuelle NetSuite-Hauptbuch und die Forderungen abgerufen, mit zwei Standard-Transformationsschritten – ohne SQL – zu einer monatlichen GuV und einer Forderungsfälligkeitsliste aufbereitet, auf einem Dashboard dargestellt und zur Aktualisierung eingeplant – der zentrale Berichtskreislauf eines Finanzteams, jetzt automatisiert.
Wie es Weitergeht
Abschnitt betitelt „Wie es Weitergeht“- NetSuite-SuiteQL-Abfragebeispiele – Saldenliste, Bilanz, offene Kundenaufträge, Bestellungen und Bestände, die Sie demselben Workflow hinzufügen können.
- Table-Extract-Schritt und Erweiterte Data-Mapper-Nutzung – Gruppieren, Filtern und berechnete Spalten für tiefergehende Analysen.
- Eine Dimensionshierarchie entwerfen – fassen Sie Ihren Kontenplan zu Berichtsgruppen zusammen, die Sie selbst steuern.
- Dashboard erstellen – die vollständige Dashboard-Anleitung.