Für Entwickler

Meridian API

Zehn Endpoints über HTTPS, mit Bearer-Token. Zahlungen und Auszahlungen lesen, Steuerzahlen für die Kanzlei ziehen, Nachweise pushen, Belege und DATEV-Pakete laden.

Bearer-TokenJSON über HTTPSDeutsche KalenderzeitKeine Rate-Limits im Alltag
Basis-URLhttps://usemeridian.de/api/v1

Authentifizierung

Erstelle einen Token im Portal unter Einstellungen, Bereich API-Tokens. Er wird genau einmal angezeigt, beginnt mit md_live_ und gehört zu deinem Konto, nicht zu einer einzelnen Firma. Schicke ihn als Bearer-Token im Authorization-Header.

Anfrage
Authorization: Bearer md_live_4f8a1c…

Behandle den Token wie ein Passwort: Er darf Steuerdaten lesen und Exporte ziehen. Ist einer abhandengekommen, lösch ihn im Portal, damit sind sofort alle Anfragen damit tot.

GET/api/v1/me

Token prüfen

Sagt dir, zu welchem Konto der Token gehört, ob das Abo läuft und wie viele Exporte in der Testphase noch offen sind. Ruf das einmal beim Start deiner Integration auf, dann scheitert sie laut statt später beim Export.

curl "https://usemeridian.de/api/v1/me" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "account": { "email": "[email protected]", "name": "Nordwind Digital" },
  "subscription": { "status": "active", "active": true, "trial_ends_at": null },
  "exports": { "used": 3, "remaining": null },
  "companies": 2
}
GET/api/v1/companies

Firmen auflisten

Deine verbundenen Firmen samt Zahlungsanzahl. Die id brauchst du für fast jeden anderen Endpoint.

curl "https://usemeridian.de/api/v1/companies" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "companies": [
    { "id": "b21b6f7bfa964c31", "name": "Nordwind Digital", "payments": 2219, "synced": true }
  ]
}
GET/api/v1/sync

Aktualität prüfen

Wie frisch die zwischengespeicherten Daten je Verbindung sind. Frag das in einem nächtlichen Job ab, bevor du exportierst: eine Firma, die noch importiert, liefert einen unvollständigen Zeitraum.

curl "https://usemeridian.de/api/v1/sync" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "ready": true,
  "companies": [
    {
      "id": "b21b6f7bfa964c31",
      "name": "Nordwind Digital",
      "ready": true,
      "connections": [
        {
          "provider": "mollie",
          "status": "ok",
          "backfill_done": true,
          "payments": 2219,
          "last_sync_at": "2026-07-25T02:14:09.000Z",
          "exports_ready": true,
          "last_error": null
        }
      ]
    }
  ]
}
GET/api/v1/payments

Zahlungen lesen

Jede zwischengespeicherte Zahlung. Beträge sind ganzzahlige Cent, damit unterwegs nichts an Fließkomma verloren geht, und booking_date ist der deutsche Kalendertag, unter dem die Zahlung gebucht wird.

Parameter
companyoptionalFirmen-ID. Ohne Angabe alle Firmen.
fromoptionalErster Tag, YYYY-MM-DD, deutsche Zeit.
tooptionalLetzter Tag, inklusive.
limitoptional1 bis 500, Standard 100.
failedoptionalfailed=1 nimmt fehlgeschlagene Zahlungen mit auf.
curl "https://usemeridian.de/api/v1/payments?company=b21b6f7bfa964c31&from=2026-06-01&to=2026-06-30" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "count": 1,
  "payments": [
    {
      "id": "tr_7UhSN1zuXS",
      "company_id": "b21b6f7bfa964c31",
      "company": "Nordwind Digital",
      "status": "paid",
      "amount_cents": 1229,
      "refunded_cents": 0,
      "net_cents": 1229,
      "currency": "EUR",
      "method": "creditcard",
      "customer": "M. Sørensen",
      "description": "Pro plan",
      "created_at": "2026-06-14T21:47:03+00:00",
      "booking_date": "2026-06-14"
    }
  ]
}
GET/api/v1/payouts

Auszahlungen lesen

Was Mollie tatsächlich auf dein Bankkonto überweist, plus die angekündigte nächste Auszahlung. Zusammen mit /payments kannst du damit eine Kontozeile gegen die dahinterliegenden Zahlungen abgleichen.

Parameter
fromoptionalErster Auszahlungstag, YYYY-MM-DD.
tooptionalLetzter Auszahlungstag, inklusive.
curl "https://usemeridian.de/api/v1/payouts" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "payouts": [
    {
      "id": "stl_jDk30akdN",
      "company_id": "b21b6f7bfa964c31",
      "company": "Nordwind Digital",
      "status": "paidout",
      "amount": 4182.55,
      "currency": "EUR",
      "reference": "1234567.2026.06",
      "settled_at": "2026-06-16T04:12:00+00:00",
      "settled_date": "2026-06-16"
    }
  ],
  "upcoming": [
    {
      "company_id": "b21b6f7bfa964c31",
      "company": "Nordwind Digital",
      "available": 812.4,
      "pending": 96.2,
      "currency": "EUR",
      "expected_at": "2026-07-28",
      "schedule": "täglich"
    }
  ]
}

Braucht ein Mollie-Token mit settlements.read und balances.read, sonst antwortet der Endpoint mit 409.

GET/api/v1/tax/summary

Steuer-Split für die Kanzlei

Genau die Zahlen, die für eine Umsatzsteuer-Voranmeldung gebraucht werden, ohne dass jemand ein ZIP herunterladen muss: brutto, netto und Steuer, aufgeteilt in Inland, OSS und Drittland, dazu Gebühren, Erstattungen und die Zahl der Zahlungen, die mangels Kartenland als Inland gebucht wurden.

Parameter
companyPflichtFirmen-ID.
fromPflichtErster Tag des Zeitraums, YYYY-MM-DD.
toPflichtLetzter Tag, inklusive.
curl "https://usemeridian.de/api/v1/tax/summary?company=b21b6f7bfa964c31&from=2026-06-01&to=2026-06-30" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "company_id": "b21b6f7bfa964c31",
  "period": { "from": "2026-06-01", "to": "2026-06-30", "timezone": "Europe/Berlin" },
  "bookings": 1495,
  "gross": 17209.67,
  "net": 15793.27,
  "vat": 1416.4,
  "fee": 627.62,
  "split": { "domestic": 1029.24, "oss": 6852.02, "non_eu": 9328.41 },
  "oss_by_country": [
    { "country": "FR", "rate": 0.2, "gross": 921.48, "vat": 153.58, "bookings": 74 }
  ],
  "refunds": { "count": 1, "gross": 9.99, "vat": 1.6 },
  "without_card_country": 3
}
GET/api/v1/tax/oss

OSS-Meldung je Quartal

Die OSS-Zahlen eines Quartals je Bestimmungsland, in der Form, die die Meldung verlangt. Quartale sind deutsche Kalenderquartale, denn das ist der Meldezeitraum.

Parameter
companyPflichtFirmen-ID.
yearPflichtVierstelliges Jahr, z. B. 2026.
quarterPflicht1 bis 4.
curl "https://usemeridian.de/api/v1/tax/oss?company=b21b6f7bfa964c31&year=2026&quarter=2" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "company_id": "b21b6f7bfa964c31",
  "period": { "year": 2026, "quarter": 2, "from": "2026-04-01", "to": "2026-06-30", "timezone": "Europe/Berlin" },
  "countries": [
    { "country": "FR", "rate": 0.2, "net": 767.9, "vat": 153.58, "gross": 921.48, "bookings": 74 },
    { "country": "PL", "rate": 0.23, "net": 702.93, "vat": 161.67, "gross": 864.6, "bookings": 61 }
  ],
  "totals": { "net": 1470.83, "vat": 315.25, "gross": 1786.08, "countries": 2 }
}
POST/api/v1/evidence

Kunden-IP als Nachweis

Übermittle pro Mollie-Zahlung die IP-Adresse deines Kunden aus deinem eigenen Checkout. Nach Art. 24b MwSt-DVO ist sie ein zusätzlicher Nachweis für den Leistungsort bei OSS-Umsätzen. Meridian druckt die IP als Ortsnachweis auf die jeweilige Rechnung und legt jedem DATEV-Paket eine Sammel-CSV bei.

Parameter
payment_idPflichtDie Mollie-Zahlungs-ID (tr_…) aus deinem Checkout.
customer_ipoptionalIPv4 oder IPv6 des Kunden zum Zahlungszeitpunkt.
countryoptionalISO-3166-alpha-2, falls du das Land selbst bestimmt hast.
metadataoptionalEigene Daten, maximal 4 KB, etwa Bestell-ID oder User-Agent.
curl -X POST "https://usemeridian.de/api/v1/evidence" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "payment_id": "tr_7UhSN1zuXS",
    "customer_ip": "203.0.113.54",
    "metadata": {
      "order": "R-2026-C7XN"
    }
  }'
Antwort
{ "ok": true, "stored": 1, "results": [ { "payment_id": "tr_7UhSN1zuXS", "ok": true } ] }

Schicke ein Array mit bis zu 100 Objekten für einen Batch; der Status ist dann 207, wenn einzelne Einträge scheitern. Ein erneuter Push für dieselbe payment_id überschreibt den Nachweis.

GET/api/v1/evidence

Nachweise lesen

Liest die gespeicherten Nachweise, wahlweise gefiltert auf eine einzelne Zahlung.

Parameter
payment_idoptionalAuf eine Zahlung einschränken.
curl "https://usemeridian.de/api/v1/evidence?payment_id=tr_7UhSN1zuXS" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
{
  "evidence": [
    {
      "payment_id": "tr_7UhSN1zuXS",
      "customer_ip": "203.0.113.54",
      "country": "DK",
      "metadata": { "order": "R-2026-C7XN" },
      "created_at": "2026-06-14T21:47:11.320Z"
    }
  ]
}
GET/api/v1/invoice

Rechnung als PDF

Die §14-Rechnung zu einer einzelnen Zahlung, identisch mit der Kopie im Monatspaket. Praktisch, um einer Bestellbestätigung den Beleg beizulegen, ohne das ganze ZIP zu ziehen.

Parameter
companyPflichtFirmen-ID.
paymentPflichtZahlungs-ID (tr_…).
# invoice.pdf
curl "https://usemeridian.de/api/v1/invoice?company=b21b6f7bfa964c31&payment=tr_7UhSN1zuXS" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
application/pdf — der Dateiname trägt die Rechnungsnummer, etwa ND-2026-7UHSN1ZUXS.pdf
GET/api/v1/export

DATEV-Paket laden

Das komplette Paket als ZIP: drei EXTF-Stapel, Rechnungs-PDFs mit GUID-Beleglink, document.xml und, falls vorhanden, deine IP-Nachweise. In der Testphase ist ein Export enthalten, danach unbegrenzt.

Parameter
companyPflichtFirmen-ID.
fromPflichtErster Tag des Zeitraums.
toPflichtLetzter Tag, inklusive.
belegeoptionalbelege=0 lässt die PDF-Belege weg, liefert nur die Stapel.
# DATEV_2026-06.zip
curl "https://usemeridian.de/api/v1/export?company=b21b6f7bfa964c31&from=2026-06-01&to=2026-06-30" \
  -H "Authorization: Bearer $MERIDIAN_TOKEN"
Antwort
application/zip — DATEV_2026-06.zip

Fehlercodes

401 invalid_tokenToken fehlt, ist ungültig oder wurde gelöscht.
402 subscription_inactiveAbo gekündigt oder Zahlung offen.
402 trial_limitDer inklusive Test-Export ist verbraucht.
404 not_foundDie Firma gehört nicht zu diesem Konto.
409 tax_not_readyFür diese Firma fehlen noch Steuereinstellungen.
409 settlements_unavailableDem Mollie-Token fehlen settlements.read und balances.read.
400 …Validierungsfehler, Details stehen im Feld error.
207 Multi-StatusBatch teilweise fehlgeschlagen, siehe results[].