Logo GH

API-Abrechnung und Reporting

1) Warum eigene Abrechnung für APIs

Transparente Monetarisierung: Kommunikation zwischen Nutzung → Umsatz.
Scalability und Control: Quoten, Overage, Credits, Preisbuch nach Plänen.
Finanzielle Genauigkeit: Steuern/Mehrwertsteuer, Mehrwährungen, Urkunden und Abschlussdokumente.
Kundenvertrauen: Detaillierte Usage-Reports, Webhooks, Self-Service-Portal.

2) Abrechnungsarchitektur (High Level)

Hersteller (API-Gateway, Dienste) → Usage Event Bus (Kafka/Queue) → Metering & Rating → Billing DB → Invoicing/Taxes → Payments (PSP) → Reporting DWH → Kundenportal/Webhooks.

Die Komponenten sind:
  • Metering - Sammlung und Normalisierung der Nutzung (Anfragen, Kredite, Volumen).
  • Bewertung (Rating) - Bewertung des Wertes der Veranstaltung nach Preis Buche/Plan.
  • Rechnungsstellung - Aggregation für den Zeitraum, pro Rate, Steuern, Rabatte, Kredite.
  • Zahlungen - Abschreibungen/Refands, Dating (Dunning).
  • Berichterstattung - MRR/ARPU/LTV, Kohortenkirche, Cost-to-Serve.
  • Audit - Idempotenz, unveränderliche Protokolle.

3) Entitäten und IDs

Account (tenant), Plan, Entitlements (Berechtigungen/Kontingente), Usage Event, Invoice, Credit Note, Tax Profile.
Wichtig: idempotency_key auf Usage/Invoice/Payment, Source (Gateway/Batch), Version des Ereignisschemas.

4) Verbrauchsereignis (Nutzung): Referenzschema

json
{
"event_id": "use_01HXYZ...",
"idempotency_key": "key_6a2f-2025-11-03T18:02:09Z",
"occurred_at": "2025-11-03T18:02:05Z",
"ingested_at": "2025-11-03T18:02:09Z",
"tenant_id": "t_123",
"api_key_id": "k_456",
"plan_id": "pro-2025",
"endpoint": "POST /v1/reports/run",
"unit": "credit",
"quantity": 5,
"region": "eu-west-1",
"metadata": { "request_id": "r_789", "ip": "203. 0. 113. 5" },
"signature": "hmac_sha256_base64(...)",
"schema_version": 2
}

Regeln: Ereignisse werden nur hinzugefügt; Bearbeitungen - durch Korrekturanpassungsereignisse mit Bezug auf 'event _ id'.

5) Speicher und Aggregationsschicht

5. 1 OLTP (Billing DB)

Таблицы: `tenants`, `plans`, `plan_prices`, `entitlements`, `usage_events`, `rated_lines`, `invoices`, `invoice_lines`, `tax_rates`, `credits`, `payments`, `refunds`, `disputes`.

5. 2 DWH (Analytik)

Факты: `f_usage`, `f_billing`, `f_payments`; Messgrößen:'d _ tenant','d _ plan','d _ endpoint','d _ region','d _ date'.

5. 3 Beispiel für die SQL-Aggregation usage → billed lines

sql
-- 1) Reduce usage per day by units create materialized view mv_daily_usage as select tenant_id, plan_id, endpoint, date_trunc ('day', occurred_at) d,
unit, sum(quantity) qty from usage_events where occurred_at >=:period_start and occurred_at <:period_end group by 1,2,3,4,5;

-- 2) Price book (tiered) applicable
select u. tenant_id, u. plan_id, u. d, u. unit, u. qty,
p. tier_from, p. tier_to, p. price_per_unit,
least(greatest(u. qty - p. tier_from + 1, 0), p. tier_to - p. tier_from + 1) as billable_units,
price_per_unit least(...) as amount from mv_daily_usage u join plan_prices p on p. plan_id = u. plan_id and p. unit = u. unit and u. qty >= p. tier_from;

6) Preisbuch und Bewertung (Bewertung)

Unterstützen Sie die Modelle: flat, tiered, volume, bundled credits, pay-as-you-go sowie overage.

Preisbuchenbeispiel (YAML):
yaml plan_id: pro-2025 currency: USD units:
request:
tiers:
- { from: 1, to: 250_000, price_per_1k: 2. 5 }
- { from: 250_001, to: 1_000_000, price_per_1k: 2. 0 }
credit:
flat: { price_per_unit: 0. 001} # 1 credit = $0. 001 overage:
policy: "postpaid"
rounding: "ceil_1k"
minimum_commit: 99 # basic subscription/month

7) Rechnungsstellung: Rechnungsstellung

Die Phasen sind:

1. Zeitraum-Cutoff (nach Konto-Locale).

2. Pro Rate bei Up/Down-Grade-Plan (nach Tagen).

3. Usage Rating + Invoice Lines Fixierung.

4. Steuern (VAT/GST) nach Kundenstandort und Leistungsort.

5. Gutschriften/Rabatte/Gutscheine.

6. Signieren und Veröffentlichen, Senden gegen Zahlung (PSP), Webhooks.

Rechnungszeile (Beispiel):
json
{
"line_id": "invln_01",
"type": "usage",
"description": "API requests (first 250k)",
"unit": "request",
"quantity": 250000,
"unit_price": 0. 0025,
"amount": 625. 00,
"currency": "USD",
"tax_rate": "VAT20",
"amount_tax": 125. 00
}

8) Steuern und Mehrwährungen

MwSt./MwSt./GST: Tax Profile (Land, gültige VAT-ID, B2B/B2C) aufbewahren.
Steuersatz nach Datum (Version), Reverse Charge für B2B in der EU.
FX-Conversion: Kurs zum Rechnungsdatum (ERU/Anbieter), Kursquelle speichern.
Dokumente: Rechnung, Gutschrift, Lastschrift - mit Nummern und Serien.

9) Zahlungen, Dating und Dispute

PSP (Stripe/Braintree/Adyen): Tokenisierte Zahlungen, Retrays bei Ausfall, Dunning (1-3-7 Tage).
Disputes/chargebacks: Statusfixierung, Verknüpfung mit Rechnung, Interaktionszeitlinie.
Refunds: partiell/vollständig, verknüpft mit 'payment _ id' und 'invoice _ id'.
Betrugssignale: Geo/ASN-Anomalien, Usage-Bursts, verschiedene Karten - Flaggen in der Abrechnung.

10) Kredite, Rabatte, SLA-Kredite

Promo-Credits (Wallet), Service-Credits für SLA-Verletzung (Autotransport in der Spur. Zeitraum).
Coupons: Fix/Prozentsatz, Mindestlaufzeit, Plan-/Endpoint-Limits.
Transparenz: Zeigen Sie im Portal den Saldo der Kredite und die Historie der Abschreibungen an.

11) Idempotenz und Anpassungen

Alle Schreibvorgänge über Idempotency-Key.
Anpassungen - nur durch Adjustments-Ereignisse (positiv/negativ), keine Bearbeitung des Originals.
Reconciliation: die tägliche Verifizierung usage ↔ rated_lines ↔ invoices ↔ PSP.

12) Sicherheit und Compliance

HMAC/JWT signiert Usage-Ereignisse vom Gateway.
mTLS für ingest, separate Schlüssel für das Medium (prod/stage).
PII-Minimierung (PAN/Mail nicht unnötig speichern), DSAR/Legal Hold.
Das Audit-Log ist für Finanztransaktionen unveränderlich (append-only).

13) Billing Portal API (OpenAPI Fragmente)

yaml paths:
/v1/billing/usage:
get:
summary: Usage breakdown parameters: [ {name: from, in: query}, {name: to, in: query}, {name: unit, in: query} ]
responses: {"200": {description: OK}}
/v1/billing/invoices:
get: { summary: List invoices }
/v1/billing/invoices/{id}:
get: { summary: Get invoice (PDF/JSON) }
/v1/billing/credits:
get: { summary: Credit wallet balance }
/v1/webhooks/billing:
post:
summary: Billing webhooks description: "invoice. created, invoice. finalized, payment. succeeded, credit. applied"

Überschriften in den Antworten der Haupt-API: „X-Quota-Remaining“, „X-RateLimit-Remaining“, „X-Usage-Period“.

14) Webhooks und Billing-Events

Veranstaltungen: 'invoice. created`, `invoice. finalized`, `payment. succeeded|failed`, `dunning. retry`, `credit. applied`, `dispute. opened|closed`.
Anforderungen: Signatur von Webhooks, Wiederholung mit Backoff, Deduplizierung durch 'delivery _ id'.

15) Geschäftsberichterstattung und Metriken

Finnish KPIs:
  • MRR/ARR (Segmentierung nach Plänen/Geo), ARPU, LTV/CAC, Churn (Logo/Revenue), Net Revenue Retention (NRR).
  • Usage → Revenue: Konversionskarten für Engpässe (wo sie auf Quoten ruhen).
  • Cost-to-Serve: Kosten der Infrastruktur/Anfrage → Marge nach Plänen.
Beispiele für Anfragen (DWH):
sql
-- MRR by invoice dates select date_trunc ('month', invoice_date) m, sum (recurring_amount) mrr from f_billing group by 1;

-- ARPU select m, sum(total_amount)/nullif(count(distinct tenant_id),0) arpu from f_billing_monthly group by 1;

-- Cohort by month of activation select cohort_month, month_since_start, sum (total_amount) revenue from f_billing_cohorts;

16) DevEx: Self-Service-Portal

Registrierung, Pläne, Schlüssel, Nutzungsgrafiken, Rechnungen (PDF/JSON), Webhooks.
Upgrade/Downgrade, Kontovorschau (pro-forma), Verwaltung der Zahlungsmethoden.
Meldungen: „Quote <10%“, „Overage included“, „invoice fakturiert/bezahlt“.

17) Prüfung und Umgebung

Sandbox-Abrechnung: fiktive PSPs, Teststeuersätze.
Vertragstests usage-events (Schema/Pflichtfelder).
Replay-Prod-Samples im Stag, Preisbuch-Regressionstests.
Backfill ist sicher: nur über Batch-Ingest mit Idempotenz.

18) FinOps und die Tarifökonomie

Lesen Sie die Marge für Endpoints/Pläne: Revenue − Cost-to-Serve.
Ordnen Sie „teure“ Transaktionen in Kredite ein und beschränken Sie sich auf Low-Tiers.
Überwachen Sie die Abfrage-Kosten in Observability und verknüpfen Sie sie mit der Abrechnung.

19) Start-Checkliste

  • Die Schemata 'usage _ event '/' adjustment '/' invoice _ line' sind fixiert und versioniert.
  • Preisbuch geprüft (flat/tiered/volume), prorate/overage korrekt.
  • Idempotenz von ingestion und Webhooks, audit-log append-only.
  • Steuern/MwSt./FX korrekt, Kundenprofile ausgefüllt.
  • Portal: Nutzung, Rechnungen, Kredite, Webhooks; PSP-Integration und Dunning.
  • DWH-Reporting (MRR/ARPU/LTV/Churn/NRR), Reconciliation täglich.
  • Die SLA-Kredit- und Disputationspolitik ist dokumentiert.

20) Häufige Fehler und Anti-Muster

Keine Idempotenz → doppelte Nutzung/doppelte Abschreibung.
Preis „pro Anfrage“ ohne Kredite für schwere Endpunkte → negative Marge.
Steuern „am Sitz des Unternehmens“, nicht des Kunden → Compliance-Fehler.
Rechnungen ohne Details → Streitigkeiten mit Kunden.
Keine reconciliation zwischen den usage↔PSP↔invoysy → Diskrepanzen in der Berichterstattung.

Summe

Starke Abrechnung für APIs ist eine ereignisgesteuerte Metering-Architektur, ein klares Preisbuch, strenge Idempotenz, korrekte Rechnungsstellung mit Steuern/FX und transparente Berichterstattung. Verknüpfen Sie die Verwendung mit dem Umsatz, geben Sie dem Kunden klare Details und automatisieren Sie den gesamten Weg - von der Veranstaltung über die Rechnung bis hin zum MRR-Dashboard. Dies wird vorhersehbare Einnahmen, weniger Streitigkeiten und eine überschaubare Produktökonomie ermöglichen.

Contact

Kontakt aufnehmen

Kontaktieren Sie uns bei Fragen oder Support.Wir helfen Ihnen jederzeit gerne!

Integration starten

Email ist erforderlich. Telegram oder WhatsApp – optional.

Ihr Name optional
Email optional
Betreff optional
Nachricht optional
Telegram optional
@
Wenn Sie Telegram angeben – antworten wir zusätzlich dort.
WhatsApp optional
Format: +Ländercode und Nummer (z. B. +49XXXXXXXXX).

Mit dem Klicken des Buttons stimmen Sie der Datenverarbeitung zu.