Skip to main content

Überblick

Laravel Cashier (Stripe) ist das offizielle Paket zur Nutzung der Abrechnungsfunktionen von Stripe aus Laravel. Damit können Sie Abonnements anlegen, deren Status prüfen und kündigen, Einmalzahlungen abwickeln, Rechnungen herunterladen und Webhooks verarbeiten – alles über eine einheitliche API.

Installation und Konfiguration

Installieren Sie zunächst Cashier und legen Sie die erforderlichen Tabellen an.
Fügen Sie anschließend das Trait Billable zum Modell hinzu, das Zahlungen empfängt – üblicherweise App\Models\User.
Hinterlegen Sie die Stripe-Schlüssel in Ihrer .env.

Kundenverwaltung

Wenn möglicherweise noch kein Stripe-Kunde angelegt wurde, verwenden Sie createOrGetStripeCustomer().
Für eine explizite Erstellung nutzen Sie createAsStripeCustomer().

Abonnements

Neu anlegen

Ein Abonnement wird mit newSubscription() und create() gestartet. An $paymentMethodId übergeben Sie die Payment-Method-ID, die Sie etwa über Stripe.js ermittelt haben.
price_monthly dient nur als Beispiel. Bei der Umsetzung verwenden Sie die tatsächliche Price-ID aus Ihrem Stripe-Dashboard.

Status prüfen

Mit subscribed() prüfen Sie, ob ein gültiges Abonnement besteht.

Kündigen und fortsetzen

Einmalzahlung (Charge)

Mit charge() können Sie einen einmaligen Betrag abbuchen. Der Betrag wird in der kleinsten Währungseinheit angegeben (bei USD entspricht 100 zum Beispiel $1.00). Auch hier ist $paymentMethodId die in Stripe erzeugte Payment-Method-ID.
Schlägt die Abbuchung fehl, wirft charge() eine Ausnahme.

Payment Element

Mit dem Payment Element von Stripe können Sie mehrere Zahlungsarten wie Kreditkarte, Apple Pay, Google Pay oder iDEAL einheitlich verarbeiten.

Nutzung mit Abonnements

Erzeugen Sie ein Setup Intent und übergeben Sie es an die View.
In der Blade-View mounten Sie das Payment Element und übergeben das client_secret des Setup Intents.
An die von Stripe verwendete Redirect-URL wird der Parameter setup_intent angehängt. Damit ermitteln Sie die Payment-Method-ID und erstellen das Abonnement.

Nutzung für Einmalzahlungen

Bei Einmalzahlungen erzeugen Sie mit pay() ein Payment Intent. Das Modell Order benötigt die Spalten user_id, amount, status und stripe_payment_intent_id.
Mounten Sie das Payment Element und bestätigen Sie die Zahlung.
Nach dem Redirect suchen Sie die Bestellung anhand des Parameters payment_intent. Stellen Sie sicher, dass das Payment Intent zur authentifizierten Person gehört und den Status succeeded hat, bevor Sie die Bestellung finalisieren.

Rechnungen

Die Rechnungsliste erhalten Sie über invoices().
Für PDF-Downloads installieren Sie dompdf/dompdf und verwenden downloadInvoice(). In $invoiceId übergeben Sie die Rechnungs-ID aus invoices().

Webhooks einrichten

Cashier registriert automatisch eine Route für Stripe-Webhooks; standardmäßig wird /stripe/webhook verwendet. Tragen Sie diese URL im Stripe-Dashboard ein. Einen Webhook erstellen Sie mit cashier:webhook.
Nehmen Sie stripe/* von der CSRF-Prüfung aus.
Wenn Sie STRIPE_WEBHOOK_SECRET in der .env setzen, kann die Signaturprüfungs-Middleware von Cashier eingehende Webhook-Anfragen verifizieren.
Zuletzt geändert am 13. Juli 2026