AnmeldenRegistrieren

Die P2P Dash API

Deine P2P-Portfolio-Daten als JSON, für eine Tabelle, ein Skript oder dein eigenes Dashboard. Du legst in deinem Konto einen Token an, schickst ihn bei jeder Anfrage mit und bekommst genau die Zahlen zurück, die du auch in P2P Dash siehst.

Nur LesezugriffKostenlosErste Version

Deine erste Anfrage

Drei Schritte im Terminal unter macOS oder Linux. Wenn du lieber in Google Sheets anfängst, findest du weiter unten ein Beispiel dafür.

1

Token anlegen

Öffne in P2P Dash das Benutzermenü und dort „API-Tokens“. Gib dem Token einen Namen, setz „Deine Daten“ auf „Lesen“ und wähl aus, wann er abläuft. Wir zeigen den Token nur ein einziges Mal, also kopier ihn gleich.

2

Halt ihn aus deinem Code raus

Leg ihn in eine Umgebungsvariable, hier P2PDASH_TOKEN, und nicht in eine Datei, die du teilst. Wer den Token hat, kann deine Zahlen lesen.

3

Anfrage schicken

Jede Anfrage trägt den Token im Header Authorization. Die Antwort ist JSON, deine Daten stehen unter data.

Anfrage
export P2PDASH_TOKEN="p2pdash_..."

curl https://app.p2pdash.com/api/v1/account/summary \
  -H "Authorization: Bearer $P2PDASH_TOKEN"

Unter Windows in der PowerShell setzt du den Token mit $env:P2PDASH_TOKEN = "p2pdash_...", schreibst curl.exe statt curl, schreibst die Anfrage in eine Zeile und nimmst im Header $env:P2PDASH_TOKEN.

Antwort
{
  "data": {
    "platformCount": 4,
    "firstDate": "2021-03-02",
    "lastDate": "2026-11-09",
    "interest": 1781.4,
    "principalRepayment": 37443.05,
    "fee": 12.4,
    "tax": 0,
    "bonus": 85,
    "deposit": 12000,
    "withdrawal": 1500,
    "investment": 48210.33,
    "defaultLoss": 120.5,
    "internalTransfer": 0,
    "transactionCount": 14873,
    "totalBalance": 12233.5,
    "availableBalance": 1586.72,
    "investedBalance": 10646.78,
    "netDeposits": 10500,
    "netIncome": 1733.5
  }
}

Das sind Beispielzahlen. totalBalance ist, was dein Konto wert ist: Einzahlungen minus Auszahlungen plus alles, was du verdient hast, nach Gebühren, Steuern und Verlusten.

Beispiele

Vier Dinge, die du mit der API machen kannst. Kopier den Code, setz deinen Token ein und pass ihn von da aus an.

Dein Kontostand in Google Sheets

Öffne in deiner Tabelle Erweiterungen → Apps Script und füg diese Funktion ein. Unter Projekteinstellungen → Skripteigenschaften legst du P2PDASH_TOKEN mit deinem Token an. Dann schreibst du die Formel in eine Zelle. Jedes Feld der Zusammenfassung geht, zum Beispiel "netIncome".

Google Apps Script
function P2PDASH(field) {
  const token = PropertiesService.getScriptProperties()
    .getProperty("P2PDASH_TOKEN");
  const res = UrlFetchApp.fetch(
    "https://app.p2pdash.com/api/v1/account/summary",
    { headers: { Authorization: "Bearer " + token } },
  );
  return JSON.parse(res.getContentText()).data[field];
}
Ausgabe
=P2PDASH("totalBalance")   →  12233.5

Sheets merkt sich das Ergebnis und fragt erst wieder, wenn sich die Formel ändert. Zum Aktualisieren gibst du ein zweites Argument mit, etwa =P2PDASH("totalBalance", A1), und änderst A1. Jede Zelle ist eine Anfrage. Wer die Tabelle bearbeiten darf, kann in Apps Script auch den Token lesen, mach das also nicht in einer Tabelle, die andere bearbeiten können.

Zinsen pro Monat

Die Zeitreihe mit granularity=month liefert dir einen Punkt pro Monat mit Daten. Die Bibliothek installierst du einmal mit pip install requests.

Python
import os
import requests

res = requests.get(
    "https://app.p2pdash.com/api/v1/account/timeseries",
    params={"granularity": "month", "from": "2026-08-01", "to": "2026-10-31"},
    headers={"Authorization": f"Bearer {os.environ['P2PDASH_TOKEN']}"},
)
res.raise_for_status()

for point in res.json()["data"]:
    print(point["date"][:7], f"{point['interest']:.2f}")
Ausgabe
2026-08 94.80
2026-09 96.42
2026-10 98.15

XIRR pro Plattform

Speicher das als xirr.mjs und starte es mit node xirr.mjs (Node.js 18 oder neuer). Der XIRR kommt als Bruchzahl: 0.0984 heißt 9,84 % pro Jahr. Eine Plattform mit zu wenig Daten bekommt null.

JavaScript (Node.js)
const res = await fetch("https://app.p2pdash.com/api/v1/account/metrics", {
  headers: { Authorization: `Bearer ${process.env.P2PDASH_TOKEN}` },
});
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
const { data } = await res.json();

for (const p of data.xirr.platforms) {
  const xirr = p.allTimeXirr === null
    ? "-"
    : (p.allTimeXirr * 100).toFixed(2) + "%";
  console.log(p.name.padEnd(12), xirr);
}
Ausgabe
Platform A   9.84%
Platform B   10.37%
Platform C   11.20%
Platform D   -

Zahlen für die Steuererklärung

Zinsen und Boni pro Plattform für ein Jahr, mit jq gekürzt. Was davon als Einkommen zählt, hängt von den Regeln in deinem Land ab. Die API zeigt nur, was in P2P Dash steht.

curl + jq
curl -s "https://app.p2pdash.com/api/v1/account/tax?year=2025" \
  -H "Authorization: Bearer $P2PDASH_TOKEN" \
  | jq '.data[] | {name, interest: .years[0].interest, bonus: .years[0].bonus}'
Ausgabe
{
  "name": "Platform A",
  "interest": 412.37,
  "bonus": 25
}
{
  "name": "Platform B",
  "interest": 288.9,
  "bonus": 0
}

Was du abfragen kannst

Dein ganzes Konto, jedes Portfolio und jede Plattform beantworten dieselben fünf Fragen. Einmal verstanden, kannst du sie auf jeder Ebene stellen.

Die fünf Ansichten

Jede Ansicht gibt es dreimal. Für eine einzelne Plattform holst du dir zuerst ihre ID aus /api/v1/platforms und setzt sie dann statt {id} ein. Bei Portfolios geht es genauso.

summary

Summen über die ganze Zeit: Zinsen, Boni, Gebühren, Verluste, Einzahlungen, Auszahlungen und die Kontostände, die sich daraus ergeben.

Ganzes Konto
GET /api/v1/account/summary
Ein Portfolio
GET /api/v1/portfolios/{id}/summary
Eine Plattform
GET /api/v1/platforms/{id}/summary
timeseries

Dieselben Werte im Zeitverlauf, pro Tag, Monat oder Jahr, mit dem Kontostand am Ende jedes Zeitraums. Gut für Diagramme.

Ganzes Konto
GET /api/v1/account/timeseries
Ein Portfolio
GET /api/v1/portfolios/{id}/timeseries
Eine Plattform
GET /api/v1/platforms/{id}/timeseries
metrics

XIRR (gesamt und pro Jahr, mit und ohne Boni), Cash Drag, durchschnittlich investiertes Kapital und die Kapitalrückgewinnung, pro Plattform und insgesamt.

Ganzes Konto
GET /api/v1/account/metrics
Ein Portfolio
GET /api/v1/portfolios/{id}/metrics
Eine Plattform
GET /api/v1/platforms/{id}/metrics
income-projection

Was dein aktueller Kontostand pro Tag, Monat und Jahr bringen würde, wenn dein bisheriger XIRR ohne Boni so weiterläuft. Eine Hochrechnung, kein Versprechen.

Ganzes Konto
GET /api/v1/account/income-projection
Ein Portfolio
GET /api/v1/portfolios/{id}/income-projection
Eine Plattform
GET /api/v1/platforms/{id}/income-projection
tax

Zinsen, Boni, einbehaltene Steuern, Gebühren und Verluste pro Plattform und Kalenderjahr, das neueste Jahr zuerst.

Ganzes Konto
GET /api/v1/account/tax
Ein Portfolio
GET /api/v1/portfolios/{id}/tax
Eine Plattform
GET /api/v1/platforms/{id}/tax

Listen und Details

GET /api/v1/account
Welchen Token du gerade nutzt, seine Berechtigungen und wann er abläuft. Praktisch, um zu prüfen, ob ein Token noch funktioniert.
GET /api/v1/platforms
Alle deine Plattformen mit IDs, Portfolios und Summen. Hier fängst du an, um die IDs zu finden.
GET /api/v1/platforms/{id}
Eine Plattform, dasselbe Objekt wie in der Liste.
GET /api/v1/platforms/{id}/intent-history
Wann du deinen Plan für eine Plattform geändert hast (ausbauen, halten, aussteigen und so weiter).
GET /api/v1/portfolios
Alle deine Portfolios mit ihren Plattformen.
GET /api/v1/portfolios/{id}
Ein Portfolio.
GET /api/v1/platform-types
Fakten pro Plattformtyp: Land, Anlageklassen, Regulierung, Gründungsjahr. Für alle Nutzer gleich.

Query-Parameter

from, to
Nur für timeseries. Tage im Format YYYY-MM-DD, beide inklusive. Mit month oder year werden sie auf ganze Zeiträume erweitert. Die Kontostände zählen trotzdem ab deinem ersten Tag mit Daten, ein späteres from setzt sie also nicht zurück.
granularity
Nur für timeseries. day (Standard), month oder year. Das Datum eines Punkts ist der letzte Tag seines Zeitraums. Ein Tag oder Zeitraum ohne Daten hat gar keinen Punkt, rechne also nicht mit Nullen.
year
Nur für tax. Ein Kalenderjahr wie 2025. Plattformen ohne Daten in diesem Jahr fehlen in der Antwort.

Jedes Feld jeder Antwort steht im OpenAPI-Dokument. Tools wie Postman oder Swagger UI können es lesen, und Codegeneratoren bauen dir daraus einen Client.

OpenAPI-Dokument öffnen

Gut zu wissen

Die Regeln, die für jeden Endpoint gelten.

Nur Lesezugriff

Die API liest deine Daten und ändert nichts. Importe und Einstellungen laufen weiter über die App.

So aktuell wie dein letzter Import

P2P Dash holt nichts von den Plattformen ab. Die API liefert, was du importiert oder von Hand eingetragen hast, und lastDate sagt dir den letzten Tag mit Daten.

60 Anfragen, dann eine Minute Pause

Pro Token. Der Zähler beginnt erst wieder bei null, wenn der Token eine volle Minute lang keine Anfrage bekommen hat. Auch ein Skript, das alle paar Sekunden fragt, stößt also an die Grenze. Dann kommt ein 429, und Retry-After sagt dir, wie viele Sekunden du warten sollst. Erfolgreiche Antworten zeigen in X-RateLimit-Remaining, wie viele noch übrig sind.

Beträge in EUR

Geldflüsse wie deposit, withdrawal oder fee sind immer positiv, die Richtung steckt im Namen. Kontostände und netIncome können unter null fallen. XIRR und Cash Drag sind Bruchzahlen (0.075 ist 7,5 %), die Kapitalrückgewinnung läuft von 0 bis 100.

Datumsangaben in UTC

Tage als YYYY-MM-DD, Zeitpunkte als ISO 8601. Ein Tag ist der Tag aus dem Export, ohne dass Zeitzonen ihn verschieben.

Tokens

Bis zu 10 aktive Tokens pro Konto. Als Ablauf wählst du „30 Tage“, „90 Tage“, „1 Jahr“ oder „Nie“. Klickst du auf der Token-Seite auf „Widerrufen“, funktioniert der Token sofort nicht mehr.

Wenn etwas schiefgeht

Fehler kommen als JSON mit einem festen error.code. Prüf den Code, nicht die Meldung: Die Meldung kann sich ändern, die Codes bleiben.

StatusCode und Bedeutung
400invalid_request

Ein Parameter stimmt nicht. details nennt jedes betroffene Feld und was daran falsch ist.

401unauthorized

Der Token fehlt, ist vertippt, widerrufen oder abgelaufen.

403insufficient_scope

Der Token darf diesen Teil der API nicht lesen.

404not_found

Den Pfad gibt es nicht, oder die ID gehört zu keiner deiner Plattformen oder Portfolios.

429rate_limited

60 Anfragen ohne eine Minute Pause. Warte so viele Sekunden, wie Retry-After sagt.

500internal_error

Unser Fehler. Versuch es später noch mal, und wenn es dabei bleibt, schreib uns.

Es gibt noch zwei weitere 403-Codes, forbidden und plan_required. Mit einem normalen Konto begegnen sie dir nicht.

Beispiel: ein Datum, das es nicht gibt

Anfrage
curl "https://app.p2pdash.com/api/v1/account/timeseries?from=2025-02-30" \
  -H "Authorization: Bearer $P2PDASH_TOKEN"
Antwort
{
  "error": {
    "code": "invalid_request",
    "message": "Not a valid calendar date",
    "details": [
      {
        "field": "from",
        "message": "Not a valid calendar date"
      }
    ]
  }
}

Fragen zur API

Bevor du die erste Anfrage schickst.

Kostet die API etwas?

Nein. Wie die App ist sie im Moment für jedes Konto kostenlos.

Kann ich Transaktionen über die API importieren?

Noch nicht. Die API liest nur. Deine Exporte lädst du weiter in der App hoch.

Muss ich programmieren können?

Nicht viel. Das Google-Sheets-Beispiel ist Kopieren und Einfügen, und die curl-Anfrage läuft im Terminal unter macOS und Linux. Für alles darüber hinaus hilft ein bisschen Python oder JavaScript.

Was passiert, wenn jemand an meinen Token kommt?

Er kann deine Zahlen in P2P Dash lesen, aber nichts ändern, und deine E-Mail-Adresse oder dein Passwort sieht er nie. Widerruf den Token auf der Token-Seite, dann funktioniert er sofort nicht mehr.

Wird sich die API ändern?

Ja, das kann passieren. Das ist die erste Version, und Felder oder Endpoints können sich noch ohne neue Versionsnummer ändern. Wenn du etwas darauf baust, rechne damit, dass du ab und zu nachbessern musst.

Komme ich an die Daten anderer Nutzer?

Nein. Ein Token liest immer nur die Daten des Kontos, das ihn angelegt hat. Die einzige Ausnahme ist die Liste der Plattformtypen, und die enthält öffentliche Fakten über die Plattformen.

Leg deinen ersten Token an

Log dich ein, öffne „API-Tokens“ im Benutzermenü und schick deine erste Anfrage.

Zu den API-Tokens

Noch kein Konto? Registrier dich kostenlos und importier zuerst einen Export, sonst hat die API nichts zu zeigen.